Методы оптимизации
Конспект лекций
назад | содержание | вперед

Тема 6. Решение задач линейного программирования

6.1 Общая идея метода последовательного улучшения

Графический метод решения задачи линейного программирования  можно использовать лишь тогда, когда исходная задача содержит не более двух переменных или сводится к такой задаче.   Поскольку целевая функция всегда принимает оптимальное значение в одной из вершин ОДР, для нахождения оптимального решения достаточно вычислять ее значения только в вершинах этой области. Вершина, в которой вычисленное значение целевой функции будет максимальным (минимальным, если минимум) является решением задачи. Однако полный перебор вершин ОДР возможен лишь в том случае, когда размерность задачи очень мала. С ростом числа переменных (n) и ограничений (m) число вершин растет очень быстро и оценивается как число сочетаний  . Поэтому важно, чтобы переход от одной вершины к другой осуществлялся по определенному правилу, исключающему перебор всех вершин. Одно из таких правил состоит в следующем: при выборе новой вершины в качестве возможных кандидатов рассматриваются лишь такие соседние (лежащие на одном ребре) вершины ОДР, в которых значение целевой функции не хуже, чем полученное на предыдущем шаге. Такой направленный перебор позволяет резко сократить число вариантов.

Рисунок 6.1 – Графическая интерпретация идеи метода последовательного улучшения плана


Проиллюстрируем вышесказанное на следующем примере. Пусть ОДР задачи является шестиугольником (рис. 6.1) и найдена одна из его вершин Х0. Если использовать направленный перебор, то ясно, что из этой вершины следует перейти к соседней вершине Х1, так как в ней значение целевой функции больше: Z(X1) > Z(X0). Затем нужно перейти к вершине Х*, которая является точкой оптимума.

Впервые метод нахождения оптимального решения задачи линейного программирования, основанный на переходе от одной вершины к соседней вершине с большим или, по крайней мере, не меньшим значением целевой функции, изучался в 1939 г. Л.В. Канторовичем. Он был назван им методом последовательного улучшения плана. Затем Дж. Данциг в 1947 г. предложил процедуру его реализации, получившую название симплекс-метод. Этот метод оказался очень эффективным, и в настоящее время его различные модификации являются основным способом решения задач линейного программирования. Симплекс-метод позволяет решать задачи, содержащие тысячи ограничений и десятки тысяч переменных. Обычно оптимальное решение находится за число шагов, не превышающее 2m, где m — число общих ограничений задачи.

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



6.2 Решение задач линейного программирования в B Excel

Поиск решения - это надстройка EXCEL, которая позволяет решать оптимизационные задачи. Ecли в меню Сервис отсутствует команда Поиск решения, значит, необходимо загрузить эту над­стройку. Выберите команду СервисÞ Надстройки и активизируйте надстройку Поиск решения. Если же этой надстройки нет в диалоговом окне Надстройки, то вам необходимо обратиться к панели управления Windows, щелкнуть на пиктограмме Установка и удаление программ и с по­мощью программы установки Excel (или Office) установить надстройку Поиск решения.

 После выбора команд Сервис Þ Поиск решения появится диалоговое окно Поиск решения.

В диалоговом окне Поиск решения есть три основных параметра:

• Установить целевую ячейку

• Изменяя ячейки

• Ограничения

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

Второй важный параметр средства Поиск решения — это параметр Изменяя ячейки. Изменяемые ячей­ки — это те ячейки, значения в которых будут изменяться для того, чтобы оптимизировать результат в це­левой ячейке. Для поиска решения можно указать до 200 изменяемых ячеек. К изменяемым ячейкам предъявляется два основных требования. Они не должны содержать формул, и изменение их значений должно отражаться на изменении резуль­тата в целевой ячейке. Другими словами, целевая ячейка зависима от изменяемых ячеек.

Третий параметр, который нужно вводить, для Поиска решения – это ограничения.

        Для решения задачи необходимо:

1)  Указать адреса ячеек, в которые будет помещен результат решения (изменяемые ячейки).

2)  Ввести исходные данные.

3)  Ввести зависимость для целевой функции

4)  Ввести зависимости для ограничений.

Запустить Поиск решений.

5)  Назначение целевой функции (установить целевую ячейку).

6)  Ввод ограничений.

7)  Ввод параметров для решения ЗЛП.

 

Пример 6.1.

Намечается выпуск двух видов костюмов - мужских и женских. На женский костюм требуется 1 м шерсти, 2 м лавсана и 1 человеко-день трудозатрат. На мужской костюм - 3,5 м шерсти, 0,5 м лавсана и 1 человеко-день трудозатрат. Всего имеется 350 м шерсти, 240 м лавсана и 150 человеко-дней трудозатрат. Требуется определить,  сколько костюмов каждого вида необходимо сшить, чтобы обеспечить максимальную прибыль, если прибыль от реализации женского костюма составляет 10 денежных единиц, а от мужского - 20 денежных единиц. При этом следует иметь в виду, что необходимо сшить не менее 60 мужских костюмов.

Сформулируем экономико-математическую модель задачи.

Введем следующие обозначения: х1 - число женских костюмов;     x2 - число мужских костюмов. Прибыль от реализации женских костюмов составляет 10х1, а от реализации мужских 20х2, т.е. необходимо максимизировать целевую функцию

Z(x) = 10 х1 + 20 х2 -> max.

Ограничения задачи имеют вид:

      х+  х2 £ 150                 - ограничение по труду

2 х1 + 0.5 х2 £  240                - ограничение по лавсану

       х1 + 3.5 х2 £  350                - ограничение по шерсти

            х2 ³  60             - ограничение по костюмам

            х1 ³ 0

Решение.

1. Указать адреса ячеек, в которые будет помещен результат решения (изменяемые ячейки).

Обозначьте через Х1, Х2  количество костюмов каждого типа. В нашей задаче оптимальные значения вектора Х =(Х1, Х2) будут помещены в ячейках A2:B2,  оптимальное значение целевой функции в ячейке C3.

2. Ввести исходные данные. Введите исходные данные задачи, как показано на рис. 6.2.

Рисунок 6.2 Исходные данные

3. Ввести зависимость для целевой функции

Курсор в ячейку «С3».

•Курсор на кнопку «Мастер функций», расположенную на панели инструментов.

На экране появляется диалоговое окно «Мастер функций шаг 1 из 2»

• Курсор в окно «Категория» на категорию «Математические».

• Курсор в окно «Функции» на «СУММПРОИЗВ» (рис. 6.3).

Рисунок 6.3 Выбор функции «СУММПРОИЗВ»

На экране появляется диалоговое окно «СУММПРОИЗВ» (рис. 6.4)

Рисунок 6.4 – Диалоговое окно функции «СУММПРОИЗВ»

• В строку «Массив 1» ввести А2:В2  (Адреса ячеек во все диалоговые окна удобно вводить не с клавиатуры, а протаскивая мышь по ячейкам, чьи адреса следует ввести.)

• В строку «Массив 2» ввести А3:В3.

Массив 1 будет использоваться при вводе зависимостей для ограничений, поэтому на этот массив надо сделать абсолютную ссылку. На экране: в ячейку С3 введена функция (рис. 6.5).

Рисунок  6.5 – Вид данный с целевой функцией

4. Ввести зависимости для ограничений

• Курсор в ячейку «С3».

• На панели инструментов кнопка «Копировать в буфер».

• Курсор в ячейку «С4».

• На панели инструментов кнопка «Вставить из буфера».

• Курсор в ячейку «С5».

• На панели инструментов кнопка «Вставить из буфера».

• Курсор в ячейку «С6».

• На панели инструментов кнопка «Вставить из буфера».

• Курсор в ячейку «С7».

• На панели инструментов кнопка «Вставить из буфера».

Рисунок 6.6 – Вид данный с отображением левых частей ограничений

Примечание. Содержимое ячеек С4 – С7 необходимо проверить. Они обязательно должны содержать информацию, как это показано для примера на рис.  6.6  (в качестве примера представлено содержимое ячейки С5 рис. 6.7).

 

Рисунок  6.7 – Пример   содержимого ячейки С5, отвечающей за левую часть второго ограничения

В строке «Меню» указатель мышки на имя «Сервис». В развернутом меню команда «Поиск решения». Появляется диалоговое окно «Поиск решения» (рис. 6.8).

Рисунок  6.8 – Диалоговое окно надстройки «Поиск решения»

5. Назначить целевую функцию (установить целевую ячейку), указать адреса изменяемых ячеек

Курсор в строку «Установить целевую ячейку».

Введите адрес ячейки «$С$3».

Введите направление целевой функции в зависимости от условия вашей задачи: «Максимальному значению» («Минимальному значению»).

Курсор в строку «Изменяя ячейки».

Ввести адреса искомых переменных А$2:В$2. (рис. 6.9)

Рисунок 6.9 – Ввод адреса искомых переменных в надстройке «Поиск решения»

 

6. Ввести ограничения

Указатель мышки на кнопку «Добавить. Появляется диалоговое окно «Добавление ограничения»

В строке «Ссылка на ячейку» введите адрес $С$4.

Ввести знак ограничения ≤.

В строке «Ограничение» введите адрес $D$4 (рис. 6.10).

 

Рисунок  6.10 – Ввод адреса правых частей ограничений в надстройке «Поиск решения»

 

Указатель мышки на кнопку «Добавить». На экране вновь диалоговое окно «Добавление ограничения».

Введите остальные ограничения задачи, по выше описанному алгоритму

После введения последнего ограничения кнопка «ОК».

На экране появится диалоговое окно «Поиск решения» с введенными условиями (рис.  6.11).

Рисунок 6.11 – Полностью веденные условия задачи в  надстройке «Поиск решения»

7. Ввести параметры для решения ЗЛП

В диалоговом окне указатель мышки на кнопку «Параметры». На экране появляется диалоговое окно «Параметры поиска решения» (рис. 6.12).

Рисунок 6.12 – Диалоговое окно «Параметры поиска решения»

Установите флажки в окнах «Линейная модель» (это обеспечит применение симплекс - метода) и «Неотрицательные значения».

Указатель мышки на кнопку «ОК». На экране диалоговое окно «Поиск решения».

Указатель мышки на кнопку «Выполнить».

Через непродолжительное время появится диалоговое окно «Результаты поиска решения» и исходная таблица с заполненными ячейками А3:В3 для значений Хi и ячейка С3 с максимальным значением целевой функции (рис. 6.13).

Рисунок  6.13 – Диалоговое окно «Результаты поиска решения»

Если указать тип отчета «Устойчивость»,  то можно получить дополнительную информацию об оптимальном решении (Рис. 6.14).

Рисунок  6.14 – Результаты отчета  «Устойчивость» надстройки «Поиск решения»

 

В результате решения задачи получили ответ:

Х1 = 70              -   необходимо сшить женских костюмов,

Х2 = 80              -   необходимо сшить мужских костюмов,

F(x) = 2300        что бы получить максимальную прибыль.





наверх


назад | содержание | вперед