Задание 5.
Дана задача линейного программирования, в которой
max f = 2x1 + 5x2
x1 ; x2 0;
Задачи, поставленные в данном задании:
Записать задачу в канонической и стандартной формах;
Записать каноническую и стандартную задачи в матричном виде;
Решить задачу линейного программирования геометрически;
Решить задачу линейного программирования симплекс-методом;
Составить двойственную задачу к первоначальной задаче и найти ее решение.
Решение:
Запись ЗЛП в канонической форме:
Для приведения задачи к канонической форме, где все ограничения имеют вид равенств, вводят дополнительные переменные xn+1, xn+2,…,xn+p , которые тоже считаются неотрицательными и записывают исходную задачу в виде
c1x1+c2x2+…+cnxn+0*xn+1+0*xn+2+…+0*xn+p => min
Введем дополнительные переменные x3, x4, x5. Переводя мах в min, запишем задачу в виде:
-2*x1 – 5*x2 + 0*x3 +0*x4 +0*x5 => min;
;
;
;
x1>0, x2>0, x3>0, x4>0, x5>0;
Запись ЗЛП в стандартной форме:
Если целевая функция в задаче линейного программирования задана в виде:
c1x1 + c2x2 +…+cnxn =>max
то, умножая её на (- 1), приведем её к виду:
(-c1)x1 +(- c2 )x2 +…+(-cn )xn =>min
Таким образом, получаем:
min f = - 2x1 - 5x2
x1 ; x2 0;
Запись канонической задачи в матричном виде:
Найти минимальное значение функции f(x) = CX, при условиях ,
где C = (-2; -5; 0; 0; 0) – вектор – строка коэффициентов при переменных.
X = (x1, x2, x3, x4, x5 ), Х ≥ 0
A = (aij)m*n – матрица размерности m*n, столбцами которой являются вектор-столбцы Aj.
A = ;B = ;
Запись стандартной задачи в матричном виде:
Найти максимальное значение функции f(x) = CX,
при условиях AX ≤ B ,
где C = (-2; -5), X = (x1, x2), Х≥0,
A = ; B =;
Решение ЗЛП графическим методом.
max f = 2x1 + 5x2
Построим ОДР, т.е. решим графически систему неравенств. Для этого построим каждую прямую и определим полуплоскости, заданные неравенствами (полуплоскости обозначены штрихом).
Так как xi0, то рассмотрим только первую координатную четверть.
Определяем полуплоскости, задаваемые неравенствами. Для этого в неравенства подставляем координаты любой точки, не лежащей на соответствующей прямой. Если неравенство верное, то штрихуем в сторону выбранной точки. В результате построений получаем многоугольник B0EIB4(рис. 1).
Построим прямую, отвечающую значению функции f = 0.
2x1 + 5x2= 0
Вектор-градиент, составленный из коэффициентов целевой функции, указывает направление максимизации f(X). Начало вектора – точка (0; 0), конец – точка (2; 5).
Будем двигать эту прямую(перпендикулярную к вектору – градиенту), параллельным образом. Так как ищется максимальное значение целевой функции f(x), поэтому двигаем прямую до последнего касания области B0EIB4.
Максимального значения целевая функция достигает в точке I. Точка I получена, в результате пересечения прямых (2) и (3), находим ее координаты, решая систему уравнений:
Решив систему уравнений, получим: x1 = 4, x2= 5
Можно найти максимальное значение целевой функции:
fmax(x) = 2*4 + 5*5 = 33
Решить задачу линейного программирования симплекс-методом
Решим прямую задачу линейного программирования симплексным методом, с использованием симплексной таблицы.
Поскольку в правой части присутствуют отрицательные значения, умножим соответствующие строки на (-1).
Определим максимальное значение целевой функции
f(x) = 2x1 + 5x2
при следующих условиях-ограничений.
Перейдем к канонической форме записи ЗЛП и составим матрицу коэффициентов.
Матрица коэффициентов A = a(ij) имеет вид:
A =
Базисные переменные это переменные, которые входят только в одно уравнение системы ограничений и притом с единичным коэффициентом.
Решим систему уравнений относительно базисных переменных: x3, x4, x5
Полагая, что свободные переменные равны 0, получим первый опорный план:
x1= (0,0,8,4,5)
Базисное решение называется допустимым, если оно неотрицательно.
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x3 |
8 |
1 |
-2 |
1 |
0 |
0 |
x4 |
4 |
1 |
0 |
0 |
1 |
0 |
x5 |
5 |
0 |
1 |
0 |
0 |
1 |
f(x0) |
0 |
-2 |
-5 |
0 |
0 |
0 |
Алгоритм симплекс-метода.
Итерация №0.
1. Проверка критерия оптимальности.
Текущий опорный план не оптимален, так как в индексной строке находятся отрицательные коэффициенты.
2. Определение новой базисной переменной.
В качестве ведущего выберем столбец, соответствующий переменной x2, так как это наибольший коэффициент по модулю.
3. Определение новой свободной переменной. Вычислим значения Di по строкам как частное от деления: bi / ai2 и из них выберем наименьшее:
min (- , - , 5 / 1) = 5
Следовательно, 3-ая строка является ведущей.
Разрешающий элемент равен (1) и находится на пересечении ведущего столбца и ведущей строки.
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
min |
x3 |
8 |
1 |
-2 |
1 |
0 |
0 |
- |
x4 |
4 |
1 |
0 |
0 |
1 |
0 |
- |
x5 |
5 |
0 |
1 |
0 |
0 |
1 |
5 |
f(x1) |
0 |
-2 |
-5 |
0 |
0 |
0 |
0 |
4. Пересчет симплекс-таблицы.
Формируем следующую часть симплексной таблицы. Вместо переменной x5 в план 1 войдет переменная x2.
Строка, соответствующая переменной x2 в плане 1, получена в результате деления всех элементов строки x5 плана 0 на разрешающий элемент РЭ=1. На месте разрешающего элемента в плане 1 получаем 1.
В остальных клетках столбца x2. плана 1 записываем нули. Таким образом, в новом плане 1 заполнены строка x2. и столбец x2..
Все остальные элементы нового плана 1, включая элементы индексной строки, определяются по правилу прямоугольника.
Для этого выбираем из старого плана четыре числа, которые расположены в вершинах прямоугольника и всегда включают разрешающий элемент РЭ.
НЭ = СЭ - (А*В)/РЭ СТЭ - элемент старого плана, РЭ - разрешающий элемент (1), А и В - элементы старого плана, образующие прямоугольник с элементами СТЭ и РЭ. Представим расчет каждого элемента в виде таблицы:
B |
x1 |
x2 |
x3 |
x4 |
x5 |
8-(5 • -2)/1 |
1-(0 • -2)/1 |
-2-(1 • -2)/1 |
1-(0 • -2)/1 |
0-(0 • -2)/1 |
0-(1 • -2)/1 |
4-(5 • 0)/1 |
1-(0 • 0)/1 |
0-(1 • 0)/1 |
0-(0 • 0)/1 |
1-(0 • 0)/1 |
0-(1 • 0)/1 |
5 / 1 |
0 / 1 |
1 / 1 |
0 / 1 |
0 / 1 |
1 / 1 |
0-(5 • -5)/1 |
-2-(0 • -5)/1 |
-5-(1 • -5)/1 |
0-(0 • -5)/1 |
0-(0 • -5)/1 |
0-(1 • -5)/1 |
Получаем новую симплекс-таблицу:
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x2 |
18 |
1 |
0 |
1 |
0 |
2 |
x4 |
4 |
1 |
0 |
0 |
1 |
0 |
x5 |
5 |
0 |
1 |
0 |
0 |
1 |
F(X1) |
25 |
-2 |
0 |
0 |
0 |
5 |
Итерация №1.
1. Проверка критерия оптимальности.
Текущий опорный план не оптимален, так как в индексной строке находятся отрицательные коэффициенты.
2. Определение новой базисной переменной.
В качестве ведущего выберем столбец, соответствующий переменной x1, так как это наибольший коэффициент по модулю.
3. Определение новой свободной переменной. Вычислим значения Di по строкам как частное от деления: bi / ai1 и из них выберем наименьшее:
min (18 / 1 , 4 / 1 , - ) = 4
Следовательно, 2-ая строка является ведущей.
Разрешающий элемент равен (1) и находится на пересечении ведущего столбца и ведущей строки.
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
min |
x2 |
18 |
1 |
0 |
1 |
0 |
2 |
18 |
x4 |
4 |
1 |
0 |
0 |
1 |
0 |
4 |
x5 |
5 |
0 |
1 |
0 |
0 |
1 |
- |
f(x2) |
25 |
-2 |
0 |
0 |
0 |
5 |
0 |
4. Пересчет симплекс-таблицы.
Формируем следующую часть симплексной таблицы. Вместо переменной x4 в план 2 войдет переменная x1
Строка, соответствующая переменной x1 в плане 2, получена в результате деления всех элементов строки x4 плана 1 на разрешающий элемент РЭ=1
На месте разрешающего элемента в плане 2 получаем 1. В остальных клетках столбца x1 плана 2 записываем нули.
Таким образом, в новом плане 2 заполнены строка x1 и столбец x1.
Все остальные элементы нового плана 2, включая элементы индексной строки, определяются по правилу прямоугольника.
Получаем новую симплекс-таблицу:
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x2 |
14 |
0 |
0 |
1 |
-1 |
2 |
x4 |
4 |
1 |
0 |
0 |
1 |
0 |
x1 |
5 |
0 |
1 |
0 |
0 |
1 |
f(x2) |
33 |
0 |
0 |
0 |
2 |
5 |
1. Проверка критерия оптимальности.
Среди значений индексной строки нет отрицательных. Поэтому эта таблица определяет оптимальный план задачи.
Окончательный вариант симплекс-таблицы:
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x2 |
14 |
0 |
0 |
1 |
-1 |
2 |
x4 |
4 |
1 |
0 |
0 |
1 |
0 |
x1 |
5 |
0 |
1 |
0 |
0 |
1 |
f(x3) |
33 |
0 |
0 |
0 |
2 |
5 |
Ответ:
Оптимальное значение функции
fmax(x)= 2•4 + 5•5 = 33 достигается в точке с координатами:
x1 = 4, x2 = 5 x3 = 14 x4 = 0 x5 = 0
Составить двойственную задачу к первоначальной задаче и найти ее решение.
Рассмотрим задачу в стандартной форме:
max f = 2x1 + 5x2
x1 0; x2 0 ;
До множим уравнение (1)на (-1)
Так как исходная задача была на максимум, двойственная задача будет на
минимум, причем коэффициенты при переменных в целевой функции
соответствуют правым частям ограничений, число переменных равно числу
ограничений исходной задачи и равно трем.
min f* = 8*y1 + 4*y2 + 5*y3
Строим ограничения, транспонируя матрицу коэффициентов в ограничениях.
A = ;AT =
Так как все переменные были неотрицательны, все ограничения будут иметь знаки . Правые части ограничений – это коэффициенты при переменных в исходной
целевой функции.
y1 0; y2 0; y3 0;
Решение двойственной задачи найдем с помощью теорем двойственности.
По первой теореме двойственности:
Если одна из задач двойственной пары имеет оптимальный план, то и другая имеет оптимальный план и значения целевых функций задач при их оптимальных планах равны между собой, т. е. Fmax = F*min
max f = min f* = 33
Используем вторую теорему двойственности: так как в оптимальном решении исходной задачи x1 ≠0 и x2 ≠0, то на оптимальном решении двойственной задачи первое и второе ограничения двойственной задачи выполняется как равенство. Подставим xопт в ограничения исходной задачи, получим, что первое ограничение выполняется как строгое неравенство, значит y1 = 0. Получаем систему:
; ;
Решение двойственной задачи: yопт =(0; 2; 5), min f* = 33