Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lineynoe_programmirovanie.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

§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+2mmin

Аналогично, если задача (2.1) решается на max и придётся вводить искусственные переменные во все ограничения, то получаем следующую вспомогательную задачу:

c1x1+c2x2+…+cnxnMxn+1Mxn +2…Mxn+mmax

(5.1)

5.1.1. Если ( , , …, , , …, ) оптимальное решение вспомогательной задачи, где , …,  значения искусственных переменных, , , …,  значения переменных в исходной задаче в канонической форме, то =…= =0 и ( , , …, )  оптимальное решение исходной задачи. При этом значения целевой функции исходной и вспомогательной задач совпадают.

Отсюда получаем, что для решения задачи линейного программирования, методом искусственного базиса достаточно:

  1. Привести задачу к каноническому виду.

  2. Если в задаче в каноническом виде нет базиса из единичных векторов, то составить вспомогательную задачу (если в задаче в каноническом виде имеется базис из единичных векторов, то задача решается обычным симплекс-методом).

  3. Решить вспомогательную задачу, и если ( , , …, , , …, )  оптимальное решение вспомогательной задачи, где x1, x2, …, xm  основные и дополнительные переменные (из задачи в каноническом виде), xm+1, xm+2, …, xm+s  искусственные переменные то ( , , …, )  решение задачи в каноническом виде. Оптимальное значение целевой функции вспомогательной задачи равно оптимальному значению исходной задачи.

При этом к вспомогательной задаче применяется обычный симплекс-метод с некоторыми своими особенностями:

  1. Так как целевая функция вспомогательной задачи имеет слагаемые с коэффициентами M, то оценки k имеют вид M, причём M  достаточно большое число. Поэтому при ≠0 знак k фактически определяется знаком при . В связи с этим в симплекс-таблице на начальном этапе (пока в базис входят искусственные переменные) вместо одной строки k записывают две строки и , и при применении критерия оптимальности ориентируются только на строку .

  2. Искусственные переменные по мере их выведения из базиса исключаются из дальнейшего рассмотрения.

  3. После того, как все искусственные переменные будут выведены из базиса, коэффициенты 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=2M1, 3=3M2. Коэффициенты при 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

В полученной таблице k0 для всех 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=2M1>0, 3=3M2>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

В полученной таблице k0 для всех 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 методом искусственного базиса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]