МО Практ 2 Симплекс алгоритм
.docПрактическое занятие №2 (Методы оптимизации)
Симплекс алгоритм задачи линейного программирования
Симплекс метод используется для решения задач, записанных в канонической форме:
(1)
(2)
Система (1) это система линейных уравнений.
(x1,x2,…,xn) – допустимое решение задачи, если оно одновременно удовлетворяет условиям (1) и (2), т.е. является решением системы (1) и все его параметры неотрицательные. Таким образом, если допустимые решения задачи существуют, то система (1) имеет решение. Если же система (1) не имеет решения, то допустимых решений задачи нет. Однако, если система (1) имеет решения, то отсюда не следует, что у задачи есть допустимые решения, ибо они еще должны удовлетворять условием (2). Такие примеры позже будут рассмотрены.
Для того чтобы найти оптимальное решение задачи необходимо вначале убедиться, что есть допустимые решения, иначе не из чего искать наилучшее. А для того чтобы были допустимые решения, необходимо, чтобы система (1) имела решения. Поэтому нужно уметь определять если у системы (1) решения, а если есть, то находить эти решения. Кстати, если система (1) не имеет решений, то нет и допустимых и, следовательно, нет оптимального решения задачи.
Система линейных уравнений, которая имеет решения, называется совместной. Кстати, совместная система линейных уравнений, имеет либо одно решение, либо бесконечно много. Других вариантов нет.
Пусть матрица =A это матрица, состоящая из коэффициентов система линейных уравнений (1). Тогда расширенная матрица =(A | B) это матрица, состоящая из коэффициентов система линейных уравнений (1), т.е. матрица А, в которую добавили еще один столбец из значений, стоящих в правой части линейных уравнений (1).
В линейной алгебре есть такое понятие ранг матрицы, обозначаемое как rang(матрица) и представляющее собой целое число. Пусть rang(A)=r1 и rang(A|B)=r2 . Из линейной алгебры известно, что, если в матрицу добавить столбец, то ранг может либо увеличится, либо остаться без изменений, т.е. r1 r2. . Там же доказывается утверждение, что
Система совместна, если r1=r2.
Теперь научимся вычислять эти ранги матриц. Продемонстрируем на конкретном примере.
Пример 1.
,
Используя метод Гаусса-Жордана, преобразуем матрицу. Вычитаем из каждой строки, начиная со второй первую строку или первую строку, умноженную на число, так чтобы в первой колонке остались нули ниже первой строки. Далее переходим ко второй строке. Вычитаем из каждой строки, начиная с третьей вторую строку или вторую строку, умноженную на число, так чтобы во второй колонке остались нули . ниже второй строки. И так далее до тех пор пока вы не дойдете до строки, соответствующей последней колонке до вертикальной черты или доходите до строки, состоящую из нулей до вертикальной черты и все строки ниже нее состоят из нулей до вертикальной черты. Число, получившихся ненулевых строк среди строк до вертикальной черты есть ранг матрицы. Число, получившихся ненулевых строк среди всех строк есть ранг расширенной матрицы.
A = r1=rang(A)=2
(A|B) = r2=rang(A|B)=2
r1= r2, следовательно система совместна
Там же в линейной алгебре доказывается утверждение, что
Если r1< r2, то система несовместна:
Пример 2.
A = r1=rang(A)=2
(A|B) = r2=rang(A|B)=3
r1< r2, следовательно система несовместна, т.е. система уравнений примера 2 не имеет решений.
Пример 3. (Пример, когда нет допустимых решений, хотя система имеет решения)
Целевая функция имеет вид:
Z= x1 - x2 max
Уравнение x1 + x2 = -1 имеет бесконечное число решений. Но среди них либо x1<0, либо x2<0, так как два неотрицательных числа в сумме не могут равняться отрицательному. Отсюда следует, что допустимых решений нет, ибо допустимые решения – это неотрицательные решения. Итак, это пример ситуации, когда система линейных уравнений (1) имеет бесконечное число решений, но среди них нет ни одного, удовлетворяющих условию (2), условию неотрицательности решения.
Зависимые (базисные) переменные – это переменные, входящие только в одно из уравнений с коэффициентом 1, а во все остальные с коэффициентом 0. Они выражаются через свободные переменные.
Число базисных переменных равно r.
Число свободных переменных равно n-r.
Пример 4.
r=r1=r2=2
Запишем полученную систему уравнений:
Выразим базисные переменные (x1 и x2) через свободные:
Базисное решение: свободные переменные обнуляются: x3= 0, x4= 0,
тогда x1= -2 и x2= 6.
Базисная переменная x1 оказалась отрицательна, что противоречит условию, наложенному на все переменные ( ). Следовательно, решение является не допустимым.
Запишем полученную систему уравнений:
Выразим базисные переменные (x2 и x3) через свободные:
Базисное решение: свободные переменные обнуляются: x1= 0, x4= 0,
тогда x2= 2 и x3= 2.
Все переменные удовлетворяют условию , следовательно, базисное решение является допустимым. Область допустимых решений не пуста, так как существует допустимое решение.
Количество возможных базисных решений ,
в общем случае
Симплекс алгоритм
Рассмотрим пример:
Пример 1:
Целевая функция Z=x1 + x2 - x3 min
Используя метод Гаусса-Жордана преобразуем матрицу так, чтобы базисные переменные можно было выразить через свободные.
Пусть базисные переменные: x1, x2; свободные переменные: x3, x4;
Ранг матрицы: r=r1=r2=2
Число базисных переменных равно 2.
Число свободных переменных равно 2.
Запишем полученную систему уравнений:
Выразим базисные переменные через свободные:
Базисное решение: свободные переменные обнуляются: x3= 0, x4= 0,
тогда x1= и x2= - допустимое базисное решение.
В общем случае , где Z0 – решение в базисных переменных,
xk – свободные переменные, Сk – коэффициенты при свободных переменных.
Вычисляем значение целевой функции :
Z0=
Проверим решение на оптимальность. Для этого выразим целевую функцию через свободные переменные:
Z=x1 + x2 - x3=
Если все коэффициенты неотрицательны, то решение оптимально, причем если хотя бы один коэффициент равен 0, то решение не единственно (их бесконечно много), иначе решение единственное.
Если хотя бы один коэффициент отрицательный, то решение не оптимально.
В нашем примере коэффициент перед свободной переменной x3 отрицательный, следовательно, решение не оптимально.
Увеличим переменную x3, т.е. x3> 0 при x4=0 .
Посмотрим, как базисные переменные зависят от x3:
Заметим что, увеличив переменную x3 до , базисная переменная x2 обнуляется.
Пусть базисные переменные: x1, x3; свободные переменные: x2, x4.Выразим нововведенную базисную переменную через свободные:
Тогда
Базисное решение: свободные переменные обнуляются: x2= 0, x4= 0,
тогда x1= 3 и x3= - допустимое базисное решение.
Вычисляем значение целевой функции:
Z=
Выразим целевую функцию через свободные переменные:
Z=
Коэффициенты при свободных переменных положительные, т.е. решение оптимальное и единственное.
Единственное оптимальное решение:
Z*= ; x*1=3; x*2=0; x*3= ; x*4=0;
Пример 2:
Целевая функция имеет вид: Z=x4-x5 min
Заметим, что переменные x1, x2, x3 входят только в одно из уравнений с коэффициентом 1, а во все остальные - с коэффициентом 0. Возьмем их в качестве базисных и выразим через оставшиеся переменные:
Найдем начальное базисное решение: х4 = x5 =0; тогда x1=1, x2=2, x3=3.
Вычислим значение функции: Z= x4-x5=0.
Увеличим переменную x5.
Посмотрим, как базисные переменные зависят от x5:
Базисные переменные: x1, x3, x5; свободные переменные: x2, x4.Выразим нововведенную базисную переменную через свободные:
Найдем базисное решение: х2 = x4 =0; тогда x1=5, x3=1, x5=2, Z0=-2
Выразим функцию через свободные переменные:
Z= x4-x5= x4-2+ x2- 2x4= -2+ x2- x4.
Увеличим переменную x4, x2=0, тогда:
Базисные переменные: x1, x4, x5; свободные переменные: x2, x3.Выразим нововведенную базисную переменную через свободные:
Найдем базисное решение: х2 = x3 =0; тогда x1= , x4= , x5= , Z0=-
Выразим функцию через свободные переменные:
Z= x4-x5= =
Решение оптимальное и единственное:
Z*= ; x*1= ; x*2=0; x*3=0; x*4= ; x*5= ;
Пример 3. (Пример задачи в общей постановке)
Целевая функция Z=3x1+x2 max
Запишем задачу в канонической форме. Для этого в каждом неравенстве добавим дополнительную переменную, чтобы уровнять обе стороны неравенства, а в качестве целевой функции будем считать Z’= -Z:
Таким образом, получаем целевую функцию Z’=-3x1-x2 min и систему уравнений:
В качестве базисных переменных возьмем добавленные переменные и выразим их через остальные:
Найдем базисное решение: х1 = x2 =0; тогда x3= 6, x4= 8, x5= 2, Z’0=0
Выразим функцию через свободные переменные: Z’=-3x1-2x2
Увеличим х1, х2=0, тогда:
Базисные переменные х1, х3, х5; свободные переменные х2, х4:
Найдем базисное решение: х2 = x4 =0; тогда x1= 4, x3= 2, x5= 2, Z’0= -12
Выразим функцию через свободные переменные:
Z’=-3x1-2x2= =
Увеличим х2, х4=0, тогда:
Базисные переменные х1, х2, х5; свободные переменные х3, х4:
Найдем базисное решение: х3 = x4 =0; тогда x1= , x2= , x5= , Z’0= -10 - =-12
Выразим функцию через свободные переменные функции:
Z’= =
Оптимальное решение для вспомогательной задачи:
(Z’)*=-12 ; x*=( , ,0,0, )
Выпишем решение задачи для исходной задачи:
Z*= -(Z’)*= 12 ; x*=( , )
Заметим, что каждое допустимое базисное решение соответствует вершине многоугольника ОДР в графическом методе. Переход к другому базисному решению в симплекс алгоритме соответствует переходу в соседнюю вершину многоугольника ОДР в графическом методе.
Контрольные вопросы
Каноническая форма задачи ЛП.
Что означает совместная система линейных уравнений.
Сколько решений может быть у системы линейных уравнений.
Сколько решений может быть у совместной системы линейных уравнений.
Как совместность системы линейных уравнений связана с рангом.
Что такое допустимое решение канонической задачи ЛП.
Каким условиям должно удовлетворять допустимое решение канонической задачи ЛП.
Что такое базисное решение.
Что такое допустимое базисное решение.
Что такое недопустимое базисное решение.
Чему соответствует допустимое базисное решение в геометрическом представлении ОДР.
В чем суть симплекс алгоритма.
Как определяется отсутствие допустимых решений.
Как определяется оптимальность допустимого решения.
Как определяется единственность оптимального решения.
Как определяется множественность оптимальных решений.