Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб. 1 Документ Microsoft Word.doc
Скачиваний:
37
Добавлен:
14.05.2015
Размер:
241.66 Кб
Скачать

Лабораторная работа № 1. Решение задач линейного программирования

Цель работы Получение навыка решения задач линейного программирования графическим, симплексным методом и средствами Excel.

Содержание

Задача линейного программирования заключается в изучении способов отыскания максимального или минимального значений линейной функции при наличии линейных ограничений. Целевой функцией называется функция, максимальное или минимальное значение которой находится. Совокупность значений переменных, при которых достигается максимальное или минимальное значения, называется оптимальным решением (оптимальным планом), всякая другая совокупность значений, удовлетворяющая ограничениям, называется допустимым решением (допустимым планом).

Геометрический метод решения задачи линейного программирования рассмотрим на примере.

Пример. Найти максимальное значение целевой функции L=2x1+2x2 при заданных ограничениях

Решение. Построим область решений системы ограничений, меняя знаки неравенств на знаки точных равенств:

l1: 3x1-2x2+6=0,

l2: 3x1+x2-3=0,

l3: x1-3=0.

х2

В

(l2)

А

D С

-2 0 1 3 х1

(l1) (l3)

Прямая l1 делит плоскость хОу на две полуплоскости, из которых нужно выбрать одну, удовлетворяющую первому неравенству в системе (3). Для этого возьмем т. О (0; 0) и подставим в неравенство. Если оно верно, то нужно заштриховать ту полуплоскость от прямой, в которой находится т. О (0; 0). Аналогично поступают с прямыми l2 и l3. Областью решений неравенств (3) является многоугольник АВСD. Для каждой точки плоскости функция L принимает фиксированное значение L=L1. Множество всех токах точек есть прямая L=c1x1+c2x2 (в нашем случае L=2x1+2x2), перпендикулярная вектору С (с1; с2) (С (2; 2)), выходящему из начала координат. Если эту прямую передвигать в положительном направлении вектора с, то целевая функция L будет возрастать, в противоположном случае будет убывать. Таким образом, в нашем случае, прямая при выходе из многоугольника АВСD решений пройдет через т. В (3; 7,5), а потому в т. В целевая функция принимает максимальное значение, т.е. Lmax=2ּ3+2ּ7,5=21. Аналогично определяется, что минимальное значение функция принимает в т. D (1; 0) и Lmin=2ּ1+2ּ0=2.

Алгоритм симплексного метода решения задачи линейного программирования состоит в следующем.

1. Общая задача линейного программирования сводится к канонической задаче (в ограничениях стоят знаки равенства) введением стольких вспомогательных переменных, сколько неравенств содержит система ограничений.

2. Функция цели выражается через базисные и вспомогательные переменные.

3. Составляется первая симплекс-таблица. В базис записываются переменные, относительно которых разрешена система ограничений (лучше всего за базисные принять вспомогательные переменные). В первой строке таблицы перечисляются все переменные, и отводится столбец для свободных членов. В последнюю строку таблицы записывают коэффициенты функции цели с противоположными знаками

4. Каждая симплекс-таблица дает решение задачи линейного программирования: свободные переменные равны нулю, базисные переменные равны соответственно свободным членам.

5. Критерием оптимальности является отсутствие отрицательных элементов в последней строке таблицы для решения задачи на максимум и положительных элементов на минимум.

6. Для улучшения решения необходимо от одной симплекс-таблица перейти к другой. Для этого в предыдущей таблице находят ключевой столбец, соответствующий наименьшему отрицательному элементу в последней строке таблицы в задаче на максимум и наибольший положительный коэффициент в задаче на минимум. Затем находят ключевую строку, соответствующую минимальному отношению свободных членов к соответствующим положительным элементам ключевого столбца. На пересечении ключевого столбца и ключевой строки находится ключевой элемент.

7. Заполнение следующей симплекс-таблицы начинаем с заполнения базиса: из базиса выводится переменная, соответствующая ключевой строке, и на ее место вводится переменная, соответствующая ключевому столбцу. Элементы бывшей ключевой строки получаются делением прежнего элемента на ключевой. Элементы бывшего ключевого столбца становятся нулями, кроме ключевого элемента, который равен единицы. Все остальные элементы вычисляются по правилу прямоугольника:

.

8. Преобразование симплекс-таблиц производят до тех пор, пока не получат оптимального плана.

Пример. Найти максимальное значение функции , если переменные удовлетворяют системе ограничений:

Решение. 1. Вводим новые переменные , с помощью которых неравенства системы преобразуем в уравнения:

У коэффициентов целевой функции меняем знак или записываем ее в виде . Заполняем первую симплексную таблицу, в нулевой строке записываем х1, х2 и (свободные коэффициенты). В нулевом столбце – х3, х4, х5 и F. Заполняем эту таблицу по полученной системе уравнений и преобразованной целевой функции.

5

3

15

-2

3

6

3

-1

3

-2

-3

0

Проверяем критерий оптимальности на нахождение максимального значения: в последней строке все коэффициенты должны быть положительными. Этот критерий не выполняется, переходим к составлению второй таблицы.

2. Находим разрешающий элемент первой таблицы следующим образом. Среди элементов последней строки выбираем наибольший по модулю отрицательный коэффициент (это -3) и второй столбец принимаем как разрешающий. Если же все коэффициенты столбца неположительные, то .

Для определения разрешающей строки свободные коэффициенты делим на соответствующие элементы разрешающего столбца и выбираем минимальное отношение, при этом отрицательные коэффициенты не берем. Имеем , вторая строка является разрешающей. Пересечение разрешающей строки и столбца дает разрешающий элемент – это 3.

3. Заполняем вторую симплексную таблицу. Переменные на пересечении которых получаем разрешающий элемент, меняем местами, т.е. и . Разрешающий элемент заменяем ему обратным, т.е. на . Элементы разрешающей строки и столбца (кроме разрешающего элемента) делим на разрешающий элемент. При этом у коэффициентов разрешающего столбца меняем знак.

Остальные элементы второй таблицы получаем по правилу прямоугольника из элементов первой таблицы. Для заполняемой клетки и клетки с разрешающим элементом составляем прямоугольник. Затем из элемента для заполняемой клетки вычитаем произведение элементов двух других вершин, деленное на разрешающий элемент. Покажем расчеты по этому правилу для заполнения первой строки второй таблицы:

.

Заполнение таблиц по таким правилам продолжаем до тех пор, пока не будет выполнен критерий. Имеем для нашей задачи еще две таблицы.

х1

х4

b

х3

х2

b

х3

7

-1

9

х1

х2

2

х2

х5

5

х5

2

F

-4

1

6

F

4. Результат выполнения этого алгоритма записывают следующим образом. В заключительной таблице элемент, стоящий на пересечении строки и столбца b, дает максимальное значение целевой функции. В нашем случае . Значения переменных по строкам равны свободным коэффициентам. Для нашей задачи имеем .

Существуют и другие способы составления и заполнения симплексных таблиц. Например, для этапа 1 в нулевой строке таблицы записывают все переменные и свободные коэффициенты. После нахождения разрешающего элемента по тем же правилам в следующей таблице заменяем переменную в нулевом столбце, а в строке нет. Все элементы разрешающей строки делим на разрешающий элемент, и записываем в новой таблице. Для остальных элементов разрешающего столбца записываем нули. Далее выполняем указанный алгоритм с учетом этих правил.

При решении задачи линейного программирования на минимум в последней строке выбирают наибольший положительный коэффициент, и выполняют указанный алгоритм до тех пор, пока в последней строке не будет положительных коэффициентов.

Решение задач линейного программирования средствами Excel выполняется следующим образом.

Для решения задач линейного программирования используется надстройка Поиск решения. Сначала необходимо убедиться, что эта надстройка присутствует на вкладке Данные в группе Анализ (для 2003 года смотреть Сервис). Если команда Поиск решения или группа Анализ отсутствует, необходимо загрузить эту надстройку.

Для этого щелкните Файл Microsoft Office (2010), далее щелкните кнопку Параметры Excel. В появившемся окне Параметры Excel выберите слева поле Надстройки. В правой части окна должно быть установлено значения поля Управление равным Надстройки Excel, нажмите кнопку «Перейти», которая находится рядом с этим полем. В окне Надстройки установите флажок рядом с пунктом Поиск решения и нажмите кнопку ОК. Далее можно работать с установленной надстройкой Поиск Решения.

До вызова Поиск Решения необходимо подготовить данные для решения задачи линейного программирования (из математической модели) на рабочем листе:

1) Определить ячейки, в которые будет помещен результат решения для этого, в первом строке вводим переменные и целевую функцию. Вторую строку не заполняем (изменяемые ячейки) в этих ячейках будет получен оптимальный результат. В следующую строку вести данные для целевой функции, а в следующие строки системы ограничений (коэффициенты при неизвестных). Правую часть ограничений (свободные коэффициенты) вводим, оставляя свободную ячейку после записи коэффициентов системы ограничений.

2) Ввести зависимость от изменяемых ячеек для целевой функции и зависимости от изменяемых ячеек для левых частей системы ограничений в оставленные свободные ячейки. Для введения формул зависимостей удобно пользоваться математической функцией СУММПРОИЗВ.

Далее необходимо воспользоваться надстройкой Поиск решения. На вкладке Данные в группе Анализ выберите команду Поиск решения. Появится диалоговое окно Поиск решения, которое необходимо заполнить следующим образом:

1) Указать ячейку, содержащую целевую функцию в поле «Оптимизировать целевую функцию» (эта ячейка должна содержать формулу для целевой функции). Выбираем вариант оптимизации значения целевой ячейки (максимизация, минимизация):

2) В поле «Изменяя ячейки переменных» вводим изменяемые ячейки. В следующем поле «В соответствии с ограничениями» вводим заданные ограничения с помощью кнопки «Добавить». В появившемся окне вводим ячейки, содержащие формулы системы ограничений, выбираем знак ограничения и значение ограничения (свободный коэффициент):

3) Ставим флажок в поле «Сделать переменные без ограничений неотрицательными». Выбрать метод решения «Поиск решения линейных задач симплекс-методом». После нажатия кнопки «Найти решение» запускается процесс решения задачи. В итоге появляется диалоговое окно «Результаты поиска решения» и исходная таблица с заполненными ячейками для значений переменных и оптимальным значением целевой функции.

Пример. Решить, используя надстройку «Поиск решения» Excel задачу линейного программирования: найти максимальное значение функции при ограничениях

,

;

,.

Решение. Для решения нашей задачи на рабочем листе Excel выполним указанный алгоритм. Вводим исходные данные в виде таблицы

A

B

C

D

1

x1

x2

F

2

3

1

1

4

3

1

3

5

1

3

3

Вводим зависимости для целевой функции и системы ограничений. Для этого в ячейку С2 вводим формулу =СУММПРОИЗВ(A2:B2;A3:B3). В ячейки С4 и С5 соответственно формулы: =СУММПРОИЗВ(A2:B2;A4:B4) и =СУММПРОИЗВ(A2:B2;A5:B5). В результате получаем таблицу.

A

B

C

D

1

x1

x2

F

2

0

3

1

1

4

3

1

0

3

5

1

3

0

3

Запускаем команду «Поиск решения» и заполняем появившееся окно Поиск решения следующим образом. В поле «Оптимизировать целевую функцию» вводим ячейку С2. Выбираем оптимизации значения целевой ячейки «Максимум».

В поле «Изменяя ячейки переменных» вводим изменяемые ячейки A2:B2. В поле «В соответствии с ограничениями» вводим заданные ограничения с помощью кнопки «Добавить». Ссылки на ячейку $C$4:$C$5 Ссылки на ограничения =$D$4:$D$5 между ними знак <= затем кнопку «ОК».

Ставим флажок в поле «Сделать переменные без ограничений неотрицательными». Выбрать метод решения «Поиск решения линейных задач симплекс-методом».

Нажатием кнопки «Найти решение» запускается процесс решения задачи. В итоге появляется диалоговое окно «Результаты поиска решения» и исходная таблица с заполненными ячейками для значений переменных и оптимальным значением целевой функции.

A

B

C

D

1

x1

x2

F

2

0,75

0,75

1,5

3

1

1

4

3

1

3

3

5

1

3

3

3

В диалоговом окне «Результаты поиска решения» сохраняем результат x1=0,75, x2=0,75 , F=1,5-равный максимальному значению целевой функции.