logo search
Бурлов_матем2

8.6. Методы нахождения опорного решения задачи линейного программирования

Метод искусственного базиса

Сформированный выше алгоритм симплекс-метода можно при­менять лишь в том случае, если выделено первое допустимое реше­ние, т. е. исходная задача линейного программирования приведена к виду

При этом , тогда, положив свободные неизвест­ные равными нулю, получаем опорное решение .

Рассмотрим метод нахождения опорного решения, основанный на введении искусственных переменных. Для этого запишем зада­чу линейного программирования в общем виде. Будем рассматри­вать задачу с числом неизвестных «n» и «r» ограничениями:

(8.42)

Перепишем систему (7.42) в другом виде. Для этого введем ис­кусственные переменные так, чтобы был выделен ба­зис. Тогда система примет вид

(8.43)

Системы (8.42) и (8.43) будут эквивалентны в том случае, если все уi для будут равны 0. Кроме того, мы считаем, что все для . В противном случае соответствующие ограниче­ния из системы (8.42) умножим на — 1. Для того чтобы уi, были равны 0, мы должны преобразовать задачу таким образом, чтобы все искусственные переменные y1 перешли в свободные неизвестные.

В этом случае система (8.43) после преобразования примет вид

(8.44)

От системы (8.43) к системе (8.44) всегда можно перейти шага­ми симплекс-метода. При таком переходе в качестве линейной формы рассматривают функцию

(8.45)

равную сумме искусственных переменных. Переход заканчивают, когда Fmin = 0 и все искусственные переменные уi,- переведены в свободные неизвестные.

Анализ вариантов решений

  1. Если , а все yi переведены в свободные переменные, то задача не имеет положительного решения.

  2. Если , а часть yi, осталась в базисе, то для перевода их в свободные переменные необходимо применять специальные приемы.

В симплекс-таблице, соответствующей системе (8.44), после того как Fmin = 0, а все yi; — свободные, вычеркивают строку для Fmin и столбцы для уi. и решают задачу для исходной линейной формы Zmin

Рекомендуется вводить минимум искусственных переменных.

Пример 8.13. Решение задачи линейного программирования симплекс-методом. Для нахождения опорного плана использовать метод искусственных переменных.

Ограничения:

Целевая функция:

В базис можно выделить переменную x3. Введем две искусственные переменные — y1 и y2.

Составим симплекс – таблицу:

Свободные

неиз-вестные

Базисные

неизвестные

Свободный

член

x3

1

3

-5

2

0

y1

4

-2

2

-1

y2

5

-1

3

-2

1

Zmin

0

-1

-2

0

0

Fmin

9

-3

5

-3

2

Наименьший положительный элемент в строке линейной формы Fmin = 2. Разрешающий элемент находится на пересечении столбца переменной x5 и строки переменной y1.

Заполним следующую симплекс – таблицу:

Свободные

неиз-вестные

Базисные

неизвестные

Свободный

член

y1

x3

1

3

-5

2

0

x5

4

-2

2

-1

1

y2

1

1

-1

-1

Zmin

0

-1

-2

0

0

Fmin

1

3

1

-1

-2

Наименьший положительный элемент в строке линейной формы Fmin = 1. Минимальное симплекс – отношение соответствует строке переменной y2.

Заполним новую симплекс – таблицу:

Свободные

неиз-вестные

Базисные

неизвестные

Свободный

член

y2

Y1

x3

6

8

5

-3

5

x5

2

-4

-2

1

3

x2

1

1

1

-1

-1

Zmin

2

1

2

-2

-1

Fmin

0

0

-1

0

-1

Так как Fmin = 0, а у1 и у2 переведены в число свободных, пе­реход к первому опорному решению завершен. Строку, соответст­вующую Fmin, и столбцы переменных у] и у2 вычеркиваем в послед­ней таблице и переписываем ее в новом виде:

Свободные

неиз-вестные

Базисные

неизвестные

Свободный

Член

x3

6

-3

x5

2

-4

1

x2

1

1

-1

Zmin

2

1

-2

Решим задачу для исходной линейной формы Zmln. В послед­ней таблице находим разрешающий элемент. Он равен 8. Выполняя действия согласно алгоритму симплекс-метода, получим следующую таблицу:

Свободные

неиз-вестные

Базисные

неизвестные

Свободный

Член

X3

x4

x1

6/8

1/8

-3/8

x5

5

4/8

-12/8

x2

2/8

-1/8

-5/8

Zmin

10/8

-1/8

-13/8

В последней строке (Zmin) положительных элементов нет, сле­довательно, оптимальное решение найдено.

Значение целевой функции Zmin равно 10/8. Оптимальный план = (6/8; 2/8; 0; 0; 5).

Второй алгоритм отыскания опорного плана

Пусть задача линейного программирования записана в канони­ческом виде:

(8.46)

(8.47)

Построим первую таблицу Жордана – Гаусса для задач (8.46) и (8.47). Для единообразия вычислительной процедуры к исходной таблице приписываем строку целевой функции:

(8.48)

После приведения системы ограничений к единичному базису целевая функция, как и базисные переменные, будет выражена че­рез свободные переменные. Аналогичным приемом мы пользовались, когда решали задачи графическим методом с числом переменных более двух.

Алгоритм метода следующий.

  1. Запишем задачу в форме таблицы (8.48), при этом все элементы столбца свободных членов bi должны быть неотрицательны . Уравнения системы (8.46), в которых свободные члены отрицательны, предварительно нужно умножить на — 1.

  2. Таблицу (8.48) преобразуем шагами Жордана— Гаусса исклю­чений. При этом на каждом шаге разрешающим может быть вы­бран любой столбец, содержащий хотя бы один положительный элемент. Строка целевой функции на выбор разрешающих столб­цов влияние не оказывает.

  3. Разрешающая строка определяется по наименьшему из отно­шений свободных членов к положительным элементам разрешаю­щего столбца.

  4. В процессе преобразований вычеркиваем строки, состоящие из одних нулей.

  5. Если в процессе преобразований встречается строка, все эле­менты которой нули, а свободный член отличен от нуля, то задача не имеет решения. Если встретится строка, в которой, кроме сво­бодного члена, других положительных элементов нет, то говорят, что задача не имеет положительных решений.

Пояснение. В п.1 алгоритма предполагается, что все элементы столбца свободных членов неотрицательны. Это требование необя­зательно. В случае когда в столбце свободных членов встречаются отрицательные числа, будем пользоваться теоремой.

Теорема. Если разрешающий элемент выбирать по наименьшему положительному симплекс-отношению, то после шага Жордана—Га­усса свободный член в разрешающей строке становится положитель­ным, а остальные члены сохраняют свой знак.

Выбор разрешающего элемента производят иначе, а именно.

  1. Просматриваем строку, соответствующую какому-либо отри­цательному свободному члену. Выбираем в ней какой-либо отри­цательный элемент — соответствующий этому элементу столбец бу­дет разрешающим.

  2. Выбор разрешающего элемента производится по минималь­ному положительному симплекс-отношению. Если задача разре­шима, то через конечное число шагов получают первое допустимое решение и можно применять симплекс-метод.

В некоторых случаях найденное таким образом первое допусти­мое решение является также и оптимальным решением.

Пример8.14. Определение опорного плана.

Дана следующая система:

(8.49)

(8.50)

Два свободных члена в системе ограничений отрицательны, по­этому перед тем, как записать задачу в виде таблицы (8.48), умно­жим соответствующие уравнения (8.49) на -1:

Запишем данную задачу в виде таблицы (8.48).

x1

x2

x3

x4

x5

Свободный член

-1

-1

1

0

4

4

-1

2

1

0

1

7

10

2

-1

0

1

1

7

10

3

-1

0

0

0

5

7

Выберем произвольно столбец с положительным элементом. Затем по минимальному положительному отношению находим раз­решающий элемент. В нашем примере он равен I и находится на пересечении столбца переменной х4 и первой строки (элемент от­мечен квадратом). Выполняя преобразования Жордана-Гаусса, по­лучим следующую таблицу:

x1

x2

x3

x4

x5

Свободный член

-1

-1

1

1

0

4

4

-1

2

1

0

1

7

10

3

0

-1

0

3

6

3

-1

0

0

0

5

7

Выполняя в дальнейшем все действия алгоритма, получим ряд следующих аналогичных таблиц:

x1

x2

x3

x4

x5

Свободный член

-1

-1

1

1

0

4

4

-4

2

0

0

4

4

3

0

-1

0

1

3

6

3

-1

0

0

0

5

7

x1

x2

x3

x4

x5

Свободный член

-1

-2

0

1

0

2

2

-2

1

1

0

0

2

2

1

1

0

0

1

5

8

3

-1

0

0

0

5

7

На данном этапе расчетов в последней таблице мы получили три нулевых столбца, что соответствует количеству ограничений в примере. Здесь необходимо закончить преобразования Жордана—Гаусса.

Запишем нашу задачу из последней таблицы так:

Получено первое допустимое решение, выделим его. Для этого положим х1, = 0; х2= 0, тогда = (0; 0; 2; 2; 5); Zmax = 5.

Задача решена.