Постановка задачи целочисленного программирования
Глава 8
МОДЕЛИ ЦЕЛОЧИСЛЕННОГО ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Постановка задачи целочисленного программирования
По смыслу значительной части экономических задач, относящихся к задачам линейного программирования, компоненты решения должны выражаться в целых числах, т.е. быть целочисленными. К ним относятся, например, задачи, в которых переменные означают количество единиц неделимой продукции, число станков при загрузке оборудования, число судов при распределениях по линиям, число турбин в энергосистеме, число вычислительных машин в управляющем комплексе и многие другие.
Задача линейного целочисленного программирования формулируется следующим образом: найти такое решение (план) X = = (х1, х2,..., хп), при котором линейная функция
(8.1)
принимает максимальное или минимальное значение при ограничениях
(8.2)
(8.3)
xj — целые числа.
(8.4)
Следует отметить, что классическая транспортная задача и некоторые другие задачи транспортного типа "автоматически" обеспечивают решение задачи в целых числах (если, конечно, целочисленны параметры условий). Однако в общем случае условие целочисленности (8.4), добавляемое к обычным задачам линейного программирования, существенно усложняет ее решение.
Для решения задач линейного целочисленного программирования используется ряд методов. Самый простой из них — обычный метод линейного программирования. В случае если компоненты оптимального решения оказываются нецелочисленными, их округляют до ближайших целых чисел. Этот метод применяют тогда, когда отдельная единица совокупности составляет малую часть объема всей совокупности. В противном случае округление может привести к далекому от оптимального целочисленному решению, поэтому используют специально разработанные методы.
Методы целочисленной оптимизации можно разделить на три основные группы: а) методы отсечения; б) комбинаторные методы; в) приближенные методы. Остановимся подробнее на методах отсечения.
8.2. Методы отсечения. Метод Гомори
Сущность методов отсечения состоит в том, что сначала задача решается без условия целочисленности. Если полученный план целочисленный, задача решена. В противном случае к ограничениям задачи добавляется новое ограничение, обладающее следующими свойствами:
• оно должно быть линейным;
• должно отсекать найденный оптимальный нецелочислен-ный план;
• не должно отсекать ни одного целочисленного плана.
Дополнительное ограничение, обладающее указанными свой
ствами, называется правильным отсечением.
Далее задача решается с учетом нового ограничения. После этого в случае необходимости добавляется еще одно ограничение и т. д.
Рис. 8.1 |
Геометрически добавление каждого линейного ограничения отвечает проведению прямой (гиперплоскости), которая отсекает от многоугольника (многогранника) решений некоторую его часть вместе с оптимальной точкой с нецелыми координатами, но не затрагивает ни одной из целых точек этого многогранника. В результате новый многогранник решений содержит все целые точки, заключавшиеся в первоначальном многограннике решений и соответственно полу-
ченное при этом многограннике оптимальное решение будет целочисленным (рис. 8.1).
Один из алгоритмов решения задачи линейного целочисленного программирования (8.1)-(8.4), предложенный Гомори, основан на симплексном методе и использует достаточно простой способ построения правильного отсечения.
Пусть задача линейного программирования (8.1)—(8.3) имеет конечный оптимум и на последнем шаге ее решения симплексным методом получены следующие уравнения, выражающие основные переменные х1, х2, ..., хj, ..., хт через неосновные переменные хт+1 ,хт+2, ..., *ю+/, —> хп оптимального решения
(S.5)
так, что оптимальным решением задачи (8.1)—(8.3) является X ='(PbP2»••■»P/t -эР/яАО,...,0), в котором, например (J, —
нецелая компонента. В этом случае можно доказать, что неравенство1
(8.6)
сформированное по /-му уравнению системы (8.5), обладает всеми свойствами правильного отсечения.
Для решения задачи целочисленного линейного программирования (8.1)—(8.4) методом Гомори используется следующий алгоритм:
1. Симплексным методом решить задачу (8.1)—(8.3) без учета условия целочисленности. Если все компоненты оптимального плана целые, то он является оптимальным и для задачи целочисленного программирования (8.1)-(8.4). Если первая задача (8.1)— (8.3) неразрешима (т.е. не имеет конечного оптимума или условия ее противоречивы), то и вторая задача (8Л)—(8.4) также неразрешима.
2. Если среди компонент оптимального решения есть нецелые, то выбрать компоненту с наибольшей целой частью и по соответствующему уравнению системы (8.5) сформировать правильное отсечение (8.6).
3. Неравенство (8.6) введением дополнительной неотрицательной целочисленной переменной преобразовать в равносильное уравнение
(8.7)
и включить его в систему ограничений (8.2).
4. Полученную расширенную задачу решить симплексным методом. Если найденный оптимальный план будет целочисленным,
1 В неравенстве (8.6) присутствует символ { }, означающий дробную часть числа. Целой частью числа а называется наибольшее целое число [а]% не превосходящее а, а дробной частью числа — число {а}, равное разности между этим числом и его целой частью, т.е. {а} = а - [а]. Например, для а = 2— [а] = 2, [а] = 2-- 2 = -; для а = -2— [а] = ~3
1 2
(обратите внимание, именно -3, а не -2) и {#} = -2 — - (-3) = —.
то задача целочисленного программирования (8.1)—-(8.4) решена. В противном случае вернуться к п. 2 алгоритма. Если задача разрешима в целых числах, то после конечного
Если в процессе решения появится уравнение (выражающее^ основную переменную через неосновные) с нецелым свободным членом и целыми остальными коэффициентами, то соответствующее уравнение не имеет решения в целых числах. В этом случае и данная задача не имеет целочисленного оптимального решения.
* 8.1. Для приобретения оборудования по сортировке зерна фермер выделяет 34 ден. ед. Оборудование должно быть размещено на площади, не превышающей 60 кв. м. Фермер может заказать оборудование двух видов: менее мощные машины типа А стоимостью 3 ден. ед., требующие производственную площадь 3 кв. м (с учетом проходов) и обеспечивающие производительность за смену 2 т зерна, и более мощные машины типа В стоимостью 4 ден. ед., занимающие площадь 5 кв. м и обеспечивающие производительность за смену 3 т сортового зерна.
Требуется составить оптимальный план приобретения оборудования, обеспечивающий максимальную общую производительность при условии, что фермер может приобрести не более 8 машин типа В.
Решение. Обозначим через х\9 х2 количество машин соответственно типа А к В, через Z — общую производительность. Тогда математическая модель задачи примет вид:
Z = 2х{ + Зх2 -» max (8. Г)
при ограничениях:
(8.2')
х{ > 0, х2 £ 0 , (8.3')
х\, х2— целые числа. (8.4')
Приведем задачу к каноническому виду, введя дополнительные неотрицательные переменные *з, х4, х5- Получим систему ограничений:
(8.5')
Решаем задачу симплексным методом. Для наглядности решение иллюстрируем графически (рис. 8.2).
На рис. 8.2 OKLM — область допустимых решений задачи (8.Г)- (8.3'), ограниченная прямыми (1), (2), (3) и осями координат; £(2/3; 8) — точка оптимального, но нецелочисленного решения задачи (8.Г) - (8.3'); (4) — прямая, отсекающая это нецелочисленное решение; OKNM — область допустимых решений расширенной задачи (8.1') - (8.3'), (8.6'); М2; 7) — точка оптимального целочисленного решения.
I шаг.Основные переменные хз, х*, х$; неосновные переменные Xi, Х2. |
Первое базисное решение Х\ = (0; 0; 60; 34; 8) — допустимое. Соответствующее значение линейной функции Z\ = 0.
Переводим в основные переменные переменную х2, которая входит в выражение линейной функции с наибольшим положительным коэффициентом. Находим максимально возможное значение переменной х2, которое "позволяет" принять система ограничений, из условия минимума соответствующих отношений:
т.е. разрешающим (выделенным) является третье уравнение. При х2 - 8 в этом уравнении х$ = 0, и в неосновные переходит переменная Хз-
II шаг.Основные переменные х2, хз, х^; неосновные переменные Xi? X5.
Х2 = (0; 8; 20; 2; 0); Z2 = 24. Переводим в основные пвремен-
. Г 20 2] 2
ную хь Х| = min^oo;—;-4 = — а в неосновные Х4-
III шаг.Основные переменные хь х2, х3; неосновные переменные Х4, Х5.
После преобразований получим:
Базисное решение Х$ оптимально для задачи (8.Г) - (8.3Г) (%тах = Z3 = 25 — ), так как в выражении линейной функции отсутствуют неосновные переменные с положительными коэффициентами.
Однако решение Х^ не удовлетворяет условию целочисленно-сти (8.4')- По первому уравнению с переменной х\, получившей нецелочисленное значение в оптимальном решении (2/3), составляем дополнительное ограничение (8.6):
Обращаем внимание на то, что согласно (8.5) и (8.6) берем дробную часть свободного члена с тем же знаком, который он имеет в уравнении, а дробные части коэффициентов при неосновных переменных х^ и х$ — с противоположными знаками.
, то последнее неравенство запишем в виде |
Так как дробные части
(8.6')
Введя дополнительную целочисленную переменную х6 > О, получим равносильное неравенству (8.6') уравнение
(8.7')
Уравнение (8.7') необходимо включить в систему ограничений (8.5') исходной канонической задачи, после чего повторить процесс решения задачи симплексным методом применительно к расширенной задаче. При этом для сокращения числа шагов (итераций) рекомендуется вводить дополнительное уравнение (8.7') в систему, полученную на последнем шаге решения задачи (без условия целочисленности).
IV шаг.Основные переменные xh x2, х3, х^; неосновные переменные Х\, *2-
2 2
Базисное решение Х4 = (-; 8; 18; 0; 0; --) — недопустимое. (Заметим, что после включения в систему ограничений дополнительного уравнения, соответствующего правильному отсечению, всегда будет получаться недопустимое базисное решение):
Для получения допустимого базисного решения необходимо перевести в основные переменную, входящую с положительным коэффициентом в уравнение, в котором свободный член отрицательный, т.е. хх или х$ (на1 этом этапе линейную функцию не рассматриваем). Переводим в основные, например, переменную Х5.1
V шаг.Основные переменные х\, *2> хз> х5\ неосновные переменные Хи Х2-
1 Можно убедиться, что при этом решение задачи короче.
6 Исследование операций в экономике
Получим после преобразований: |
Так как в выражении линейной функции нет основных переменных с положительными коэффициентами, то Х$ — оптимальное решение.
Итак, Z^ax = 25 при оптимальном целочисленном решении X* = Xs =(2; 7; 19; 0; 1; 0), т.е. максимальную производительность 25 т сортового зерна за смену можно получить приобретением 2 машин типа А и 7 машин типа В\ при этом незанятая площадь помещения составит 19 кв. м, остатки денежных средств из выделенных равны 0, в резерве для покупки — 1 машина типа В (шестая компонента содержательного смысла не имеет).
Замечание. Для геометрической интерпретации на плоскости Ох\Х2 (см. рис.8.2) отсечения (8.6') необходимо входящие в него переменные х± и х5 выразить через переменные х\ и х2. Получим (см. 2-е и 3-е уравнения системы ограничений (8.5')):
2 1 2
— - -(34 - Зх{ - 4х2) - — (8 - х2) ^ 0 или х, + 2х2 < 16.
(см. отсечение прямой (4) на рис 8.2).►
8.2. Имеется достаточно большое количество бревен длиной 3 м. Бревна следует распилить на заготовки двух видов: длиной 1,2 м и длиной 0,9 м, причем заготовок каждого вида должно быть получено не менее 50 шт. и 81 шт. соответственно. Каждое бревно можно распилить на указанные заготовки несколькими способами: 1) на 2 заготовки по 1,2 м; 2) на 1 заготовку по 1,2 м и 2 заготовки по 0,9 м; 3) на 3 заготовки по 0,9 м. Найти число бревен,
распиливаемых каждым способом, с тем чтобы заготовок любого вида было получено из наименьшего числа бревен.
Решение. Обозначим через х\, Х2, х$ число бревен, распиливаемых соответственно 1^2-и 3-м способами. Из них можно получить 2х[ + Х2 заготовок по 1,2 м и 2х\ + 3x2 заготовок по 0,9 м. Общее количество бревен обозначим Z Тогда математическая модель задачи примет вид:
Z = х{ + х2 + х3 -> min (8.1")
при ограничениях
(8,2")
xj>0, у- 1,2,3, (8.3")
xj — целые числа. (8.4")
Введя дополнительные переменные х4 > 0, х5 > 0, приведем систему неравенств к равносильной системе уравнений
(8.5")
Решая полученную каноническую задачу (без условия цело-численности) симплексным методом, на последнем, III шаге, решения найдем следующие выражения основных переменных и линейной функции через неосновные переменные (рекомендуем студентам получить их самостоятельно).
III шаг.Основные переменные х\9 х^, неосновные переменные Л/j, Xj, Хс.
те- ^mm-45 — при оптимальном решении Хъ = (4-~; 40~;
0; 0; 0).
Получили, что две компоненты оптимального решения
х, = 4-j и х2 = 40— не удовлетворяют условию целочисленно-
сти (8.4"), причем большую целую часть имеет компонента х^. В соответствии с п.2 алгоритма решения задачи целочисленного программирования (см. с. 156) по второму уравнению, содержащему эту переменную *2, составляем дополнительное ограничение (8.6):
Найдем дробные части |
и запишем последнее неравенство в
виде
(8.6")
Введя дополнительную переменную х6 £ 0, получим равносильное неравенству (8.6") уравнение
(8.7")
Выразим из (8.7") дополнительную переменную д% и полученное уравнение введем в систему ограничений, которую мы имели на последнем, III шаге, решения задачи (8.1") - (8.3") (без условия
целочисленности).
IV шаг.Основные переменные jq, х2, х^\ неосновные переменные *з, *4> *5-
Решая эту расширенную задачу симплексным методом (предлагаем студентам выполнить самостоятельно), получим следующее.
V шаг.Основные переменке хь х2, ху, неосновные перемен
ные Х4, Х5, Xf>. f<\y *к
т.е. Zmin =45— при оптимальном решении Х5 =(5~; 39; 1; 0;
0; 0).
Полученное оптимальное решение расширенной задачи (8.1") - (8.3"), (8.6") вновь не удовлетворяет условию целочисленное™ (8.4"). По первому уравнению с переменной х\9 получив-
шеи нецелочисленное значение в оптимальном решении (5~),
составляем второе дополнительное ограничение (8.6):
8.3. Понятие о методе ветвей и границ
Метод ветвей и границ — один из комбинаторных методов. Его суть заключается в упорядоченном переборе вариантов и рассмотрении лишь тех из них, которые оказываются по определенным признакам перспективными, и отбрасывании бесперспективных вариантов.
Метод ветвей и границ состоит в следующем: множество допустимых решений (планов) некоторым способом разбивается на подмножества, каждое из которых этим же способом снова разбивается на подмножества. Процесс продолжается до тех пор, пока не получено оптимальное целочисленное решение исходной задачи.
Пусть задача 1 (задача (8.1)—(8.3) максимизации линейной функции Z (без учета целочисленности переменных) решена симплексным методом и известны нижняя и верхняя границы для каждой целочисленной переменной Xj\ Vj ^ Xj < Wj (J = 1, 2, ...,
л), а также нижняя граница линейной функции Zq, т.е. при любом плане X Z(X)> Z0. Предположим для определенности, что
только первая компонента х[ оптимального плана X* задачи 1 не удовлетворяет условию целочисленности. Тогда из области допустимых решений задачи 1 исключается область: [х\] < х\ < [х[] + 1,
где [х{] — целая часть числа х,*. В результате из задачи 1 формируют две задачи: 2 и 3, отличающиеся друг от друга тем, что в задаче 2 кроме ограничений (8.2) задачи 1 добавлено ограничение V! < х\ < [х\]1щ а в задаче 3 кроме тех же ограничений (8.2) добавлено ограничение [xj*] + 1<Xj* < Wj. Получим список из двух
задач: 2 и 3.
Решаем одну из них (в любом порядке). В зависимости от полученного решения список задач расширяется, либо уменьшается.
Если в результате решения одной из задач 2 или 3 получен нецелочисленный оптимальный план, для которого Z(X*) < Z0, то
данная задача исключается из списка. Если Z{X*) > Z0, то из данной задачи формируются новые две задачи.
Если полученное решение X* удовлетворяет условию целочисленности и Z(Jf*)>Z0, то значение 2Ь исправляется и за вели-
чину Zq принимается оптимум линейной функции полученного оптимального целочисленного плана.
Процесс продолжается до тех пор, пока список задач не будет исчерпан, т.е. все задачи не будут решены.
Проиллюстрируем метод ветвей и границ на примере. 8.3. Решить задачу
Z = 3*! +Х2 -> тах
при ограничениях:
Х[, xi — целые числа.
Решение. За нижнюю границу линейной функции примем, например, ее значение в точке (0,0), т.е. 2о = Z (0; 0) = 0.
I этап. Решая задачу симплексным методом, получим 2^ = 13"? при Х\ = (4,5; 0; 0; 1,5; 0,5; 4); так как первая компонента х\ дробная, то из области решения исключается полоса, содержащая дробное оптимальное значение х\, т.е. 4 < х\ < 5. Поэтому задача 1 разбивается на две задачи 2 и 3:
Список задач: 2 и 3. Нижняя граница линейной функции не изменилась: Zq — 0.
II этап. Решаем (по выбору) одну из задач списка, например задачу 3 симплексным методом.
Получим, что условия задачи 3 противоречивы.
ПЬзэтап. Решаем задачу 2 симплексным методом. Получим
Zmj4*j при X; = [4;|;0;|;0; ^). Хотя Z(X\) = 4| > Z0 = 0,
по-прежнему сохраняется Zq — 0, ибо план Хз нецелочисленный. Так как х*2 — дробное число, из области решений исключаем полосу 0 < Х2 < 1 и задачу 2 разбиваем на две задачи
4 и 5.
Список задач: 4 и 5. Значение 2q = 0.
IV этап. Решаем задачу 4 симплексным методом.
Получим Zmax = 12 при Х\ = (4; 0; 2; 2; 0*/0). Задачу исключаем из списка, но при этом меняем Zq, Z0 = Z{X\) - 12, ибо план Х\ целочисленный.
V этап. Решаем задачу 5 симплексным методом. ' ^ !
Получим Zmax = 12,25 при Х'5= (3,75; 1; 0; 0,25; 0,25; \ $. Zq
не меняется, т.е. Zq = 12, ибо план Х*ь нецелочисленный. Так как х\ — дробное, из области решений исключаем полосу 3<jq<4, и задача 5 разбивается на две задачи: 6 и 7.
Список задач: 6 и 7. Значение Zq = 12.
VI этап. Решаем одну из задач списка, например задачу 7,
симплексным методом.
Получим, что условия задачи 7 противоречивы.
VII этап. Решаем задачу 6 симплексным методом. Получим
2^ах = 10,5 «при Х\ = (3; 1,5; 1,5; 0; 0; 0,5; 2,5). Так как
Z{X\) = 10,5 < ZQ = 12, то задача исключается из списка.
Итак, список задач исчерпан и оптимальным целочисленным
решением исходной задачи будет X = ЛГ4 = (4; 0; 2; 2; 0; 0), а
оптимум линейной функции 2^ах = 12>
Замечание 1.Нетрудно видеть, что каждая последующая задача, составляемая з процессе применения метода ветвей и границ, отличается от предыдущей лишь одним неравенством — ограничением. Поэтому при решении каждой последующей
задачи нет смысла решать ее симплексным методом с самого начала (с I шага). А целесообразнее начать решение с последнего тага (итерации) предыдущей задачи, из системы ограничений которой исключить "старые" (одно или два) уравнения — ограничения и ввести в эту систему "новые" уравнения — ограничения.