- •Глава I. Линейное программирование
- •§1. Задача линейного программирования. Типичные задачи линейного программирования, их математические модели.
- •1.1 . Задача линейного программирования
- •1.2. Типичные злп и их математические модели
- •1.3. Упражнения.
- •§2. Общая злп. Канонический вид злп.
- •2.2. Канонический вид злп
- •§3. Теоретические основы решения злп. Геометрическая интерпретация злп. Идея аналитического решения
- •3.1. Теоретические основы решения злп
- •3.2. Геометрическая интерпретация злп
- •Идея аналитического решения злп
- •Теоретические основы решения злп (продолжение)
- •§4. Симплекс-метод решения злп
- •4.1. Алгоритм симплекс-метода
- •4.2. Симплекс-таблицы.
- •§5. Метод искусственного базиса
- •5.1. Суть метода искусственного базиса
- •§6. Теория двойственности
- •6.1. Задача, приводящая к паре двойственных задач
- •6.2. Пара симметричных двойственных задач
- •6.3. Пара несимметричных двойственных задач
- •6.4. Теоремы двойственности
- •6.5. Упражнения.
- •§7. Элементы целочисленного программирования
- •7.1. Постановка и геометрическая интерпретация
- •7.2. Метод Гомори
- •§8. Транспортная задача
- •7.1. Постановка и математическая модель транспортной задачи
- •8.2. Теоретические основы решения транспортной задачи
- •8.3. Алгоритм метода потенциалов.
- •8.3.1. Основные пункты алгоритма:
- •8.3.2. Построение первоначального опорного плана.
- •8.3.4. Переход к новому опорному плану (построение очередного опорного плана).
- •8.3.5. Метод наименьших затрат построения первоначального опорного плана.
- •8.3. Сведение задачи открытого типа к задаче закрытого типа
- •8.4. Упражнения.
- •Задание 4
- •Задание 5
- •Задание 6
§5. Метод искусственного базиса
5.1. Суть метода искусственного базиса
В случаях, когда сразу не выделяются базисные переменные (а они сразу выделяются только после приведения к каноническому виду задачи, в которой имеются только неравенства типа «≤» при неотрицательных правых частях) можно применять так называемый метод искусственного базиса, который является по сути разновидностью симплекс-метода.
Пусть задача приведена к каноническому виду (1.6), в котором в некоторых уравнениях, скажем в i1-м, i2-м, …, is-м, явно не выделяются базисные переменные. Добавим в эти уравнения искусственные переменные xm+1, xm+2, …, xm+s, а в целевую функцию слагаемые Mxm+1, Mxm+2, …, Mxm+s, где M>>1 (M достаточно большое положительное число) причём «» это «+», если решается задача на min, и «» это «», если решается задача на max. Получается новая задача, которая называется дополнительной или вспомогательной.
Например, вспомогательная (дополнительная) задача с искусственными переменными для задачи (1.5) будет иметь вид
c1x1+c2x2+…+cnxn+Mxn+m+1+Mxn+m+2+…+Mxn+2mmin
Аналогично, если задача (2.1) решается на max и придётся вводить искусственные переменные во все ограничения, то получаем следующую вспомогательную задачу:
c1x1+c2x2+…+cnxnMxn+1Mxn +2…Mxn+mmax
(5.1)
5.1.1.
Если
(
,
,
…,
,
,
…,
)
оптимальное
решение
вспомогательной
задачи,
где
,
…,
значения
искусственных переменных,
,
,
…,
значения
переменных в исходной задаче в канонической
форме,
то
=…=
=0
и
(
,
,
…,
)
оптимальное решение
исходной
задачи.
При
этом значения целевой функции исходной
и вспомогательной задач совпадают.
Отсюда получаем, что для решения задачи линейного программирования, методом искусственного базиса достаточно:
Привести задачу к каноническому виду.
Если в задаче в каноническом виде нет базиса из единичных векторов, то составить вспомогательную задачу (если в задаче в каноническом виде имеется базис из единичных векторов, то задача решается обычным симплекс-методом).
Решить вспомогательную задачу, и если ( , , …,
,
,
…,
)
оптимальное решение вспомогательной
задачи, где x1,
x2,
…, xm
основные и дополнительные переменные
(из задачи в каноническом виде), xm+1,
xm+2,
…, xm+s
искусственные переменные то (
,
,
…,
)
решение задачи в каноническом виде.
Оптимальное значение целевой функции
вспомогательной задачи равно оптимальному
значению исходной задачи.
При этом к вспомогательной задаче применяется обычный симплекс-метод с некоторыми своими особенностями:
Так как целевая функция вспомогательной задачи имеет слагаемые с коэффициентами M, то оценки k имеют вид
M,
причём M
достаточно большое число. Поэтому при
≠0
знак k
фактически определяется знаком при
.
В связи с этим в симплекс-таблице на
начальном этапе (пока в базис входят
искусственные переменные) вместо одной
строки k
записывают две строки
и
,
и при применении критерия оптимальности
ориентируются только на строку
.Искусственные переменные по мере их выведения из базиса исключаются из дальнейшего рассмотрения.
После того, как все искусственные переменные будут выведены из базиса, коэффициенты k при M будут равны нулю, в таблице остаётся только строка =k.
Пример. Решить пример из предыдущего параграфа методом искусственного базиса.
Решение. Напоминаем задачу:
3x1+x2+2x3 max(min)
1. Приведём задачу к каноническому виду:
3x1+x2+2x3 max(min)
2. В базис в виде единичного вектора входит только вектор при x4, то есть переменная во втором уравнении. В первое и третье уравнения системы ограничений вводим искусственные переменные x6 и x7:
В целевую функцию они войдут с коэффициентами M или M в зависимости от того, решается задача на min или на max.
Решим задачу на максимум. Тогда вспомогательная задача следующая:
3x1+x2+2x3Mx6Mx7 max
3. Решаем полученную вспомогательную задачу с применением симплекс-таблиц:
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
M |
M |
2 |
3 |
|
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
|
|||||
x6 |
M |
2 |
1 |
1 |
2 |
0 |
0 |
1 |
0 |
2 |
1 |
min |
|
x4 |
0 |
4 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
|
4 |
|
|
x7 |
M |
6 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
6 |
6 |
|
|
|
0 |
3 |
1 |
2 |
0 |
0 |
0 |
0 |
2 |
2 |
|
|
|
|
8 |
0 |
2 |
3 |
0 |
1 |
0 |
0 |
4 |
3 |
|
|
|
Здесь 2=2M1, 3=3M2. Коэффициенты при M записаны в строке . Имеем, что 2<0 и 3<0, то есть для переменных x2 и x3 нарушается критерий оптимальности. Поэтому в базис будем вводить x2 или x3. Какую именно из этих переменных, и вместо какой из искусственных (вместо x6 или вместо x7), определяем с помощью столбцов 2 и 3. На пересечении столбца 2 и строк и числа соответственно 2 и 4 означают, что в случае включения в базис x2 значение функции возрастёт на 22=4M+2, а в случае включения в базис x3 значение функции возрастёт на 33=3M+2<22. Поэтому в базис включаем x2 (что обеспечивает большее возрастание функции и в конечном итоге ускоряет процесс решения задачи). Так как min =2 достигается в строке x6, то из базиса исключаем x6. Строим новую симплекс-таблицу, в который уже столбец с искусственной переменной x6 отсутствует (вычеркнут), так как искусственная переменная x6 из дальнейшего процесса исключается. В новой таблице коэффициент при x2 в первой строке (которая теперь соответствует новой базисной переменной x2) равен 1, а во второй равен нулю. Поэтому первые две строки в новую таблицу переписываем из старой. Для того, чтобы в строке x7 при x2 получить 0, из строки x7 в старой таблице вычитаем новую первую. Получаем следующую, очередную, таблицу:
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
M |
M |
1 |
|
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
|
||||
x2 |
1 |
2 |
1 |
1 |
2 |
0 |
0 |
|
0 |
|
|
|
x4 |
0 |
4 |
1 |
0 |
1 |
1 |
0 |
|
0 |
4 |
|
|
x7 |
M |
4 |
2 |
0 |
1 |
0 |
1 |
|
1 |
2 |
min |
|
|
2 |
2 |
0 |
0 |
0 |
0 |
|
0 |
|
|
|
|
|
4 |
2 |
0 |
1 |
0 |
1 |
|
0 |
|
|
|
|
Так
как k<0
только для одного значения k=1,
а именно, 1=2M+2<0
(напоминаем, что M
достаточно большое число, так что 2M<2
и 1<0),
то ищем только отношения 1.
Минимум этих отношений достигается в
строке x7:
min
=2.
Поэтому искусственная переменная
исключается из базиса, а вместо неё в
базис включается x1.
Искусственные переменные теперь исключены из базиса. Поэтому дальше работаем с обычной симплекс-таблицей, в которой новая третья строка (соответствующая переменной x1) получается делением старой третьей строки на 2. Затем эту новую третью прибавляем к старой первой и вычитаем из старой второй. В результате в новой таблице в столбце x1 появятся соответственно 0, 0 и 1:
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
x1 |
x2 |
x3 |
x4 |
x5 |
|||
x2 |
1 |
4 |
0 |
1 |
3/2 |
0 |
1/2 |
x4 |
0 |
2 |
0 |
0 |
3/2 |
1 |
1/2 |
x7 |
3 |
2 |
1 |
0 |
1/2 |
0 |
1/2 |
k |
2 |
0 |
0 |
1 |
0 |
1 |
|
В полученной таблице k0 для всех k=1, 2, …, 5, то есть критерий оптимальности выполнен. Поэтому X0=(2; 4; 0) является оптимальным решением, при котором значение целевой функции равно 2 (x4 в окончательном ответе не учитывается, так как она является дополнительной переменной, и не входит в первоначальную задачу).
Решим задачу на минимум (min). Тогда вспомогательная задача следующая:
3x1+x2+2x3Mx6Mx7 max
Как и выше, решаем полученную вспомогательную задачу с применением симплекс-таблицы:
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
M |
M |
2 |
3 |
|
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
|
|||||
x6 |
M |
2 |
1 |
1 |
2 |
0 |
0 |
1 |
0 |
2 |
1 |
min |
|
x4 |
0 |
4 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
|
4 |
|
|
x7 |
M |
6 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
6 |
6 |
|
|
|
0 |
3 |
1 |
2 |
0 |
0 |
0 |
0 |
2 |
2 |
|
|
|
|
8 |
0 |
2 |
3 |
0 |
1 |
0 |
0 |
4 |
3 |
|
|
|
Критерий оптимальности нарушается для переменных x2 и x3: 2=2M1>0, 3=3M2>0. Так как 22=4M+2 по абсолютной величине превосходит 33=3M+2, то в базис включаем x2. При этом min =2 достигается в строке x6, и из базиса исключаем x6. Переход к новой таблице аналогичен переходу при решении задачи на max:
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
M |
M |
1 |
|
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
|
||||
x2 |
1 |
2 |
1 |
1 |
2 |
0 |
0 |
|
0 |
|
|
|
x4 |
0 |
4 |
1 |
0 |
1 |
1 |
0 |
|
0 |
4 |
|
|
x7 |
M |
4 |
2 |
0 |
1 |
0 |
1 |
|
1 |
2 |
min |
|
|
2 |
2 |
0 |
0 |
0 |
0 |
|
0 |
|
|
|
|
|
4 |
2 |
0 |
1 |
0 |
1 |
|
0 |
|
|
|
|
Теперь 1>0. Поэтому переход к новой таблице аналогичен соответствующему переходу при решении задачи на max: в базис вводится x1 вместо x7:
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
3 |
5 |
x1 |
x2 |
x3 |
x4 |
x5 |
|||||
x2 |
1 |
4 |
0 |
1 |
3/2 |
0 |
1/2 |
8/3 |
|
x4 |
0 |
2 |
0 |
0 |
3/2 |
1 |
1/2 |
4/3 |
4 |
x7 |
3 |
2 |
1 |
0 |
1/2 |
0 |
1/2 |
|
|
k |
2 |
0 |
0 |
1 |
0 |
1 |
4/3 |
4 |
|
Имеем 3=1>0 и 5=1>0. Так как |55|=|33|, то вводим в базис x5 (вместо x4): сначала умножаем 2-ю строку на 2, а затем новую вторую строку, умноженную на ½, прибавляем к первой и третьей (фактически вторую старую прибавляем к первой и третьей):
Базис |
Сб |
Своб. чл. |
3 |
1 |
2 |
0 |
0 |
x1 |
x2 |
x3 |
x4 |
x5 |
|||
x2 |
1 |
6 |
0 |
1 |
3 |
1 |
0 |
x4 |
0 |
4 |
0 |
0 |
3 |
2 |
1 |
x7 |
3 |
4 |
1 |
0 |
1 |
1 |
0 |
k |
6 |
0 |
0 |
2 |
2 |
0 |
|
В полученной таблице k0 для всех k=1, 2, …, 5, то есть критерий оптимальности выполнен. Поэтому X0=(4; 6; 0) является оптимальным решением, при котором значение целевой функции равно 6.
Ответ: Fmin=6, минимум достигается в точке X2=(4; 6; 0);
Fmax=2, максимум достигается в точке X1=(2; 4; 0).
5.2. Упражнение. Решить соответствующие задачи линейного программирования из Упражнения 1.3 методом искусственного базиса.
