книги / Математические методы принятия решений
..pdf3)дополнительные ограничения (гиперплоскости) проходят по крайней мере через одну целочисленную точку, хотя и не обязатель но находящуюся внутри выпуклой оболочки;
4)каждое новое ограничение сокращает область допустимых решений исходной задачи целочисленного программирования.
Заметим, что оптимальное решение исходной задачи может быть получено прежде, чем допустимая область будет сокраще на до области O EF G H . Оптимальное целочисленное решение определяется пересечением п гиперплоскостей, что обеспечивается процедурой отсечения; некоторые гиперплоскости могут соответ ствовать ограничениям исходной задачи.
Задачу целочисленного программирования можно записать в виде табл. 2.17.
|
|
|
Таблица 2.17 |
Запись задачи целочисленного программирования |
|||
Переменные |
1 |
-XI |
Хп |
Х\ |
0 |
-1 |
0 |
хп |
0 |
0 |
- i |
Хп+1 |
0-71+1,0 |
Оп+1,1 |
О-п+1,п |
Яп+тп |
Оп+771, 0 |
ûn+m, 1 |
О-П+ТП,71 |
№ |
Ооо |
aoi |
ООп |
Обычно в ограничения задачи (2.9) включают тривиальные соотношения Xj = —(—Xj), j = 1,2, ... , п. Запись переменных в ви
де |
—х\, —Х2, ..., —х п исторические используется в целочислен |
ном |
программировании. Будем через ûj, j = 0 , 1 , ... ,п , обозна |
чать j -й столбец текущей таблицы и через ay , i = 0 ,1 , ... , п + тп, j = 0 ,1 , ... , п, — элемент г-й строки и j-ro столбца таблицы. Пред полагается, что все a,ij в исходной таблице целые. Следовательно, все слабые переменные х п+\ , ..., хп+гп должны быть также неот рицательными целыми числами.
Сначала задачу целочисленного программирования рассматри вают как задачу ЛП и решают ее с помощью прямого или двой ственного симплекс-метода. Используя двойственный симплексметод (см. § 2.5), в первую очередь получают переменную, которую исключают из базиса. Она определяется наибольшим по модулю
отрицательным элементом столбца сводных членов, поэтому не на до решать вспомогательную задачу ЛП. Чтобы определить пере менную, вводимую в базис, рассматривают отношение элементов строки для целевой функции и соответствующих отрицательных элементов разрешающей строки. Наименьшее по значению отно шение (в задаче максимизации) определяет переменную, вводи мую в базис. Операция замещения проводится методом Жордана. В конце алгоритма получаем а,о ^ 0, г = 1,2,..., п + т, и aoj^O , j = 1,2,..., п. Если Oio^O целые для всех г, то найдено опти мальное решение целочисленной задачи. В этом случае решение получается сразу, без использования ограничений целочисленности. Если элементы а*о ^ 0, но они не все целые, то к ограничениям (2.9) добавляют еще одно. Новое ограничение записывают внизу табли цы так, чтобы задача перестала быть прямо допустимой, т. е. а»о < 0 для г = п + т + 1. Затем используют двойственный симплекс-ме тод, чтобы получить все що ^ 0. Если що являются нецелыми, в таблицу добавляют новые ограничения до тех пор, пока все йго^О, i = 1,2, ... , п + т, станут целыми и по-прежнему неотри цательными.
Если после введения дополнительного ограничения текущая таблица перестает быть прямо допустимой, то текущее решение, представляющее собой вершину многогранника решений, не удо влетворяет этому дополнительному ограничению. Другими словами, дополнительное ограничение отсекает часть пространства решений. Если дополнительные ограничения не отсекают ни одной целочис ленной точки пространства решений исходной задачи, то, вполне вероятно, после введения достаточного числа дополнительных ограничений вершины суженного множества решений будут цело численными. Тогда, используя симплекс-метод, можно найти оптимальное целочисленное решение. Трудность задачи состоит в систематическом получении дополнительных ограничений и до казательстве конечности алгоритма.
Каждый раз после проведения итерации симплекс-метода про исходит изменение множества небазисных переменных. Изменяется и таблица.
Приведем алгоритм решения задачи целочисленного програм мирования.
Ш аг 1. Решить задачу целочисленного программирования как задачу линейного программирования с помощью прямого или двой ственного симплекс-метода. Если получено оптимальное решение
задачи линейного |
программирования, то все що ^ 0, г = 1 , 2 , . . . |
..., п + т, и aoj ^ |
0, j = 1,2, ... , п. |
Ш а г 2. Если все сцо целые, то задача решена и решение по лучено без использования дополнительных ограничений. В против ном случае пусть од — первая нецелочисленная компонента в столб це оо. Тогда г-я строка называется производящей. Записать внизу таблицы коэффициенты уравнения, используя данные производя
щей строки: |
|
|
|
S = - fi o |
- 2 fij( - X j), |
(2.10) |
|
|
з |
|
|
где fio = Oio - [oi0], fio > 0, fa |
= a*,- - |
[o^-]; [a] — ближайшее к чис |
|
лу a целое. |
|
|
|
Например, некоторая базисная переменная имеет нецелочислен |
|||
ное значение, а уравнение для нее имеет вид |
|
||
, 1 |
1 |
7 |
|
Х 2 + 2 Хз ~ 2 Х 4 = 2 ‘
Дополнительное ограничение (2.10) в данном случае будет иметь следующий вид:
/ 0 ) ® 2 + / ( у ) * 3 + / ( - у ) * 4 ^ / ( у )
ИЛИ |
1 |
1 |
1 |
|
|
|
|
|
— хг + у |
ха ^ |
у , |
т.е. |
х3 + х 4 ^ 1 . |
||
В симплекс-таблицу вносим х3 + х4 - |
xs = 1, х 5 ^ 0 — свобод |
||||||
ная переменная. Для уравнения |
|
|
|
||||
|
|
1 |
|
|
1 |
|
4 |
|
|
2 |
Х \ |
Х2 “Ь |
^ Х4 |
— |
^ |
ограничение (2.10) имеет вид |
|
|
|
|
|||
|
/ ( у)®1 |
+ fO )X 2 + / ( у ) х4 ^ / ( у ) |
|||||
или |
i |
l |
l |
|
т.е. |
x i + x 4 ^ l . |
|
|
y x i + y x 4 ^ y , |
Переменную s называют слабой переменной Гоморщ а уравне ние (2.10) —отсечением Гомори. Выполнить одну итерацию (двой ственного) симплекс-метода, используя в качестве ведущей строки
отсечение Гомори (2.10). При этом таблица останется двойственно допустимой. Повторять шаг 2 до тех пор, пока все ÛÎO, г = 1,2,...
..., п + т, не станут целыми неотрицательными. Если що на неко тором шаге остаются отрицательными, следующий шаг (двойствен ного) симплекс-метода производится без введения отсечения Гомо ри. (Если элемент ооо становится отрицательным, нулевую строку не выбирают в качестве производящей. Если а<ю становится неце лым, следует выбрать нулевую строку в качестве производящей.)
В приведенном ниже числовом примере все дополнительные ограничения сохраняются на протяжении вычислений. Это сдела но для того, чтобы показать, что эти дополнительные ограничения представляют собой неравенства. Причем, если эти неравенства вы разить через исходные небазисные переменные, они будут иметь целые коэффициенты.
Если сохранять все строки, соответствующие слабым перемен ным Гомори, то эти слабые переменные могут стать базисными. Если слабая переменная Гомори вошла в базис с неотрицательным значением, то соответствующая строка представляет собой неравен ство, справедливое при текущем решении, и эта строка может быть вычеркнута. Если слабая переменная Гомори становится базисной с отрицательным значением, соответствующую строку следует ис пользовать в качестве ведущей. Если сохранять все строки, соответ ствующие всем отсечениям Гомори, то, вообще говоря, потребуется меньшее число дополнительных ограничений, однако увеличение таблицы предпочтительнее введения лишних дополнительных огра ничений.
Приведем пример, иллюстрирующий изложенный алгоритм. Пример. Рассмотрим задачу целочисленного программирова
ния: максимизировать функцию
/(ж) = Лх\ + 5X2 + жз
при условиях
Зж] + 2жг < 10,
Ж1 + 4 Ж 2 ^ И ,
ЗЖ1+ ЗЖ2 + Жз ^ 13,
жь жг, жз ^ 0 (целые).
Вводя слабые переменные хц, xs, Хб, получаем значения, запи санные в табл. 2.18.
|
|
Исходные данные задачи |
|
Таблица 2 .1 8 |
|
|
|
|
|
Переменные |
1 |
- Х\ |
-Х2 |
-Хз |
Х\ |
0 |
- 1 |
0 |
0 |
Х2 |
0 |
0 |
- 1 |
0 |
х 3 |
0 |
0 |
0 |
- 1 |
Х4 |
10 |
3 |
2 |
0 |
Х5 |
11 |
1 |
а |
0 |
х 6 |
13 |
3 |
3 |
1 |
f i x ) |
0 |
- 4 |
- 5 |
- 1 |
Решая задачу линейного программирования (ведущий элемент отмечен), получаем новые значения, записанные в табл. 2.19-2.21.
|
Первая итерация |
Таблица 2 .1 9 |
||
|
|
|||
Переменные |
1 |
|
-Х$ |
—ХЗ |
Х\ |
0 |
- 1 |
0 |
0 |
х г |
11/4 |
1 /4 |
1 /4 |
0 |
Хз |
0 |
0 |
0 |
- 1 |
Х4 |
18/4 |
(TÔ73] |
- 2 / 4 |
0 |
Х5 |
0 |
0 |
- 1 |
0 |
Хб |
19/4 |
9 /4 |
- 3 / 4 |
1 |
f i x ) |
55/4 |
- 1 1 / 4 |
5 /4 |
- 1 |
Получено оптимальное решение задачи линейного программи |
||||
рования: |
|
|
|
|
и ч |
194 |
18 |
23 |
|
|
|
Х| = 10’ |
Х2 = Ю' |
|
Данное решение не целочисленное. Согласно шагу 2 дописыва |
||||
ем в табл. 2.21 |
строку si |
из коэффициентов уравнения отсечения |
и назначаем в таблице производящую строку и ведущий столбец. Проводя замену базисных переменных, получим оптимальное
целочисленное решение (табл. 2.22).
Оптимальным целочисленным решением является
2, Х2 —2, Ж3 —1, fm a x ix ) —19.
Переменные
Х\
х2
х3
T4
Х5
Х6
f(x)
Переменные
Х\
х2
х3
Х4
Х5
Хб
S1
/(*)
|
|
|
|
|
Таблица 2.20 |
|
Вторая итерация |
|
|
||
1 |
|
|
—ха |
-Х5 |
-хъ |
18/10 |
|
|
4/10 |
- 2/10 |
0 |
23/10 |
|
- |
1/10 |
3/10 |
0 |
0 |
|
|
0 |
0 |
- 1 |
0 |
|
|
- 1 |
0 |
0 |
0 |
|
|
0 |
- 1 |
0 |
7/10 |
|
- 9 /1 0 |
- 3 /1 0 |
ш |
|
187/10 |
|
11/10 |
- 7 /1 0 |
- 1 |
|
|
|
|
|
|
Таблица 2.21 |
Оптимальное решение задачи ЛП |
|
||||
|
|
|
Ведущий |
|
|
|
|
|
I столбец |
|
|
1 |
|
—ха |
-Х5 |
- х 6 |
|
18/10 |
|
4/10 |
- 2/10 |
0 |
|
23/10 |
- |
1/10 |
3/10 |
0 |
|
7/10 |
- 9 /1 0 |
- 3 /1 0 |
1 |
|
|
0 |
|
- 1 |
0 |
0 |
Производящая |
0 |
|
0 |
- 1 |
0 |
строка |
0 |
|
0 |
0 |
- 1 |
|
- 7 /1 0 |
- |
1/10 |
1 -7 /1 0 |
0 |
|
194/10 |
|
2/10 |
4/10 |
1 |
|
Выразив Х4, х$ и хв через исходные небазисные переменные х \, Х2 и хз, получим неравенство s i ^ 0 с целыми коэффициентами:
Si = — + 1 ^( 1 0 — Зж] - 2 х 2) + j ^ ( l l - X I - 4 х 2 ) ^ 0 ,
или Х\ + Зх2 ^ 8.
Чтобы получить матрицу, полностью целочисленную, продол жим введение отсечений и решение задачи, результаты этого запи шем в виде табл. 2.23, 2.24.
|
|
|
|
Таблица 2.22 |
|
Оптимальное целочисленное решение |
|
||
Переменные |
1 |
—Ж4 |
- 5 1 |
- Х б |
Х\ |
2 |
3 /7 |
- 2 / 7 |
0 |
Х2 |
2 |
- 1 / 7 |
3 /7 |
0 |
хз |
1 |
- 6 / 7 |
- 3 / 7 |
1 |
Х4 |
0 |
- 1 |
0 |
0 |
Х5 |
1 |
1/7 |
- 1 0 / 7 |
0 |
Хб |
0 |
0 |
0 |
- 1 |
S\ |
0 |
0 |
- 1 |
0 |
/( * ) |
19 |
1/7 |
4 /7 |
1 |
Таблица 2.23
Введение отсечения з2
|
I |
Ведущий |
|
|
|
|
столбец |
|
|
|
|
Переменные |
1 |
—Х4 |
-51 |
—Хв |
|
Х\ |
2 |
3 /7 |
- 2 / 7 |
0 |
|
х 2 |
2 |
- 1 / 7 |
3 /7 |
0 |
|
х 3 |
1 - 6 / 7 |
- 3 / 7 |
1 |
|
|
Х4 |
0 |
-1 |
0 |
0 |
Производящая |
х 5 |
1 |
1/7 |
- 1 0 /7 |
0 |
строка |
Хб |
0 |
0 |
0 |
-1 |
|
Si |
0 |
0 |
-1 |
0 |
|
S2 |
0 |
|
- 4 / 7 |
0 |
|
№ |
19 |
1/7 |
4 /7 |
1 |
|
Если требования целочисленное™ относятся лишь к некоторым переменным, то такие задачи называются частично целочисленны ми. Их решение находят последовательным решением задач, каждая из которых получается из предыдущей с помощью дополнительно го ограничения
3
где уij определеняются из следующих соотношений:
Таблица 2.24
Полностью целочисленная матрица
Переменные |
1 |
- 5 2 |
- 5 1 |
- Х б |
Х\ |
2 |
3 |
- 2 |
0 |
Х2 |
2 |
- 1 |
1 |
0 |
Х з |
1 |
- 6 |
3 |
1 |
Х ^ |
0 |
- 7 |
4 |
0 |
х 5 |
1 |
1 |
- 2 |
0 |
•Гб |
0 |
0 |
0 |
- 1 |
51 |
0 |
0 |
- 1 |
0 |
5 2 |
0 |
- 1 |
0 |
0 |
/( * ) |
19 |
1 |
0 |
1 |
1) для Xjy которые могут принимать целочисленные значения, имеем
ij |
при |
dij ^ 0, |
Yij — i |
|
|
1 - Ь/(ьг) ^ |
при |
°*i < ° ’ |
2) для Xj, которые могут принимать только целочисленные зна чения, имеем
( /(<*у) |
при |
/(а у ) ^ f(bi), |
Yu _ i l 3 7 ^ ( 1 - / K ) ) |
при |
/ Ю > / № ) - |
Напомним, что /(а у ) = ay —[ay]; здесь [ay] — ближайшее к ayцелое.
§ 2.9. Задача о назначениях (проблема выбора)
Рассмотрим задачу о распределении механизмов (работников) для выполнения п конкретных действий (заданий) таким образом, чтобы каждый механизм выполнял только одно действие и чтобы при заданной производительности каждого механизма на каждом задании суммарный эффект был максимальным.
Обозначим через су, г, j = 1,2, ... ,п , производительность г-го механизма на j - й работе. Тогда данная задача, известная под на званием задачи о назначениях, будет заключаться в таком выборе
элементов из матрицы ||cÿ|| по одному из каждой строки и каждо го столбца, чтобы их сумма cij, + C2j2 + ... + Cnjn, jk Ф ji при кф1, была максимальной.
Обозначив через х ^ переменную, равную единице, если г-й ме ханизм выполняет j -ю работу, и равную нулю, если он эту работу не выполняет, мы сведем данную задачу к следующей задаче ли нейного программирования.
Среди всех неотрицательных целочисленных решений систе
мы 2п уравнений |
|
|
|
|
|
|
|
Х п |
+ X i 2 |
+ . . . |
+ X in |
= |
1, |
г = |
1,2, . .. ,n , |
Х \ j |
“Ь X 2 j |
“1“ |
“b X fij |
|
1, |
j |
1,2, ... , 71, |
задающих условия того, что каждый механизм выполняет только одну работу и что каждая работа обеспечивается только одним ме ханизмом, найти то решение, которое максимизирует функцию
71 71
/о*о= 2 2
г=1 j —1
описывающую суммарную производительность всех механизмов. Эту задачу решают с помощью сетевых методов, менее громозд ких, чем симплекс-метод (см. гл. 3).
Пример. Имеются три механизма А\, А2 , A3 , каждый из ко торых может быть использован на каждом из трех видов рабо ты В\, В2 , В3 с производительностью (в условных единицах), заданной следующей таблицей:
Узел |
в, |
в2 |
В} |
A i |
1 |
2 |
3 |
а 2 |
2 |
4 |
1 |
А з |
3 |
1 |
5 |
Требуется так распределить механизмы по одному на каждом виде работы, чтобы суммарная производительность всех механиз мов была максимальной.
Обозначим, как рекомендовалось выше, через Xÿ переменную, равную единице, если механизм А{ назначен на работу B j, и рав ную нулю, если механизм Ai не назначен на работу Bj. Тогда сум марная производительность механизмов описывается функцией
/ ( х ) = Х\\ + 2х \2 + 3X13 + 2X21 + 4X22 + £23 + З х з 1 + Х32 + 5хзз
при условиях-ограничениях
Хп +Х12 +Х13 = 1, Я21 +Х22 +Х23 = 1,
£ 3 1 + а ^ 3 2 + S 3 3 = 1,
Х п + Х 2 1 + Х 3 1 = 1 ,
Х12 +Х22 +^32 = 1, Х13 + Х23 + Хзз = 1.
Необходимо найти максимум функции / ( х ) при этих ограниче ниях.
Запишем условия задачи в виде табл. 2.25, в которой проведем выделение базисных переменных.
Таблица 2.25
Исходная таблица
Пере |
—Х\\ |
—Х\2 |
—Х\Ъ —Х2\ —Хп |
—Х23 |
-Я31 |
—Х32 |
—хзз |
1 |
|||
менные |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
0 |
ш |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
|
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
fix) |
-1 |
- 2 |
- 3 |
- 2 |
- 4 |
-1 |
- 3 |
-1 |
- 5 |
0 |
После исключения нулевых строк и вычеркивания соответ ствующих столбцов получим табл. 2.26. Среди свободных членов табл. 2.26 есть отрицательный, поэтому опорное решение еще
не получено.
Используя метод исключения Жордана (разрешающий элемент —1 отмечен), получим значения, записанные в табл. 2.27.