
- •4.2. Симплекс-метод решения задач линейного программирования
- •1. Вычисление элементов новой ведущей строки.
- •Общая формулировка алгоритма решения задач линейного программирования симплекс- методом [7]
- •Еще один алгоритм решения задач лп методом симплекс-таблиц (предложенный е. С. Вентцель) [1]
- •Вырожденность
- •Альтернативные оптимальные решения
- •Неограниченные решения
- •Отсутствие допустимых решений
- •Заключение
- •Упражнения
Еще один алгоритм решения задач лп методом симплекс-таблиц (предложенный е. С. Вентцель) [1]
1. Систему уравнений-ограничений привести к единичному базису (начальному допустимому базисному решению), в котором
каждое уравнение содержит по одной такой (базисной) переменной с коэффициентом "+1", которая отсутствует во всех остальных уравнениях,
и при этом константы в правой части каждого уравнения не отрицательны.
Преобразовать целевую функцию W() в функцию только от небазисных переменных и приравнять ее нулю путем вычитания из W() всех ci i ( i не входят в базис, т.е. не являются базисными): W() – cm+1 m+1 – … – cn n = 0. Необходимо искать минимум целевой функции. Если задачей было максимизировать W(), то следует минимизировать – W().
Построить симплекс - таблицу:
Базисные
переменные
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
Найти наибольшей положительный элемент в строке симплекс-разность и выделить соответствующий ему столбец, как ведущий столбец.
Найти в этом столбце положительный элемент, отношение к которому свободного члена в одной с ним строке является минимальным. Выделить этот элемент, как ведущий элемент, а строку, в которой он находится, как ведущую строку.
Разделить все элементы ведущей строки на ведущий элемент, а все элементы ведущего столбца на минус ведущий элемент. Результаты записать в правом нижнем углу ячейки. В правом нижнем углу ячейки с ведущим элементом записать единицу, деленную на ведущий элемент.
Выделить верхние числа в ведущей строке и нижние числа в ведущем столбце. В ячейке с ведущим элементом не выделять ничего.
Для остальных ячеек, не вошедших ни в ведущую строку, ни в ведущий столбец, в правом нижнем углу записать произведение выделенных чисел, находящихся в одной строке и в одном столбце с данной ячейкой.
Построить симплекс – таблицу, поменяв местами базисную переменную в ведущей строке с небазисной переменной в ведущем столбце. Элементы ведущей строки и ведущего столбца новой симплекс – таблицы заменить числами, стоящими в правом нижнем углу ячейки, а элементы остальных строк новой симплекс – таблицы заменить суммой чисел, стоящих в верхней и нижней части ячейки.
Если все симплекс - разности станут не положительными, то решение задачи найдено. Оптимальное значение W() находится на пересечении строки «симплекс - разность» и столбца «свободные члены», а значения базисных переменных, дающих оптимальное значение целевой функции, находятся в остальных ячейках столбца «свободные члены». Не базисные переменные считаются равными 0.
В противном случае следует проверить: имеются ли в столбце с положительной симплекс – разностью положительные элементы. Если да, выполнить новую итерацию в соответствии с пунктами 410. Если нет, то в области допустимых решений целевая функция W() не ограничена. В этом случае max W() , min W() – .
Решим задачу из примера 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.
Обобщенный алгоритм определения начального допустимого базисного решения задачи ЛП без использования искусственных переменных
В качестве базисной переменной следует выбирать переменную, которая хотя бы в одном уравнении имеет такой же знак, что и правая часть уравнения. Если правая часть равна 0, то знак переменной должен быть плюс.
Выразить каждую из базисных переменных через небазисные путем решения системы линейных уравнений. Вывести свободные члены в правую часть, а остальные в левую. Свободные члены должны быть не отрицательными.
Подставить в целевую функцию значения базисных переменных, выраженные через небазисные переменные. Приравнять целевую функцию 0.
Алгоритм определения начального допустимого базисного решения задачи ЛП без использования искусственных переменных (предложенный Е.С. Вентцель) [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
Выбрать в качестве ведущей строки одну из строк с отрицательным свободным членом при условии, что в ней имеется хотя бы еще один отрицательный элемент в другом столбце. Если в строке с отрицательным свободным членом все элементы не отрицательны, то это означает, что задача ЛП не имеет допустимых решений.
Выбрать в качестве ведущего элемента любой отрицательный элемент этой строки (кроме элемента в столбце «свободные члены»).
В столбце с ведущим элементом выбрать новый ведущий элемент, имеющий знак, одинаковый со знаком свободного члена в одной строке с ним. Если таких элементов несколько, то следует выбрать элемент, отношение соответствующего свободного члена к которому минимально. Сам старый ведущий элемент также может быть выбран в качестве нового ведущего элемента, если отношение соответствующего свободного члена к нему минимально.
Поменять местами новую ведущую строку, содержащую новый ведущий элемент с новым ведущим столбцом, содержащим новый ведущий элемент по следующему правилу:
разделить все элементы ведущей строки на ведущий элемент, а все элементы ведущего столбца на минус ведущий элемент. Результаты записать в правом нижнем углу ячейки. В правом нижнем углу ячейки с ведущим элементом записать единицу, деленную на ведущий элемент;
выделить верхние числа в ведущей строке и нижние числа в ведущем столбце. В ячейке с ведущим элементом не выделять ничего;
для остальных ячеек, не вошедших ни в ведущую строку, ни в ведущий столбец, в правом нижнем углу записать произведение выделенных чисел, находящихся в одной строке и водном столбце с данной ячейкой;
переписать симплекс – таблицу поменяв местами названия новой ведущей строки и нового ведущего столбца; заменив элементы новой ведущей строки и нового ведущего столбца числами, стоящими в правом нижнем углу ячейки; заменив каждый из остальных элементов суммой чисел, стоящих в верхней и нижней части той же ячейки.
Проверить: являются ли все свободные члены не отрицательными. Если да, то допустимое базисное решение задачи ЛП найдено.
Если нет, то проверить: имеется ли в строке с отрицательным свободным членом хотя бы еще один отрицательный элемент. Если да, то перейти к пункту 3. Если в строке с отрицательным свободным членом все элементы не отрицательны, то это означает, задача ЛП не имеет допустимых решений.
Решим задачу из примера 3, пользуясь алгоритмом Е.С. Вентцель.
Максимизировать
,
Минимизировать
,
при
выполнении условий
Запишем уравнения, полученные из неравенств путем добавлений остаточной и избыточной переменной, в виде стандартной таблицы.
Базисные переменные |
1 |
2 |
Свободные члены |
S1 |
-3 |
-2 |
-6 |
s2 |
1 |
2 |
4 |
Выполним пункты 25 алгоритма. В качестве ведущего элемента выбран элемент «– 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 |
Преобразуем симплекс – таблицу в соответствии с пунктом 5 алгоритма.
Базисные переменные
S1
2
Свободные члены
1
-1/3
2/3
2
s2
1/3
4/3
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) их практическим интерпретациям применительно к реальным задачам.