
- •Содержание
- •Введение
- •Теоретическая часть
- •Математическая модель злп
- •1.2 Канонический вид злп
- •Матричная форма
- •Графический метод решения злп
- •Симплекс-метод решения злп
- •Двойственная задача
- •Двойственный симплекс-метод
- •Постановка задачи
- •Решение задачи аналитическим методом
- •Заключение
- •Список использованных источников
Симплекс-метод решения злп
Сформулируем ЗЛП (задачи линейного программирования) на минимум с ограничениями в виде уравнений
F = c1x1 + c2x2 + ... + cmxm → min (5)
(6)
, где i=1..n
В случае если в исходной задаче необходимо найти минимум - знаки коэффициентов целевой функции F меняются на противоположные a0,n=-a0,n. Знаки коэффициентов ограничивающих условий со знаком "≥" так же меняются на противоположные. В случае если условие содержит знак "≤" – коэффициенты запишутся без изменений.
При решении ЗЛП симплексным методом требуется, что бы система уравнений, задающих специальные ограничения задачи математического программирования была приведена к допустимому виду. Приведение к допустимому виду предполагает выражение части переменных, а именно базисных, через остальные неизвестные.
Допустимым базисом называется весь набор основных неизвестных.
Свободными называются неизвестные, которые не входят в базис.
Идея симплекс метода заключается в том, что от данного базиса перейти к другому базису с таким расчетом, чтобы значение целевой функции при этом изменилось в нужном направлении.
Способ сведения любой задачи линейного программирования к стандартной:
f(x) ≥ b f(x) ≤ b
f(x)-xe= 0 f(x)+xm=b
xe ≥ 0 xm ≥ 0
Систему ограничений и целевую функцию представляют в виде таблицы.
При составлении исходной симплекс таблицы, коэффициенты при переменных функции F записываются с противоположными знаками, а свободный член со своим знаком.
Таблица 1 – Исходные данные
|
x1 |
x2 |
... |
xn-1 |
xn |
b |
F |
-a0,1 |
-a0,2 |
... |
-a0,n-1 |
-a0,n |
-b0 |
xn+1 |
a1,1 |
a1,2 |
... |
a1,n-1 |
a1,n |
b1 |
xn+2 |
a2,1 |
a2,2 |
... |
a2,n-1 |
a2,n |
b2 |
... |
... |
... |
... |
... |
... |
... |
xn+m |
am,1 |
am,2 |
... |
am,n-1 |
am,n |
bm |
Проверка на допустимость.
Проверяем на положительность элементы столбца b (свободные члены), если среди них нет отрицательных то найдено допустимое решение (решение соответствующее одной из вершин многогранника условий) и мы переходим к шагу 2.Если в столбце свободных членов имеются отрицательные элементы то выбираем среди них максимальный по модулю - он задает ведущую строку k. В этой строке так же находим максимальный по модулю отрицательный элемент ak,l - он задает ведущий столбец - l и является ведущим элементом. Переменная, соответствующая ведущей строке исключается из базиса, переменная соответствующая ведущему столбцу включается в базис. Пересчитываем симплекс-таблицу согласно правилам.
Если же среди свободных членов есть отрицательные элементы - а в соответствующей строке - нет то условия задачи несовместны и решений у нее нет.
Если после перерасчета в столбце свободных членов остались отрицательные элементы, то переходим к снова к проверке на допустимость, если таких нет, то к проверке на оптимальность.
Проверка на оптимальность
Если среди элементов симплексной таблицы, находящихся в строке F (не беря в расчет элемент b0 - текущее значение целевой функции) нет отрицательных, то найдено оптимальное решение.
Если в строке F есть отрицательные элементы то решение требует улучшения. Выбираем среди отрицательных элементов строки F максимальный по модулю (исключая значение функции b0)
Cтолбец в котором он находится будет ведущим - k. Для того, что бы найти ведущую строку, находим отношение соответствующего свободного члена и элемента из ведущего столбца, при условии, что они неотрицательны. При ak,i > 0, bi > 0 и i - строка, для которой это отношение минимально – ключевая. Элемент ak,i - разрешающий
bi / ak,i = min {bi / ak,i} (7)
Переменная, соответствующая ведущей строке исключается из базиса, переменная соответствующая ведущему столбцу включается в базис.
Пересчитываем симплекс-таблицу согласно правилам.
Если в новой таблице после перерасчета в строке F остались отрицательные элементы повторяем проверку на оптимальность.
Если невозможно найти ключевую строку, так как нет положительных элементов в ключевом столбце, то функция в области допустимых решений задачи не ограничена - алгоритм завершает работу.
Если в строке F и в столбце свободных членов все элементы положительные, то найдено оптимальное решение.
Правила преобразований симплексной таблицы.
При составлении новой симплекс-таблицы в ней происходят следующие изменения:
вместо базисной переменной xk записываем xl; вместо небазисной переменной xl записываем xk.
ведущий элемент заменяется на обратную величину ak,l'= 1/ak,l
все элементы ведущего столбца (кроме ak,l) умножаются на -1/ak,l
все элементы ведущей строки (кроме ak,l) умножаются на 1/ak,l
оставшиеся элементы симплекс-таблицы преобразуются по формуле
ai,j'= ai,j- (ai,l*ak,j)/ ak,l (9)