Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники ТПР / Учебник ТПР_4.2.doc
Скачиваний:
199
Добавлен:
17.06.2016
Размер:
2.38 Mб
Скачать

Еще один алгоритм решения задач лп методом симплекс-таблиц (предложенный е. С. Вентцель) [1]

1. Систему уравнений-ограничений привести к единичному базису (начальному допустимому базисному решению), в котором

  • каждое уравнение содержит по одной такой (базисной) переменной с коэффициентом "+1", которая отсутствует во всех остальных уравнениях,

  • и при этом константы в правой части каждого уравнения не отрицательны.

  1. Преобразовать целевую функцию W() в функцию только от небазисных переменных и приравнять ее нулю путем вычитания из W() всех ci i ( i не входят в базис, т.е. не являются базисными): W() – cm+1 m+1 – … – cn n = 0. Необходимо искать минимум целевой функции. Если задачей было максимизировать W(), то следует минимизировать – W().

  2. Построить симплекс - таблицу:

    Базисные

    переменные

    m+1

    j

    n

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

    Симплекс-разность

    cm+1

    cn

    0

    1

    a1 m+1

    a1 j

    a1n

    b1

    i

    ai m+1

    aij

    ain

    bi

    m

    am m+1

    amj

    amn

    bm

  3. Найти наибольшей положительный элемент в строке симплекс-разность и выделить соответствующий ему столбец, как ведущий столбец.

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

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

  6. Выделить верхние числа в ведущей строке и нижние числа в ведущем столбце. В ячейке с ведущим элементом не выделять ничего.

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

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

  9. Если все симплекс - разности станут не положительными, то решение задачи найдено. Оптимальное значение W() находится на пересечении строки «симплекс - разность» и столбца «свободные члены», а значения базисных переменных, дающих оптимальное значение целевой функции, находятся в остальных ячейках столбца «свободные члены». Не базисные переменные считаются равными 0.

  10. В противном случае следует проверить: имеются ли в столбце с положительной симплекс – разностью положительные элементы. Если да, выполнить новую итерацию в соответствии с пунктами 410. Если нет, то в области допустимых решений целевая функция W() не ограничена. В этом случае max W() , min W() – .

Решим задачу из примера 1, пользуясь алгоритмом Е.С. Вентцель.

Эта задача в стандартной форме записывается так:

максимизировать

минимизировать

при ограничениях

  1. Приведем целевую функцию к виду, удобному для записи в симплекс – таблицу и заполним ее

Базисные переменные

1

2

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

Симплекс-разность

5

-5/6

4

-10/3

0

-20

s1

6

1/6

4

4/6

24

4

s2

1

-1/6

2

-2/3

6

-4

s3

–1

1/6

1

2/3

1

4

s4

0

0

1

0

2

0

2. Преобразуем симплекс – таблицу в соответствии с алгоритмом. Минимум W() не найден.

Базисные переменные

s1

2

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

Симплекс-разность

-5/6

1/12

2/3

-1/2

-20

-1

1

1/6

1/12

2/3

-1/2

4

-1

s2

-1/6

-1/8

4/3

3/4

2

3/2

s3

1/6

5/24

5/3

-5/4

5

-5/2

s4

0

1/8

1

-3/4

2

-3/2

3. Преобразуем симплекс – таблицу в соответствии с алгоритмом. Минимум W() найден.

Базисные переменные

s1

s2

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

Симплекс-разность

-3/4

-1/2

-21

1

1/4

-1/2

3

2

-1/8

3/4

3/2

s3

3/8

-5/4

5/2

s4

1/8

-3/4

1/2

Алгоритм построения начального допустимого базисного решения задачи линейного программирования [19]

Допустимым начальным базисным решением задачи ЛП называется система линейных уравнений, каждое уравнение которой содержит по одной такой переменной с коэффициентом "+1", которая отсутствует во всех остальных уравнениях, и при этом константы в правой части каждого уравнения не отрицательны.

В примере 1 при начальном допустимом базисном решении гарантировалось, что все последующие базисные решения, получаемые при выполнении симплекс-метода, также будут допустимыми. В задачах линейного программирования, где все ограничения являются неравенствами типа "" (с не отрицательной правой частью), дополнительные (остаточные) переменные позволяют сформировать начальное допустимое базисное решение. Естественно, возникает вопрос: как найти начальное допустимое базисное решение в задачах ЛП, где есть ограничения в виде равенств или неравенств типа ""?

Наиболее общим способом построения начального допустимого базисного решения задачи ЛП является использование искусственных переменных. Эти переменные в пер­вой итерации играют роль дополнительных остаточных переменных, но на последующих итерациях от них освобождаются. Разработано два тесно связанных между собой метода нахождения начального решения, которые используют искусственные переменные: М-метод (который также называют методом больших штрафов) и двухэтапный метод.

М-метод построения начального допустимого базисного решения задачи ЛП с использованием искусственных переменных

Пусть задача ЛП записана в стандартной форме. Для любого равенства i, в котором не содержится дополнительная остаточная переменная, введем искусственную перемен­ную Ri, которая далее войдет в начальное базисное решение. Но поскольку эта перемен­ная искусственна (другими словами, не имеет никакого "физического смысла" в данной задаче), необходимо сделать так, чтобы на последующих итерациях она обратилась в нуль. Для этого в выражение целевой функции вводят штраф.

Переменная Ri, с помощью достаточно большого положительного числа М, штрафу­ется путем ввода в целевую функцию выражения – МRi в случае максимизации целевой функции и выражения + МRi в случае минимизации. Вследствие этого штрафа естест­венно предположить, что процесс оптимизации симплекс-метода приведет к нулевому значению переменной Ri.

Поясним детали этого метода на примере.

Пример 2.

Минимизировать при выполнении условий

Стандартная форма этой задачи получается в результате добавления дополнительной (избыточной) переменной во второе неравенство и дополнительной (остаточной) переменнойв третье неравенство. Эта задача в стандартной форме будет записана следующим образом.

Минимизировать при выполнении условий

В полученной задаче первое и второе уравнения не имеют дополнительных (остаточных) переменных, которые можно ввести в базисное решение. Поэтому введем в эти уравнения искусственные переменные R1 и R2, а в целевую функцию добавим штраф МR1 + МR2. В результате получим следующую задачу ЛП.

Минимизировать при выполнении условий

В этой модифицированной задаче переменные R1, R2 и можно использовать в качестве начального допустимого базисного решения.

В результате получим следующую симплекс-таблицу.

Базис

R1

R2

Решение

W() = z

– 4

– 1

0

M

M

0

0

R1

3

1

0

1

0

0

3

R2

4

3

– 1

0

1

0

6

1

2

0

0

0

1

4

Прежде чем применять симплекс-метод, надо согласовать значения в z-строке с остальной частью таблицы. В частности, значение функции z, соответствующее на­чальному базисному решению R1 = 3, R2 = 6 и = 4, должно равняться 3М+ 6М+ 0 = 9М, а не 0, как показано в таблице. Это несоответствие связано с тем, что переменным R1 и R2 соответствуют ненулевые коэффициенты (– M, M) в строке z (сравните с начальным решением в примере 1, где дополнительным перемен­ным соответствуют нулевые коэффициенты в z-строке). Чтобы сделать эти коэффи­циенты нулевыми, следует умножить элементы строк R1 и R2 на величину М, и затем сложить эти строки с z-строкой. (Обратите внимание на "подсвеченные" единицы в этих строках – если бы эти коэффициенты были отличны от единиц, то необходимо было бы сначала разделить все элементы этих строк на данные коэффициенты.) Кратко это действие можно записать следующим образом.

Новая z-строка = Старая z-строка + МR1-строка + МR2-строка

Выполним эту операцию в данном примере.

Старая z-строка: (– 4 – 1 0 – М М 0 | 0)

+ МR1-строка: (ЗМ М 0 М 0 0 | 3М)

+ МR2-строка: (4М 3М М 0 М 0 | 6М)

= Новая 2-строка: (– 4 + 7М – 1 + 4ММ 0 0 0 | 9М)

Измененная симплекс-таблица примет следующий вид.

Базис

1

2

3

R1

R2

4

Решение

W() = z

– 4 + 7M

– 1 + 4M

M

0

0

0

9 M

R1

3

1

0

1

0

0

3

R2

4

3

– 1

0

1

0

6

4

1

2

0

0

0

1

4

Отметим, что теперь z = 9М, что соответствует базисному решению R1 =3, R2 = 6 и = 4.

Последняя таблица готова к применению симплекс-метода с использованием ус­ловий оптимальности и допустимости. Поскольку мы минимизируем целевую функ­цию, находим наибольший положительный коэффициент в z-строке. Наибольший коэффициент – 4 + 7М соответствует переменной , которая и будет вводимой. Ус­ловие допустимости указывает на переменнуюR1 в качестве исключаемой.

Поскольку вводимая и исключаемая переменные определены, новую симплекс-таблицу можно вычислить с помощью метода Гаусса - Жордана. Заметим, что вы­числения в z-строке, где присутствует М, следует проводить алгебраически. Так, для получения новой z-строки надо новую ведущую строку умножить на – (– 4 + 7М) и сложить с текущей z-строкой. В результате получим следующую таблицу.

Базис

1

2

3

R1

R2

4

Решение

W()= z

0

(1 + 5M)/3

M

(4 – 7M)/3

0

0

4 + 2M

1

1

1/3

0

1/3

0

0

1

R2

0

5/3

– 1

– 4/3

1

0

2

4

0

5/3

0

– 1/3

0

1

3

Отметим, что уже первая итерация исключила из базисного решения искусст­венную переменную R1, что является результатом включения штрафа в целевую функцию.

Последняя таблица показывает, что следующими, вводимой и исключаемой, переменными будут 2 и R2 соответственно. Ведущий элемент равен 5/3. Вычислим новую симплекс-таблицу с помощью метода Гаусса - Жордана.

Новая ведущая строка = Текущая ведущая строка / Ведущий элемент.

Новая строка = Текущая строка – Ее коэффициент в ведущем столбце Но­вая ведущая строка.

Так, для получения новой z-строки надо новую ведущую строку умножить на – (1 + 5М)/3 и сложить с текущей z-строкой.

Для получения новой 1-строки надо новую ведущую строку умножить на –1/3 и сложить с текущей 1-строкой.

Для получения новой 4-строки надо новую ведущую строку умножить на –5/3 и сложить с текущей 4-строкой.

В результате получим следующую таблицу.

Базис

1

2

3

R1

R2

4

Решение

W()= z

0

0

1/5

8/5 – M

– 1/5 – M

0

18/5

1

1

0

1/5

3/5

– 1/5

0

3/5

2

0

1

– 3/5

– 4/5

3/5

0

6/5

4

0

0

1

1

– 1

1

1

Поскольку в z-строке еще имеется положительный коэффициент при единственной переменной 3, то в соответствии с условием оптимальности эта переменная должна стать вводимой в базис. Исключаемой из базиса в соответствии с условием допустимости станет переменная 4, т. к. отношение значе­ния правой части ограничения к положительному коэффициенту ведущего столбца ми­нимально именно для этой переменной, а не для переменной 1. Так как < .

Таким образом, вводимой и исключаемой, переменными будут 4 и 3 соответственно. Ведущий элемент равен 1. Вычислим новую симплекс-таблицу с помощью метода Гаусса - Жордана.

Новая ведущая строка = Текущая ведущая строка / Ведущий элемент.

Новая строка = Текущая строка – Ее коэффициент в ведущем столбце Но­вая ведущая строка.

Так, для получения новой z-строки надо новую ведущую строку умножить на –1/5 и сложить с текущей z-строкой.

Для получения новой 1-строки надо новую ведущую строку умножить на –1/5 и сложить с текущей 1-строкой.

Для получения новой 2-строки надо новую ведущую строку умножить на 3/5 и сложить с текущей 2-строкой.

В результате получим следующую таблицу.

Базис

1

2

3

R1

R2

4

Решение

W()= z

0

0

0

7/5 – M

M

– 1/5

17/5

1

1

0

0

2/5

0

– 1/5

2/5

2

0

1

0

– 1/5

0

3/5

9/5

3

0

0

1

1

– 1

1

1

В данной задаче оптималь­ным решением будет 1 = 2/5, 2 = 9/5, 3 = 1 и W() = z = 17/5.

Конечно, для получения оптимального решения иногда может потребоваться гораздо больше двух итераций.

При использовании М-метода следует обратить внимание на следующие два обстоятельства.

1. Использование штрафа М может и не привести к исключению искусственной пе­ременной в конечной симплекс - итерации. Если исходная задача линейного про­граммирования не имеет допустимого решения (например, система ограничений несовместна), тогда в конечной симплекс - итерации, по крайней мере, одна искус­ственная переменная будет иметь положительное значение. Это "индикатор" того, что задача не имеет допустимого решения.

2. Теоретически применение М-метода требует, чтобы М. Однако с точки зре­ния компьютерных вычислений величина М должна быть конечной и, вместе с тем, достаточно большой. Как понимать термин "достаточно большая величина" – это от­крытый вопрос. Величина М должна быть настолько большой, чтобы исполнять роль "штрафа", но не слишком большой, чтобы не уменьшить точность вычисле­ний. На практике вы должны помнить о возможных ошибках машинного округле­ния при выполнении вычислений, в которых совместно участвуют как большие, так и малые числа. Эту проблему иллюстрирует следующий пример.

Пример 3.

Рассмотрим следующую задачу.

Максимизировать при выполнении условий

Проведем два эксперимента для демонстрации влияния величины М на резуль­тат вычислений симплекс-метода.

Эксперимент 1

С помощью программы ТОRА найдите решение симплекс-методом поставлен­ной задачи при М=10 и повторите вычисления при М= 999999. При первом зна­чении величины М получим правильное решение: 1= 1 и 2= 1,5. Тогда как во втором случае получим явно неверное решение: 1= 4, 2 = 0.

Эксперимент 2

Умножив целевую функцию на 1000, получим новую целевую функцию W()=2001 + 5002. Решим эту задачу при М=10 и М= 999999. Теперь именно вто­рое значение М обеспечивает нахождение правильного решения.

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

Двухэтапный метод построения начального допустимого базисного решения задачи ЛП с использованием искусственных переменных

Пример 3 демонстрирует проблемы, которые могут возникнуть при М-методе вслед­ствие ошибок округления. Двухэтапный метод полностью лишен тех недостатков, которые присущи М-методу. Как следует из названия этого метода, процесс решения задачи ЛП разби­вается на два этапа. На первом этапе ведется поиск начального допустимого базисного реше­ния. Если такое решение найдено, то на втором этапе решается исходная задача.

Этап 1. Задача ЛП записывается в стандартной форме, а в ограничения добав­ляются необходимые искусственные переменные (как и в М-методе) для получения начального базисного решения. Решается задача ЛП миними­зации суммы искусственных переменных с исходными ограничениями. Если минимальное значение этой новой целевой функции больше нуля, значит, исходная задача не имеет допустимого решения, и процесс вы­числений заканчивается. (Напомним, что положительные значения ис­кусственных переменных указывают на то, что исходная система огра­ничений несовместна.) Если новая целевая функция равна нулю, пере­ходим ко второму этапу.

Этап 2. Оптимальное базисное решение, полученное на первом этапе, использу­ется как начальное допустимое базисное решение исходной задачи.

Пример 4. К задаче из примера 2 применим двухэтапный метод.

Этап 1. Минимизировать r = R1 + R2 с ограничениями

3 1+ 2+ R1=3,

4 1+3 2 3 + R2=6,

1 + 2 2 + 4 = 4,

1, 2, 3, 4, R1, R2  0.

Соответствующая таблица имеет следующий вид.

Базис

1

2

3

R1

R2

4

Решение

r

0

0

0

– 1

– 1

0

0

R 1

3

1

0

1

0

0

3

R 2

4

3

– 1

0

1

0

6

4

1

2

0

0

0

1

4

Как и в М-методе, сначала вычисляется новая r-строка.

Старая r-строка: (0 0 0 –1 –1 0 | 0)

+ 1  R 1-строка: (3 1 0 1 0 0 | 3)

+ 1  R 2-строка: (4 3 –1 0 1 0 | 6)

= Новая r-строка: (7 4 –1 0 0 0 | 9)

Новая r-строка r + 7 1 + 4 2 – 0 3 + 0R1 + 0R2 = 9 используется для решения задачи первого этапа, что приведет к следующему оптимальному решению (проверьте самостоятельно).

Базис

1

2

3

R1

R2

4

Решение

r

0

0

0

– 1

– 1

0

0

1

1

0

1/5

3/5

– 1/5

0

3/5

2

0

1

– 3/5

– 4/5

3/5

0

6/5

4

0

0

1

1

– 1

1

1

Поскольку минимум функции r = 0 достигнут, значит, на первом этапе получено допус­тимое базисное решение 1= 3/5, 2=6/5 и 3=1. Искусственные переменные полностью выполнили свою "миссию", поэтому из последней таблицы можно удалить их столбцы. Переходим ко второму этапу.

Этап 2. После удаления искусственных переменных исходная задача будет записана следующим образом:

Минимизировать при выполнении условий

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

Базис

1

2

3

4

Решение

W() = z

–4

–1

0

0

0

1

1

0

1/5

0

3/5

2

0

1

– 3/5

0

6/5

4

0

0

1

1

1

Поскольку базисные переменные 1 и 2 имеют ненулевые коэффициенты в z-строке, эту строку следует преобразовать.

Старая z-строка: (–4 –1 0 0 | 0)

+4 1-строка: (4 0 4/5 0 | 12/5)

+1 2-строка: (0 1 –3/5 0 | 6/5)

= Новая z-строка: (0 0 1/5 0 | 18/5)

Начальная таблица второго этапа примет следующий вид:

Базис

1

2

3

4

Решение

W() = z

0

0

1/5

0

18/5

1

1

0

1/5

0

3/5

2

0

1

– 3/5

0

6/5

4

0

0

1

1

1

Так как решается задача минимизации, следует ввести переменную 3 в базис. Применение алгоритма симплекс-метода уже на следующей итерации приведет к оптимальному решению (проверьте!).

Удаление искусственных переменных в конце первого этапа имеет смысл только то­гда, когда все они являются небазисными (как в примере 3). Однако возможна ситуа­ция, когда в конце первого этапа искусственные переменные останутся в базисе, но бу­дут иметь нулевые значения. В этом случае такие переменные при необходимости будут формировать часть начального базисного решения для второго этапа. При этом необхо­димо так изменить вычисления, выполняемые на втором этапе, чтобы искусственные пе­ременные никогда не смогли принять положительные значения ни в каких итерациях симплекс-метода.

Существует простое правило, которое гарантирует, что нулевая базисная искусственная переменная на втором этапе никогда не станет положительной.

  • Если в ведущем столбце ко­эффициент, соответствующий нулевой базисной искусственной переменной, положителен, тогда ведущий элемент определяется автоматически (поскольку ему соответствует мини­мальное отношение, равное нулю) и искусственная переменная на следующей итерации становится небазисной.

  • Если ведущий элемент равен нулю, следующая итерация оставляет искусственную переменную нулевой.

  • И, наконец, рассмотрим отрицательный ведущий эле­мент. В этом случае минимальное отношение не ассоциируется с базисной (нулевой) ис­кусственной переменной. Если минимальное отношение будет положительным, то на сле­дующей итерации искусственная переменная примет положительное значение (обоснуйте это утверждение). Чтобы исключить эту возможность, мы принуждаем искусственную пе­ременную всегда оставаться в базисном решении. Поскольку искусственная переменная равна нулю, ее удаление из базисного решения не влияет на то, будет ли допустимым ре­шение из оставшихся в базисе переменных. (Было бы полезно для читателя рассмотреть все описанные случаи с помощью симплекс-таблиц.)

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

Пример 5. Максимизировать

при ограничениях

Начальное базисное решение найти двухэтапным методом.

Приведем задачу к стандартной форме, введя одну остаточную 6, одну избыточную 5 и две искусственных переменных R1 и R2. Найдем искусственное начальное решение двухэтапным методом. Для этого нужно минимизировать r = R1 + R2 при ограничениях

Базис

1

2

3

4

5

6

R1

R2

Решение

r

0

0

0

0

0

0

-1

-1

0

R1

1

1

0

0

0

0

1

0

20

R2

0

1

0

2

-1

0

0

1

5

6

-1

-1

1

0

0

1

0

0

8

Сначала вычислим новую r-строку:

Старая r-строка: (0 0 0 0 0 0 -1 -1 | 0)

+1 R1-строка: (1 1 0 0 0 0 1 0 | 20)

+1 R2-строка: (0 1 0 2 -1 0 0 1 | 5)

= Новая r-строка: (1 2 0 2 -1 0 0 0 | 25)

Новая r-строка r = 1 + 2 2 + 2 4 5 + 0R1 + 0R2 = 25.

Базис

1

2

3

4

5

6

R1

R2

Решение

r

1

2

0

2

-1

0

0

0

25

R1

1

1

0

0

0

0

1

0

20

R2

0

1

0

2

-1

0

0

1

5

6

-1

-1

1

0

0

1

0

0

8

Базис

1

2

3

4

5

6

R1

R2

Решение

r

1

1

0

0

0

0

0

-1

20

R1

1

1

0

0

0

0

1

0

20

4

0

1/2

0

1

-1/2

0

0

1/2

5/2

6

-1

-1

1

0

0

1

0

0

8

Базис

1

2

3

4

5

6

R1

R2

Решение

r

0

0

0

0

0

0

-1

-1

0

1

1

1

0

0

0

0

1

0

20

4

0

1/2

0

1

-1/2

0

0

1/2

5/2

6

0

0

1

0

0

1

0

0

28

После удаления искусственных переменных исходная задача будет записана:

Максимизировать

при ограничениях

Базис

1

2

3

4

5

6

Решение

W()

-2

0

0

1

0

0

0

1

1

1

0

0

0

0

20

4

0

1/2

0

1

-1/2

0

5/2

6

0

0

1

0

0

1

28

Заметим, что после первого этапа базисные переменные 1 и 4 имеют не нулевые коэффициенты в W()-строке.

Эту строку следует преобразовать.

Старая W()-строка: (-2 0 0 1 0 0 | 0)

+2 1-строка: (2 2 0 0 0 0 | 40)

–1 4-строка: (0 -1/2 0 -1 1/2 0 | -5/2)

= Новая r-строка: (0 3/2 0 0 1/2 0 | 37,5)

Базис

1

2

3

4

5

6

Решение

W()

0

3/2

0

0

1/2

0

37,5

1

1

1

0

0

0

0

20

4

0

1/2

0

1

-1/2

0

5/2

6

0

0

1

0

0

1

28

Поскольку в W()-строка все элементы не отрицательны, то максимум целевой функции найден (сразу же после получения искусственного начального решения без применения итераций метода симплекс – таблиц)

Ответ: максимум W()=37,5 при 1=20, 4 = 5/2, 6 = 28, 2 = 3 = 5 =0.

Обобщенный алгоритм определения начального допустимого базисного решения задачи ЛП без использования искусственных переменных

  1. В качестве базисной переменной следует выбирать переменную, которая хотя бы в одном уравнении имеет такой же знак, что и правая часть уравнения. Если правая часть равна 0, то знак переменной должен быть плюс.

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

  3. Подставить в целевую функцию значения базисных переменных, выраженные через небазисные переменные. Приравнять целевую функцию 0.

Алгоритм определения начального допустимого базисного решения задачи ЛП без использования искусственных переменных (предложенный Е.С. Вентцель) [1]. Применим, когда ограничения заданы неравенствами вида .

  1. Записать уравнения в виде стандартной таблицы. Если в столбце свободные члены не имеется отрицательных элементов, значит допустимое базисное решение задачи ЛП уже найдено (т. е. знак и перед базисной переменной, и перед свободным членом в ее уравнении должен быть «+»).

    Базисные

    переменные

    m+1

    j

    n

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

    1

    a1 m+1

    a1 j

    a1n

    b1

    i

    ai m+1

    aij

    ain

    bi

    m

    am m+1

    amj

    amn

    bm

  2. Выбрать в качестве ведущей строки одну из строк с отрицательным свободным членом при условии, что в ней имеется хотя бы еще один отрицательный элемент в другом столбце. Если в строке с отрицательным свободным членом все элементы не отрицательны, то это означает, что задача ЛП не имеет допустимых решений.

  3. Выбрать в качестве ведущего элемента любой отрицательный элемент этой строки (кроме элемента в столбце «свободные члены»).

  4. В столбце с ведущим элементом выбрать новый ведущий элемент, имеющий знак, одинаковый со знаком свободного члена в одной строке с ним. Если таких элементов несколько, то следует выбрать элемент, отношение соответствующего свободного члена к которому минимально. Сам старый ведущий элемент также может быть выбран в качестве нового ведущего элемента, если отношение соответствующего свободного члена к нему минимально.

  5. Поменять местами новую ведущую строку, содержащую новый ведущий элемент с новым ведущим столбцом, содержащим новый ведущий элемент по следующему правилу:

  • разделить все элементы ведущей строки на ведущий элемент, а все элементы ведущего столбца на минус ведущий элемент. Результаты записать в правом нижнем углу ячейки. В правом нижнем углу ячейки с ведущим элементом записать единицу, деленную на ведущий элемент;

  • выделить верхние числа в ведущей строке и нижние числа в ведущем столбце. В ячейке с ведущим элементом не выделять ничего;

  • для остальных ячеек, не вошедших ни в ведущую строку, ни в ведущий столбец, в правом нижнем углу записать произведение выделенных чисел, находящихся в одной строке и водном столбце с данной ячейкой;

  • переписать симплекс – таблицу поменяв местами названия новой ведущей строки и нового ведущего столбца; заменив элементы новой ведущей строки и нового ведущего столбца числами, стоящими в правом нижнем углу ячейки; заменив каждый из остальных элементов суммой чисел, стоящих в верхней и нижней части той же ячейки.

  1. Проверить: являются ли все свободные члены не отрицательными. Если да, то допустимое базисное решение задачи ЛП найдено.

Если нет, то проверить: имеется ли в строке с отрицательным свободным членом хотя бы еще один отрицательный элемент. Если да, то перейти к пункту 3. Если в строке с отрицательным свободным членом все элементы не отрицательны, то это означает, задача ЛП не имеет допустимых решений.

Решим задачу из примера 3, пользуясь алгоритмом Е.С. Вентцель.

Максимизировать ,

Минимизировать ,

при выполнении условий

  1. Запишем уравнения, полученные из неравенств путем добавлений остаточной и избыточной переменной, в виде стандартной таблицы.

Базисные переменные

1

2

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

S1

-3

-2

-6

s2

1

2

4

Выполним пункты 25 алгоритма. В качестве ведущего элемента выбран элемент «– 3», т. к. отношение свободного члена именно к нему минимально (– 6/– 3=2, а 4/1=4. 2<4).

Базисные переменные

1

2

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

S1

-3

-1/3

-2

2/3

-6

2

s2

1

1/3

2

-2/3

4

-2

  1. Преобразуем симплекс – таблицу в соответствии с пунктом 5 алгоритма.

    Базисные переменные

    S1

    2

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

    1

    -1/3

    2/3

    2

    s2

    1/3

    4/3

    2

  2. Поскольку все свободные члены не отрицательны, то допустимое базисное решение задачи ЛП найдено. В стандартной форме оно будет записано:

Решим эту задачу методом симплекс – таблиц (по Е.С. Вентцель)

Базисные переменные

S1

2

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

Симплекс-разность

1/15

-11/120

11/30

-11/40

-0,4

-11/20

1

-1/3

-1/6

2/3

-1/2

2

-1

s2

1/3

1/4

4/3

3/4

2

3/2

Базисные переменные

S1

s2

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

Симплекс-разность

-3/120

-11/40

-19/20

1

-1/2

-1/2

1

2

1/4

3/4

3/2

Таким образом, максимум целевой функции =19/20=0,95 достигается при значениях 1=1, 2= 1,5, удовлетворяющих ограничениям

Особые случаи применения симплекс-метода

В этом вопросе рассмотрим четыре особых случая, встречающихся при использова­нии симплекс-метода [19].

  1. Вырожденность.

  2. Альтернативные оптимальные решения.

  3. Неограниченные решения.

  4. Отсутствие допустимых решений.

При изучении этих случаев основное внимание мы уделим (1) теоретическому обос­нованию причин, приводящих к таким ситуациям, и (2) их практическим интерпретаци­ям применительно к реальным задачам.

Соседние файлы в папке Учебники ТПР