- •"Томский политехнический университет"
- •А.В. Маслов методы экономико-математического моделирования
- •Предисловие
- •Тема 1 Предмет экономико-математического моделирования
- •Моделирование как метод научного познания
- •Классификация экономико-математических моделей
- •Этапы экономико-математического моделирования
- •Взаимосвязи этапов
- •Моделирования
- •Тема 2 Системный подход к изучению экономических явлений Системный анализ как научная дисциплина
- •Вычислительная техника в системном анализе
- •Системный подход Основные определения: элементы, связи, система
- •Принципы системного подхода
- •Об использовании принципов системного подхода
- •Тема 3 Математические методы
- •И основные классы задач оптимизации
- •Общая постановка математической модели задач
- •Оптимизации
- •Тема 4 Линейное программирование
- •Пример решения станковой задачи
- •Симплекс-метод решения задач линейного программирования
- •Свойства опорных решений
- •Решение задач линейного программирования симплекс-методом
- •Конечность симплекс-метода
- •Метод искусственного базиса для отыскания начального опорного решения
- •Двойственность в линейном программировании
- •Виды математических моделей двойственных задач
- •Тема 5 Целочисленное программирование
- •Постановка задачи и метод решения
- •Метод Гомори
- •Составление дополнительного ограничения (сечения Гомори)
- •Тема 6 Транспортная задача
- •Построение первоначального опорного плана
- •Метод минимальной стоимости
- •Определение оптимального плана транспортных задач, имеющих некоторые усложнения в их постановке
- •Тема 7 Нелинейное программирование
- •Теорема Куна – Таккера
- •Список литературы
- •Оглавление
- •Часть I
Тема 5 Целочисленное программирование
Значительная часть экономических задач, в частности, в машиностроении, относящихся к задачам линейного программирования, требует целочисленного решения. К ним относятся задачи, у которых переменные величины означают количество единиц неделимой продукции, например, распределение производственных заданий между предприятиями, раскрой материалов, загрузка оборудования, распределение судов по линиям, самолётов по рейсам, а также задачи по производству неделимой продукции. Если единица составляет малую часть всего объёма производства, то оптимальное решение находят обычным симплексным методом, округляя его до целых единиц, исходя из смысла задачи. В противном случае округление может привести к решению, далёкому от оптимального целочисленного решения.
Постановка задачи и метод решения
Задача целочисленного программирования формулируется так же, как и задача линейного программирования, но включается дополнительное требование, состоящее в том, что значения переменных, составляющих оптимальное решение, должны быть целыми неотрицательными числами.
Найти минимальное значение линейной функции (5.1)
при ограничениях
, |
(5.2) |
|
(5.3) |
целое. |
(5.4) |
Предположим, что задача линейного программирования имеет многогранник решений, приведённый на рис. 5.1.
Если наложить требование целочисленности, то допустимое множество решений такой задачи представляет собой совокупность изолированных целочисленных точек и не является выпуклым. Если добавить новое ограничение, связывающее внешние целочисленные точки, а затем в качестве многогранника решений использовать всё выпуклое множество, ограниченное осями координат и новым контуром (рис. 5.1), то получим новую задачу линейного программирования со следующими свойствами:
Рис.5.1. Многогранник решений
1) новый многогранник решений содержит все целые точки, заключавшиеся в первоначальном многограннике решений; любая его угловая точка является целочисленной;
2) так как линейная функция достигает оптимума в угловой точке многогранника решений, то построением такого многогранника и обеспечивается целочисленность оптимального решения.
Это и есть графический способ решения задачи целочисленного программирования. Но ясно, что он пригоден для решения таких задач, где n-m=2, или, что более верно, где n – число неизвестных, m – число ограничений, r – ранг системы ограничений.
В общем же случае для определения оптимального плана задачи (5.1)-(5.4) требуются специальные методы. В настоящее время существует несколько таких методов, из которых наиболее известным является метод Гомори, в основе которого лежит описанный выше симплексный метод.
Метод Гомори
Процесс определения оптимального плана задачи целочисленного программирования методом Гомори включает следующие основные этапы:
1. Используя симплекс-метод, находят решение задачи (5.1)-(5.3) без учёта требования целочисленности переменных.
2. Составляют, если оптимальный план нецелочисленный, дополнительное ограничение для переменной которая в оптимальном плане задачи (5.1)-(5.3) имеет максимальное дробное значение (как это определяется, объясняется в примере). Как составлять ограничение, также об этом отдельно.
3. Используя симплекс-метод (чаще всего, двойственная его модификация, которая позволяет работать с отрицательными правыми частями уравнений), находят решение задачи, получающейся из задачи (5.1)-(5.3) в результате присоединения дополнительного ограничения.
4. В случае необходимости составляют ещё одно дополнительное ограничение и продолжают итерационный процесс до получения оптимального плана задачи (5.1)-(5.4) или установления её неразрешимости (последнее имеет место в случае, если для дробного всев этой строке окажутся целыми).
Недостатком метода Гомори является требование целочисленности для всех переменных: как основных, выражающих, предположим, единицы продукции, так и для дополнительных, выражающих величину неиспользованных ресурсов, которые могут быть и дробными. Этот недостаток обходится в модификации метода, рассмотренной И.Л. Акулич в книге "Математическое программирование в примерах и задачах".