- •Содержание
- •Введение
- •Линейное программирование
- •1.1. Метод Жордана-Гаусса
- •1.2. Преобразование однократного замещения
- •1.3. Симплексные преобразования
- •1.4. Основные формы записи задач линейного программирования
- •1.5. Графический метод решения задач линейного программирования
- •1.6. Симплексный метод решения задач линейного программирования
- •1.7. Теория двойственности
- •1.8. Транспортная задача
- •Практикум
- •Вопросы для подготовки к экзамену
- •Список рекомендуемой литературы
1.6. Симплексный метод решения задач линейного программирования
Рассмотрим следующую задачу линейного программирования
Прежде чем решать задачу симплексным методом, надо проверить, что правые части системы ограничений неотрицательны, т.е.
.
Если это не так, то в соответствующем
ограничении меняем знак.Далее исходную задачу надо записать в канонической форме, если она не имеет такой формы записи. Для этого каждое ограничение неравенство вида
надо превратить в равенство добавлением
дополнительной неотрицательной
(балансовой) переменной, а каждое
ограничение
неравенство вида
превратить в равенство вычитанием
балансовой переменной. Таким образом,
все ограничения в задаче будут уравнения
с неотрицательными правыми частями.Далее систему уравнений при помощи симплексных преобразований надо привести к единичному базису, т.е. найти исходное опорное решение
.Для того, чтобы проверить будет ли это решение оптимальным, надо составить оценочную строку ( строку) по следующему правилу:
,
где
искомый элемент Z
строки;
столбец коэффициентов целевой функции
при базисных переменных;
столбец коэффициентов при неизвестном
;
столбец свободных членов;
скалярное произведение указанных
столбцов – векторов;
коэффициент целевой функции при
неизвестном
Для задачи на максимум.
Если в Z
строке все элементы положительные
,
то найдено оптимальное решение
.
Если же в Z
строке есть хоть один отрицательный
элемент, то найденное решение не
оптимально. Есть возможность его
улучшения. Для этого среди отрицательных
элементов Z
строки находим минимальный (например,
).
Столбец с номером p
становится разрешающим. Разрешающую
строку выбираем по симплексным
преобразованиям (для этого в симплексной
таблице заводится последний столбец).
В столбце с номером p
в качестве разрешающего элемента берется
положительный элемент, если он один.
Если в этом столбце положительных
элементов несколько, то берется тот из
них, для которого отношение свободных
членов к этим положительным элементам
будет наименьшее. Если в столбце с
номером p вообще нет
положительных элементов, то задача не
имеет оптимального решения и
.
После того, как разрешающий элемент
найден, производим расчеты по методу
Гаусса, включая и элементы Z
строки. Получаем новое опорное решение.
После этого возвращаемся к началу пункта
5.
Для задачи на минимум. Если в Z строке все элементы
,
то найдено оптимальное решение
.
Если же в Z
строке есть хоть один положительный
элемент, то найденное решение не
оптимально. Для улучшения решения среди
положительных элементов
строки находим максимальный (например,
). Столбец с номером q
становится разрешающим. Разрешающую
строку ищем по симплексным преобразованиям
(смотреть задачу на максимум.) Если в
столбце с номером q
нет положительных элементов, то задача
не имеет оптимального решения и
.
После того, как разрешающий элемент
выбран, выполняем расчеты по методу
Гаусса, включая и элементы
строки, и получаем новое опорное решение.
Переходим к началу пункта 6. Процесс
продолжается до тех пор, пока не будет
найдено оптимальное решение или мы не
убедимся, что его нет.
Пример 7. Решить задачу линейного программирования симплексным методом
Решение:
Приведем задачу к каноническому виду.
Для этого в левую часть каждого неравенства
типа
добавляем
новые дополнительные переменные
,
,
(новые балансовые переменные). Таким
образом, задача примет вид
Составляем симплекс таблицу.
-
базис
7
-5
10
0
0
0
0
12
2
-2
3
1
0
0
–
0
2
-1
1
-1
0
1
0
2:1=2 – min
0
24
2
1
2
0
0
1
24:1=24
0
-7
5
-10
0
0
0
16
0
0
1
1
2
0
2
-1
1
-1
0
1
0
22
3
0
3
0
-1
1
-10
-2
0
-5
0
-5
0
Так как есть исходное опорное решение,
то составляем оценочную
строку
по следующему правилу:
.
Так как среди
есть одно положительное число, то
столбик, в котором содержится этот
элемент, выбираем в качестве разрешающего.
Разрешающий элемент выбираем по методу
минимального элемента (
).
Далее вычисления производим по методу Жордана-Гаусса.
Так как все
,
то найденное решение оптимально, при
этом
,
.
Исходная задача имела три переменных,
поэтому в ответе в оптимальном решении
последние три дополнительные переменные
не записываем.
Ответ:
,
.
Пример 8. Решить задачу линейного программирования симплексным методом
Решение:
Приведем задачу к каноническому виду:
Составляем симплекс таблицу.
|
базис |
|
3 |
-1 |
-4 |
0 |
0 |
|
|
|
|
|
|
|
|||
|
|
1 |
0 |
- |
1 |
1 |
0 |
– |
|
|
2 |
-5 |
1 |
1 |
0 |
0 |
2:1=2 – min |
|
|
3 |
-8 |
1 |
2 |
0 |
-1 |
3:1=3 |
|
|
3 |
-5 |
0 |
2 |
1 |
0 |
3:2=1,5 |
|
|
2 |
-5 |
1 |
1 |
0 |
0 |
2:1=2 |
|
|
1 |
- 3 |
0 |
1 |
0 |
-1 |
1:1=1– min |
0 |
|
1 |
1 |
0 |
0 |
1 |
2 |
1:1=1 |
-1 |
|
1 |
-2 |
1 |
0 |
0 |
1 |
– |
-4 |
|
1 |
-3 |
0 |
1 |
0 |
-1 |
– |
|
|
-5 |
1 |
0 |
0 |
0 |
3 |
|
|
|
1 |
1 |
0 |
0 |
1 |
2 |
|
|
|
3 |
0 |
1 |
0 |
2 |
5 |
|
|
|
4 |
0 |
0 |
1 |
4 |
5 |
|
|
|
-16 |
0 |
0 |
0 |
-11 |
-19 |
|
Ответ:
,
.

1
1