Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Исследование операций и методы оптимизации. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Исходной задачей для демонстрации возможностей методов отсечений,
[][
]
используемых при решении линейных целочисленных задач, является задача с ослабленными ограничениями, которая возникает в результате исключения требования целочисленности переменных. По мере введения специальных дополнительных ограничений, учитывающих требование целочисленности, многогранник допустимых решений ослабленной задачи постепенно деформируется, до тех пор, пока координаты оптимального решения не станут целочисленными. Название «методы отсечений» связано с тем обстоятельством, что вводимые дополнительные ограничения отсекают (исключают) некоторые области многогранника допустимых решений, в которых отсутствуют точки с целочисленными координатами. Основными методами решения задач целочисленного программирования выступают метод ветвей и границ и метод Гомори.
В основе комбинаторных методов лежит идея перебора всех допустимых целочисленных решений. Разумеется, на первый план здесь выдвигается проблема разработки тестовых процедур, позволяющих непосредственно рассматривать лишь (относительно небольшую) часть указанных решений, а остальные допустимые решения учитывать некоторым косвенным образом.
4.2 Метод ветвей и границ решения целочисленных задач линейного
программирования
Наиболее известным комбинаторным методом является метод ветвей и границ, который также опирается на процедуру решения задачи с ослабленными ограничениями. При таком подходе из рассматриваемой задачи получаются две подзадачи путем специального «разбиения» пространства решений и отбрасывания областей, не содержащих допустимых целочисленных решений.
В случае, когда целочисленные переменные являются булевыми, применяются комбинированные методы. Булевы свойства переменных существенно упрощают поиск решения.
Рассматриваемый в данном разделе метод ветвей и границ решения задачи целочисленного программирования также опирается на решение задачи с ослабленными ограничениями. Метод ветвей и границ непосредственно применим как к полностью, так и к частично целочисленным задачам.
Согласно общей идее метода, сначала решается задача с ослабленными ограничениями (задача линейного программирования). Пусть
целочисленная переменная, значение ослабленной задачи является дробным. Интервал
*
x
которой в оптимальном решении
r
1**+<<
xxx не
rrr
допустимых целочисленных компонент решения. Поэтому допустимое целое
71
x
r
содержит
значение
[
]
[
]
(
)
x
должно удовлетворять одному из неравенств
r
1*+≤rrxx .
*
xx >
rr
или
Введение этих условий в задачу с ослабленными ограничениями порождает две не связанные между собой задачи. В таком случае говорят, что исходная задача разветвляется
(
или разбивается) на две подзадачи Осуществляемый в процессе ветвления учет необходимых условий целочисленности позволяет исключить части многогранника допустимых решений, не содержащие точек с целыми координатами
.
Затем каждая подзадача решается как задача линейного программирования
целевой функцией исходной задачи
).
Если полученный оптимум оказывается допустимым для целочисленной задачи, такое решение следует зафиксировать как наилучшее. При этом нет необходимости продолжать
«
ветвление подзадачи, поскольку улучшить полученное решение, очевидно, не удастся. В противном случае подзадача, в свою очередь, должна быть разбита на две подзадачи опять при учете условия целочисленности переменных, значения которых в оптимальном решении не являются целыми. Разумеется, как только полученное допустимое целочисленное решение одной из подзадач оказывается лучше имеющегося, оно фиксируется вместо зафиксированного ранее. Процесс ветвления продолжается, насколько это возможно, до тех пор, пока каждая
.
»
подзадача не приведет к целочисленному решению или пока не будет установлена невозможность улучшения имеющегося решения. В этом случае зафиксированное допустимое решение является оптимальным
.
Эффективность вычислительной схемы метода можно повысить, введя в рассмотрение понятие границы, на основе которого делается вывод о необходимости дальнейшего разбиения каждой из подзадач. Если оптимальное решение подзадачи с ослабленными ограничениями обеспечивает худшее значение целевой функции, чем имеющееся решение, эту подзадачу далее рассматривать не следует. В таких случаях говорят, что подзадача прозондирована, и ее можно вычеркнуть из списка подзадач, порожденных исходной задачей. Иными словами, как только получено допустимое целочисленное решение некоторой подзадачи, целочисленное решение некоторой подзадачи, соответствующее значение целевой функции может быть использовано в качестве
(
верхней в случае минимизации и нижней в случае максимизации) границы, наличие которой позволяет формализовать процедуру исключения прозондированных подзадач
Рассмотрим задачу целочисленного линейного программирования (ЗЦЛП
.
):
Найти вектор
n
=
=
1
j
и удовлетворяющий условиям
Ex ,
максимизирующий линейную форму
n
xcxf
(4.1)
jj
:
72
n
n
p
p
j
..
1
=
(
)
ZR≤≤1
x
(
)
x
x
=
bxa
=
j
1
0
x , nj ,1= (4.3)
j
21
,
ijij
xxx ,...,,
p
mi ,1= (4.2)
целые
(
) (4.4)
Пусть для каждой целочисленной переменной можно указать верхнюю и нижнюю границы, в пределах которых безусловно содержатся ее оптимальные значения, то есть
WxV
;
jjj
(4.5)
При этом в систему функциональных ограничений необходимо включить р неравенств
В начале любой S-й итерации метода ветвей и границ необходимо иметь
1.
(4.5).
:
Основной список задач линейного программирования, каждая из которых должна быть решена в последующих итерациях (на первой итерации список содержит одну задачу линейного программирования (ЗЛП
) –
задачу
1
(4.1- 4.3) и (4.5).
2.
Нижнюю границу оптимального значения линейной формы задачи
– (4.3), (4.5)
функции
(4.5).
Если такую точку указать трудно, то можно положить
xf в любой целочисленной точке
)(0S
Z
. На
первой итерации в качестве
x,
лежащей внутри области
Z
приводит к значительному увеличению числа итераций
)1(
можно взять значение
0
)1(
Z ,
−∞=
0
.
(4.1)
(4.2) –
но это
Алгоритм S-й итерации метода ветвей и границ
Пусть в результате
и имеем
Шаг
(
Шаг
противном случае
Z .
1. ) и
2.
)(0S
Выбираем из списка ЗЛП одну задачу для решения, задачу
решаем ее
Если задача
возвращаемся к шагу что исходная задача заканчивается
Шаг
3.
задачу
R
Шаг
4.
целочисленности
.
Если
исключаем из списка и, полагая
Если не все компоненты вектора
(4.4), то
из списка исключаем, план
S
итераций метода получили список из
.
R
имеет решение
исключаем задачу
1.
При
S = 0, то
(4.1) – (4.4) не
)(SS
>
R
)(
Zxf
, то
0
переходим к шагу
R из
есть на первой итерации, делаем вывод
имеет решения и процесс решения
+
0
переходим к шагу
)(S
запоминаем и, полагая
R
)(S
R
, то
переходим к шагу
списка и, полагая
4. В
)1(
5. В
)(
SS
ZZ
=
,
возвращаемся к шагу
0
)(S
удовлетворяют условиям
R
противном случае
Z
задач
: 1,2,...,Z
3. В
0
ZZ
=
)1(
+
противном случае
1.
задачу
)1(
S
+
xZ
=
0
R
)(
SS
0
R
)(
S
R
, ,
,
73
возвращаемся к шагу 1. При S = 0 вектор х является решением и исходной
x
[
]
(
)
[
]
(
)
[
]
задачи и процесс решения заканчивается.
Шаг 5. Задачу R выбрасываем из списка, включая в него две новые задачи
линейного программирования – задачу (Z+1) и задачу (Z+2). Далее, полагая
)1(
+
0
ЗЛП осуществляется следующим образом: Пусть полученном оптимальном плане
)(
SS
ZZ =
, возвращаемся к шагу 1. Процесс разбиения задачи R на две новые
0
)(S
x дробная компонента в
j
)(S
и
R
)(S
x ее целая часть. Тогда задача Z+1
R
имеет вид:
n
max
=
j
xcxf
jj
1
=
при условиях
n
j
=
1
=
WxV
bxa
,
ijij
111
mi
,1=
…………………………
)(S
xxV
R
jj
…………………………
WxV
ppp
0,...,,
xxx
21
n
Задача
при условиях
n
=
j
Z+2:
n
max
=
xcxf
j
jj
1
=
=
bxa
, mi ,1=
1
ijij
WxV
111
…………………………
S
)(
1
R
Wxx +
jj
…………………………
WxV
ppp
0,...,,
xxx
21
n
Процесс решения продолжаем до тех пор, пока не будут решены все
задачи линейного программирования из списка. Тогда решением задачи
(4.5)
будет
)(0S
Z
на
последней итерации
.
74
(4.1)-
Пример 4.1. Решить задачу целочисленного линейного программирования
(
)
(
)
(
)
(
)
(
)
(
)
(
)
max2
+= xxxf
21
2137
+ xx
21
(4.7)
521≤+ xx
(4.6)
целые,21−xx
x
1
x
2
В качестве
1)
В списке задач линейного программирования одна задача
(4.7),(4.9),(4.10).
2)
Нижняя граница
Шаг
1.
Выбираем задачу
)1(
=
xf .
Шаг
2.
Так как задача
Шаг
3.
Так как
Шаг
4. Не
поэтому переходим к шагу Шаг
5.
Задачу
и задачу
задача
задача
Полагаем
Итерация Список ЗЛП включает
1)
Шаг
Шаг
1
2
1
2
1.
)2(
=x ,
2.
2
21
10
x
x
3
21
x
x
)2(
0
Выбираем из списка одну задачу
Задача
(4.8)
30
(4.9)
50
(4.10)
)1(
Z
возьмем
0
5,6
все компоненты вектора
1 из
3.
Разбиение задачи
max2
+= xxxf
21
2137
+ xx
521≤+ xx
50
max2
+= xxxf
21
2137
+ xx
521≤+ xx
32
50
)2(
0
0
2.
0
=Z
)4;1(
0
)2(
2
имеет конечное решение, переходим к шагу
xf в
точке
)0,0(=x , то
)1(
0
=Z .
0
1,
решаем ее, получим оптимальный план
1
имеет конечное решение, то переходим к шагу
)1(
5,6 Zxf >= , то
списка выбрасываем, включая в него две новые задачи
)1(
== ZZ ,
возвращаемся к шагу
2, 3.
6
=xf .
)1(
0
5.
1
переходим к шагу
)1(
x
удовлетворяют условию целочисленности
производим по переменной
задачу
есть
1.
2.
)1(
0
=Z .
x
1
3.
:
Итерация
задача
0
4.
Решаем ее, оптимальный план
1.
Имеем
1 – (4.6)-
)1(
)5,3;5,1(
=
x ,
3.
-
задачу
:
2
,
75
Шаг 3. Сравниваем
(
)
(
)
3
(
)
(
)
3
(
)
(
)
7
Шаг
4.
Все компоненты вектора
поэтому задачу
)3(
0
xfZ
)2(
2 из
6
==
,
возвращаемся к шагу
Итерация Шаг
)3(
Шаг
Шаг
шагу Шаг
3.
1.
Выбираем из списка ЗЛП задачу
7
)
;2(
=x .
2.
Задача
3.
3
имеет конечное решение, следовательно, переходим к шагу
Сравниваем
4.
4.
Компоненты вектора следовательно, задачу Шаг
5.
Вместо задачи
Разбиение задачи задача
4
+ xx
21
521≤+ xx
3
производим по переменной
max2
+=
xxxf
21
2137
)2(
списка исключаем, план
0
)2(
=> Zxf ,
0
следовательно, переходим к шагу
)2(
x
удовлетворяют условию целочисленности
x запоминаем и, полагая
1.
3,
решаем ее, получим оптимальный план
)3(
xf и
3 из
списка выбрасываем и переходим к шагу
3
включаем в список две задачи
)3(
Z ,
0
x не
так как
)3(
удовлетворяют условию целочисленности
)3(
6
– 4 и 5.
x
:
2
4. ,
)2(
3.
1
)3(
=>= Zxf , то
0
6
переходим к
,
5.
32
x
1
20
x
2
задача
5 (
нет решения
xxxf
21
2137
+ xx
21
x
1
x
2
521≤+ xx 32 53
)
max2
+=
Полагая
)4(
6
0
)3(
==
ZZ
0
,
возвращаемся к шагу
Итерация
4.
Выбираем из списка ЗЛП задачу
следовательно, выбрасываем ее из списка. Полагая
1.
Итерация
1)
Список ЗЛП
2)
Шаг
5.
Имеем
-
)5(
0
1.
Выбираем задачу
)4(
6
==
ZZ
0
:
задача
.
4.
4.
Решая ее, получаем оптимальный план
1.
5.
Она не имеет решения
)5(
0
)4(
ZZ
= ,
0
возвращаемся к шагу
)5(
)2;
=
x
(
15
,
.
76
Шаг 2. Задача 4 имеет конечное решение
7
(
)
7
(
)
(
)
(
)
(
)
(
)
шагу
3.
Шаг
Шаг
3.
Так как
4.
Компоненты плана
)5(
выбрасываем и, полагая Шаг
5.
Задачу
4
выбрасываем из списка, а вместо нее включаем в него две новые
ЗЛП, производя разбиение задачи
)6(
6
0
x
)5(
0
=> Zxf , то
)5(
=
переходим к шагу
не целочисленные, следовательно, задачу
)6(
ZZ
,
переходим к шагу
0
4 по
переменной
задача
6
max2
+=
xxxf
21
2137
+ xx
21
x
2
521≤+ xx
3;33
= xx
11
20
задача
7
max2
+=
xxxf
21
2137
+ xx
21
521≤+ xx
)5(
15
(
=x и
4.
5.
x
1
)5(
)2;
2
6
=xf ,
переходим к
4 из
списка
2;22
= xx
11
20
x
2
Полагая
)5(
0
)6(
ZZ
= ,
0
возвращаемся к шагу
1.
Итерация
1)
Список ЗЛП включает задачи
2)
Шаг
)6(
задачу Полагая
6.
Имеем
)6(
6
=Z.
0
1.
Выбираем из списка задачу
)2;2(
=x
.
Так как компоненты плана
6 из
списка выбрасываем, а план
)6(
6
0
)7(
== ZZ
0
возвращаемся к шагу
6 и 7.
6 и
решая ее, находим оптимальный план
)6(
x целочисленные и
)6(
x запоминаем
1.
)6(
6
.
Итерация
1)
Список ЗЛП
2)
Шаг Шаг
Задачу
7.
Имеем
-
одна задача
)7(
6
=Z
0
1.
2.
.
Решаем задачу Компоненты плана
7 из
списка выбрасываем, план
:
7.
7 и
получаем оптимальный план
)7(
x целочисленные и значение функции
)7(
x запоминаем
)0;3(
)7(
=x
.
)7(
.
Все задачи линейного программирования, входящие в список, решены. При этом были найдены три целочисленных оптимальных плана
)2(
x
)6(
,
x
)7(
,
x
,
причем
6
Zxf ==
, то
0
)7(
6
== Zxf
0
.
77
()()(
)
)7()6()2(
(
)
(
)
()(
)
6
=== xfxfxf . Решением исходной задачи является
(*)
( ) ( ) ( ){ }
=x .
4;1;2;2;0;3
6*=xf ;
Значительная часть экономических задач, относящихся к задачам линейного программирования, требует целочисленного решения. К ним относятся задачи, у которых переменные величины означают количество единиц неделимой продукции, например, распределение производственных заданий между предприятиями, раскрой материалов, загрузка оборудования, распределение судов по линиям, самолетов по рейсам. Если единица составляет малую часть всего объема производства, то решение находят обычным симплексным методом, округляя его до целых единиц, исходя из смысла задачи. В противном случае округление может привести к решению, далекому от оптимального целочисленного плана.
Пример 4.2
В цехе предприятия решено установить дополнительное оборудование, для размещения которого выделено 19,3 м2 - площади. На приобретение оборудования предприятие может израсходовать 10 тыс. у.е., при этом оно может купить оборудование двух видов. Комплект оборудования 1 вида стоит 1000 у.е., а II вида – 3000 у.е. Приобретение одного комплекта оборудования 1 вида позволяет увеличить выпуск продукции в смену на 2 ед., а одного комплекта оборудования II вида – на 3 ед. Зная, что для установки одного комплекта оборудования 1 вида требуется 2 м2 площади, а оборудования II вида – 1 м2 площади, определить такой набор дополнительного оборудования, который дает возможность максимально увеличить выпуск продукции.
Решение.
Составим математическую модель задачи. Предположим, что предприятие приобретет
вида. Тогда переменные
  
Если предприятие приобретет указанное количество оборудования, то общее увеличение выпуска продукции составит
По своему экономическому содержанию переменные целые неотрицательные значения, т. е,
xx
x
комплектов оборудования 1 вида и
1
x
и
x
1
+
xx
21
xx
21
+=
0,21>
3,192
+
(4.13)
(4.11)
103
32
xxF
(4.12)
21
должны удовлетворять следующим неравенствам:
2
x
комплектов оборудования II
2
x
и
x
1
могут принимать лишь
2
целые,21−
xx
Таким образом, задача (4.11) – (4.14) представляет собой задачу ЦЛП.
(4.14)
4.3 Задача коммивояжера
Имеется n городов, занумерованных числами 1,2,..., n. Для любой пары городов (i, j) задано расстояние (время, путевые расходы)
ними. Поэтому в общем случае
ijCjiC ,,
.
Коммивояжер, выезжая из
0,≥jiC
между
какого-либо города, должен посетить все города по одному разу и вернуться в
78
исходный город. Необходимо определить такую последовательность объезда
(
)
=
=
mi,...,
1
=
nj,...,
1
=
−≤+
(
)
{
}
=
mi,...,
1
=
nj,...,
1
=
()()()(){
}
=
)(x
F
(
)
(
)
(
)
=
(
)
+∞
=
ni,...,
1
=
{
}
=
nj,...,
1
=
{
}
=
ni,...,
1
=
городов, при которой длина маршрута была бы минимальной.
Другая интерпретация этой задачи связана с минимизацией времени переналадок при обработке на одном станке партии из n различных деталей. Здесь
обработке детали минимизирующую общее время переналадок
jiC ,
время переналадки при переходе от обработки детали
j.
Требуется найти последовательность обработки деталей
.
Для записи постановки задачи в терминах целочисленного линейного программирования определим булевы переменные следующим образом
если коммивояжер переезжает из
i-го
города в
j-й; 0
x , в
ij
противном случае
: 1
Тогда задача заключается в отыскании значений переменных удовлетворяющих следующим соотношениям
nin
min
∑ ∑
1 1
= =
j
при условиях
x ,
=ni
x ,
=nj
xc (4.15)
ijij
11=
ij
11=
ij
nnxuu
ijji
(
въезд в город
(
выезд из города
1
ji
(4.18)
:
j) (4.16)
i) (4.17)
i к
x ,
ij
ijx
,
.
x , 0
ij
Ограничения
1,0
u ,
i
(4.18)
целые
,
,
(4.19)
требуют, чтобы маршрут образовывал контур
.
Применение метода ветвей и границ для решения задачи коммивояжера
Допустимый маршрут х представим как множество упорядоченных пар городов
:
,,,,...,,,, iiiiiiiix
113221
nnn
Каждый допустимый маршрут представляет собой цикл, проходя по которому коммивояжер посещает каждый город ровно один раз и возвращается в исходный город. Каждая упорядоченная пара Длина
маршрута
x
равна сумме соответствующих элементов
Заметим, что множество всех допустимых маршрутов элементов
Обозначим через переезды вида
.
(i, i)
положим
CC
ij
nxn
iiC , ,
матрицу расстояний. Чтобы запретить
(i, j)
.
является дугой маршрута
X
содержит
jiC , .
n
.
!1
ij
Пусть
QPcc
=
.
jiij
CP min
,
iji
,
79
min ,
PCQ
iijj
,
Тогда
(
)
()()()(){
}
=
()()()(
)
=+++=
X
X
(
)
X
(
)
X
(
)
X
(
)
Пусть
( )
CC =
n
+=
i
i
редуцированная матрица.
ij
nxn
n
QPXd
сумма констант редуцирования.
j
==
j
11
Тогда для любого маршрута
,,,,...,,,,
113221
iiciiciicXF
,...,,
n
13221
nnn
Xiiiiiiiix
(4.20)
( ) ( ) ( ) ( ) ( )
Неравенство
(4.20)
,...,,
n
13221
показывает, что d(X) является оценкой снизу для
XdXdiiciiciic
++++=
множества X. Кроме того, после редукции длины всех маршрутов уменьшаются на одну и ту же величину d(X) и, следовательно, оптимальный маршрут найденный с использованием редуцированной матрицы, оптимален и для исходной задачи
Ветвление
.
Процесс ветвления можно представить в виде дерева, каждая вершина которого соответствует некоторому множеству маршрутов, являющемуся подмножеством множества X. При этом начальная вершина соответствует множеству всех маршрутов X
.
,
Рис
. 4.1.
Процесс ветвления
На каждом шаге из числа кандидатов на ветвление выбирается множество
1
с
наименьшей оценкой. Оно разветвляется на два подмножества
Подмножество
1
X
состоит из всех маршрутов множества
1
некоторую выбранную на данном шаге дугу маршрутов множества
Ребро дерева, соединяющее вершины дерева, соединяющее
1
, не
содержащих дугу
1
и
1
X
помечается
2
80
1
и
sr
, .
sr
, ,
подмножество
sr
, .
1
X
помечается
1
1
,
содержащих
1
X
2
sr
, , а
1
X
1
– из
и
X
всех
ребро
1
.
2
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]