- •Методические указания и примеры решения задач контрольной работы по мпур Графическое решение задачи лп
- •Симплекс-метод решения задачи линейного программирования
- •Динамическое программирование
- •Понятие об игровых моделях.
- •Методы и модели решения игровых задач Принцип минимакса
- •Решения игр в смешанных стратегиях
- •Геометрический метод
- •Исключение доминируемых стратегий
- •Решение игры симплекс-методом
- •Метод линейного программирования
- •Игровые модели в условиях риска
- •Игры с природой
- •Биматричные игры
Симплекс-метод решения задачи линейного программирования
Пример.
Решить задачу линейного программирования симплекс-методом.
Рассмотрим однородную задачу ЛП:
(1)
Добавив к левым
частям системы неравенств соответствующие
балансовые переменные
преобразуем задачу (1) в каноническую
форму:
(2)
Для удобства и единообразия запишем определение целевой функции в виде уравнения:
(3)
Запишем (2) и (3) в виде первой симплекс таблицы:
-
0
1
1
1
0
0
8
0
- 2
3
0
1
0
9
(4)
0
2
- 1
0
0
1
10
1
- 4
- 3
0
0
0
- 1
Первые три строки
таблицы (4) содержат, по сути, расширенную
матрицу системы линейных уравнений
(2), к которой слева приписан столбец
переменной
.
Последняя строка, называемая индексной,
содержит уравнение (3). Буквой
,
как обычно, обозначен столбец свободных
членов. Отметим, что таким образом
составленная таблица (4) называется
симплексной, поскольку задача (2) имеет
симплексную форму. Напомним, что это
означает, что, во-первых, матрица системы
(и таблица (4)) содержат т базисных
столбцов (столбцы
),
где т - число уравнений (в данном случае
);
во-вторых, все элементы столбца свободных
членов неотрицательны (это числа 8, 9 и
10), кроме, возможно, элемента индексной
строки; в- третьих, целевая функция
зависит только от свободных переменных
(
и
).
Последнее верно, поскольку в базисных
столбцах (
)
в индексной строке находятся только
нули. Первая симплекс-таблица (4) определяет
первое опорное решение. Напомним, что
опорное решение является допустимым
базисным решением, и, следовательно,
свободные переменные
и
равны нулю:
и
.
Далее, переменная
определяется первой строкой таблицы
(4), которая является сокращённой записью
первого уравнения системы (2). При
оно принимает вид:
Вторая строка
таблицы определяет переменную
Третья строка
определяет
:
Значение целевой
функции определяем по индексной строке:
В дальнейшем мы
покажем, что оптимальное решение
канонической задачи ЛП является опорным,
и, следовательно, его следует искать
среди опорных решений. Симплекс-таблица
(4) и дает одно из таких решений. Как
проверить, является ли оно оптимальным?
Оказывается, просто. Как мы увидим далее,
если коэффициенты
целевой функции
канонической
задачи ЛП неположительные:
,-
и функция
зависит только от свободных переменных,
то соответствующее опорное решение
является оптимальным.
Но условие
означает, что коэффициенты индексной
строки, стоящие в столбцах свободных
переменных, должны быть неотрицательны:
поскольку индексная строка соответствует
уравнению:
,
- и содержит коэффициенты
с противоположным знаком.
Мы видим, что в
таблице (4) условие неотрицательности
всех элементов индексной строки
(разумеется, кроме правой части
,
стоящей в столбце свободных членов) не
выполнено. Более того, оба столбца
свободных переменных
и
содержат в индексной строке отрицательные
элементы: - 4 и -3, - соответственно.
Выберем любой из
этих столбцов, например, первый и назовем
его ведущим.
Определим для каждого
так называемое допустимое отношение
следующим образом. Если в
- ой строке ведущего
столбца стоит неположительный элемент,
то положим
если же этот элемент
то положим
,
где
- номер ведущего
столбца.
В нашем случае
и допустимые отношения
соответственно
равны:
Добавим к симплекс-таблице (4) столбец :
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
0 |
0 |
8 |
8 |
|
0 |
- 2 |
3 |
0 |
1 |
0 |
9 |
|
(5) |
0 |
2 |
- 1 |
0 |
0 |
1 |
10 |
5 |
|
1 |
- 4 |
- 3 |
0 |
0 |
0 |
- 1 |
|
|
В таблице (5) отрицательный элемент – 4 ведущего столбца взят в рамочку, для того чтобы выделить ведущий столбец. Можно, разумеется, выделить этот столбец и любым другим разумным образом: цветом, шрифтом и т.п.
Среди всех допустимых
отношений
найдем наименьшее:
.
Наименьшее
допустимое отношение соответствует
третьей строке таблицы, которую мы
теперь объявляем ведущей
строкой. На пересечении ведущей
строки и ведущего
столбца стоит ключевой
элемент таблицы. В нашем случае это
Выделим в таблице (5) минимальное
допустимое отношение и ключевой
элемент, рамочкой:
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
0 |
0 |
8 |
8 |
|
0 |
- 2 |
3 |
0 |
1 |
0 |
9 |
|
(6) |
0 |
2 |
- 1 |
0 |
0 |
1 |
10 |
5
=
|
|
1 |
- 4 |
- 3 |
0 |
0 |
0 |
- 1 |
|
|
Дальнейшая наша цель состоит в том, чтобы преобразовать методом Гаусса таблицу (6) в новую симплекс-таблицу, первый столбец который стал бы базисным, содержащим число 1 в ведущей (третьей) строке.
Вначале разделим ведущую строку на ключевой элемент:
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
0 |
0 |
8 |
|
|
|
0 |
- 2 |
3 |
0 |
1 |
0 |
9 |
|
(7) |
|
0 |
1 |
|
0 |
0 |
|
5 |
|
|
|
1 |
- 4 |
- 3 |
0 |
0 |
0 |
- 1 |
|
|
|
В таблице (7) мы не заполняем столбец , поскольку он нужен, только для того, чтобы определить ведущую строку, что мы уже сделали. Мы выделили только ключевой элемент, так как он определяет одновременно и ведущую строку (третью) и ведущий столбец (первый).
Проделаем теперь следующие преобразования Гаусса:
вычтем из первой строки ведущую (третью) строку;
прибавим ко второй строке ведущую, умноженную на 2;
прибавим к индексной строке ведущую, умноженную на 4.
В итоге получим новую таблицу:
|
|
|
|
|
|
|
|
|
|
0 |
0 |
|
1 |
0 |
|
3 |
|
|
|
0 |
0 |
2 |
0 |
1 |
1 |
19 |
|
(8) |
|
0 |
1 |
|
0 |
0 |
|
5 |
|
|
|
1 |
0 |
- 5 |
0 |
0 |
2 |
19 |
|
|
|
Нетрудно видеть,
что мы получили симплекс-таблицу.
Действительно, в таблице (8) после
перестановки столбца
со столбцом
в последних трех столбцах получается
единичная матрица; столбец свободных
членов неотрицателен; целевая функция
зависит только от свободных переменных
и
Отметим, что столбец , став базисным, вытеснил «из базиса» столбец . В силу этого обстоятельства проделанный процесс называют операцией однократного замещения. В данном случае эта операция состояла из последовательности элементарных преобразований Гаусса 1), 2) и 3).
Таким образом,
получена вторая симплекс-таблица (8),
которой соответствует второе опорное
решение. Переменные
и
- свободные и, следовательно,
и
.
Поскольку первое уравнение имеет вид.
то значение базисной
переменной
равно
3:
.
Базисная переменная
определяется вторым уравнением:
а базисная переменная определяется третьим уравнением (так как в столбце единица стоит в третьей строке):
Итак,
,
- второе опорное решение. Новое значение
целевой функции
определяется индексной строкой:
Это опорное решение также не является оптимальным, что следует из того, что в индексной строке таблицы (8) имеется отрицательный элемент (-5) во втором столбце, который мы выберем теперь в качестве ведущего столбца. Затем найдем ведущую строку с минимальным допустимым отношением и ключевой элемент:
|
|
|
|
|
|
|
|
|
0 |
0 |
|
1 |
0 |
|
3 |
2
|
|
0 |
0 |
2 |
0 |
1 |
1 |
19 |
9,5 |
(9) |
0 |
1 |
|
0 |
0 |
|
5 |
|
|
1 |
0 |
- 5 |
0 |
0 |
2 |
19 |
|
|
Разделим ведущую
строку (первую) на ключевой
элемент
:
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
0 |
|
2 |
|
|
0 |
0 |
2 |
0 |
1 |
1 |
19 |
(10) |
|
0 |
1 |
|
0 |
0 |
|
5 |
|
|
1 |
0 |
- 5 |
0 |
0 |
2 |
19 |
|
|
Выполним теперь следующие преобразования Гаусса:
вычтем из второй строки первую, умноженную на 2;
прибавим к третьей строке первую, умноженную на
;прибавим к индексной строке первую, умноженную на 5. В результате получим третью симплекс-таблицу:
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
0 |
|
2 |
|
|
0 |
0 |
0 |
|
1 |
|
15 |
(11) |
|
0 |
1 |
0 |
|
0 |
|
6 |
|
|
1 |
0 |
0 |
|
0 |
|
29 |
|
|
Ей соответствует третье опорное решение:
- и значение целевой
функции
.
Поскольку индексная
строка таблицы (11) не содержит отрицательных
элементов, полученное опорное решение
будет оптимальным:
и
(12)
При этом
Здесь мы звездочками помечаем оптимальные
значения переменных.
Таким образом, задача (2), а с ней и задача (1) решены.
Решение транспортной задачи методом потенциалов
Пример.
bj ai |
150 |
130 |
150 |
140 |
200 |
7
|
8
|
1
|
2
|
180 |
4
|
5
|
9
|
8
|
190 |
9
|
2
|
3
|
6
|
1. Проверим, является ли данная задача замкнутой.
Подсчитаем
суммарные запасы груза и суммарные
потребности заказчиков
,
.
Поскольку
,
модель транспортной задачи замкнутая,
и задача имеет оптимальный план.
2. Построим первый опорный план транспортной задачи методом северо-западного угла.
Начинаем заполнение распределительной таблицы с верхней левой клетки, то есть построение исходного опорного плана начинаем с удовлетворения потребностей первого потребителя b1 за счет запасов первого поставщика a1. Для этого сравниваем запас a1 = 200 с потребностями b1 = 150. Так как a1 > b1, то потребности b1 полностью удовлетворяем за счет a1, и в первую клетку помещаем min (200, 150)=150. У первого поставщика осталось 50 единиц груза. Так как потребности первого получателя груза полностью удовлетворены, исключим из рассмотрения первый столбец, заполнив в нем оставшиеся клетки точками. Далее заполняем таблицу по строкам слева направо и сверху вниз. Следующая самая верхняя левая незаполненная клетка – (1,2). Потребителю b2 поставляем 50 единиц груза, оставшихся у первого поставщика. Поскольку от первого поставщика весь груз вывезен, заполняем оставшиеся клетки первой строки точками. Второму получателю, пока что, недопоставлено 80 единиц груза. Следующая незаполненная клетка – (2,2). Потребителю b2 отправляем недостающие 80 единиц груза, при этом его потребности полностью удовлетворены, поэтому оставшиеся клетки во втором столбце заполняем точками. У второго поставщика a2 осталось еще 100 единиц груза. Аналогичным образом заполняем оставшиеся клетки, пока не удовлетворим всех потребителей и не вывезем все запасы груза у поставщиков.
bj ai |
150 |
130 |
150 |
140 |
200 |
7 150 |
8 50 |
1 * |
2 * |
180 |
4 * |
5 80 |
9 100 |
8 * |
190 |
9 * |
2 * |
3 50 |
6 140 |
В результате распределения груза получим первый опорный план, в котором x11 = 150, x12 = 50, x22 = 80, x23 = 100, x33 = 50, x34 = 140. Эти переменные соответствуют заполненным клеткам и являются базисными, остальные переменные, соответствующие клеткам с точками, являются свободными (значения свободных переменных равны нулю). Первый опорный план можно представить в матричном виде
Число заполненных клеток k = 6. Это число должно равняться рангу системы ограничений r = m + n – 1 = 3 + 4 – 1 = 6. Так как k = r = 6, то построенный план является невырожденным. Подсчитаем затраты на перевозку по этому плану
.
3. Построим первое опорное решение транспортной задачи методом минимальной стоимости (минимального тарифа).
bj ai |
150 |
130 |
150 |
140 |
200 |
7 * |
8 * |
1 150 |
2 50 |
180 |
4 150 |
5 * |
9 * |
8 30 |
190 |
9 * |
2 130 |
3 * |
6 60 |
Найдем клетку с минимальным тарифом. Это клетка (1,3) с тарифом
c13 =1. Построение исходного опорного плана начинаем с занесения поставки груза в клетку с наименьшей стоимостью c13. Заполняем клетку x13 = 150. Оставшиеся клетки третьего столбца заполняем точками, так как потребности третьего получателя полностью удовлетворены. У первого поставщика осталось 50 единиц груза. Ищем следующую клетку с минимальным тарифом. Таких клеток две: c14 =2, c32 =2. Заполним сначала клетку (3,2). Поставим в нее x32=min (190, 130)=130. Второй столбец заполняем точками. У третьего поставщика осталось 60 единиц груза. Ищем следующую клетку с наименьшим тарифом – это клетка (1,4). В нее помещаем 50 единиц груза, min(50,140)=50. Первую строку заполняем точками, так как от первого поставщика вывезен весь груз. Четвертому получателю недопоставлено 90 единиц. Аналогичным образом распределяем весь имеющийся груз и получаем первый опорный план перевозок.
Подсчитаем затраты на перевозку по этому плану.
.
Итак, в каждой строке и в каждом столбце таблицы заполнена хотя бы одна клетка, циклов по заполненным клеткам нет, число заполненных клеток m+n-1=6, следовательно, план опорный и невырожденный.
4. Проверка первого опорного плана (решения) на оптимальность. Метод потенциалов
После построения
исходного опорного плана приступаем к
проверке его на оптимальность методом
потенциалов, который заключается в
последовательном улучшении опорных
планов транспортной задачи на основе
информации, полученной с помощью чисел,
называемых потенциалы поставщиков
и потребителей
(
,
- двойственные переменные, то есть
переменные задачи, двойственной к
транспортной). Потенциалы находим из
условия
,
где cij
- тарифы
заполненных клеток. Будем проверять на
оптимальность первый опорный план,
построенный методом минимального
тарифа. В двойственной задаче одна
свободная переменная, поэтому возьмем
одну любую из двойственных переменных
и приравняем ее к нулю. Возьмем,
например,
(выгоднее
брать в качестве нулевой переменной
ту, которая соответствует строке или
столбцу с наибольшим количеством
заполненных клеток).
В таблице в дополнительном столбце справа помещаем потенциалы отправителей , а в строке снизу – потенциалы получателей. Составим систему уравнений для определения потенциалов:
Из этой системы находим
bj ai |
150 |
130 |
150 |
140 |
|
200 |
7 * |
8 * |
1 150 |
2 50 |
|
180 |
4 150 |
5 * |
9 * |
8 30 |
|
190 |
9 * |
2 130 |
3 * |
6 60 |
|
|
|
|
|
|
|
Считаем оценки для свободных клеток:
Запишем получившиеся оценки в левом верхнем углу свободных клеток.
bj ai |
150 |
130 |
150 |
140 |
|
200 |
9>0 7 * |
10>0 8 * |
1 150 |
2 50 |
=2 |
180 |
4 150 |
1>0 5 * |
2>0 9 * |
8 30 |
=8 |
190 |
7>0 9 * |
2 130 |
-2<0 3 * |
6 60 |
=6 |
|
|
|
|
|
|
Так как среди
оценок
имеются отрицательные
,
то данный план не является оптимальным.
Его можно улучшить перераспределением
поставок. Для этого выбираем свободную
клетку с наименьшим отрицательным
значением
(наибольшим
по абсолютной величине). В данном случае
это клетка (3,3).
bj ai |
150 |
130 |
150 |
140 |
|
200 |
7 * |
8 * |
1 150-- |
2 50+ |
=2 |
180 |
4 150 |
5 * |
9 * |
8 30 |
=8 |
190 |
9 * |
2 130 |
3 * + |
6 60-- |
=6 |
|
|
|
|
|
|
Сроим цикл пересчета, начиная с клетки (3,3), в которую нужно поместить поставку груза (её отмечают знаком «+»), и двигаясь по занятым клеткам (в данном случае это клетки (3,4), (1,4), (1,3)), поочередно отмечая их знаками «-», «+». Если в клетку (3,3) добавили + , то в смежных по циклу клетках необходимо вычесть для сохранения баланса перевозок по третьей строке и третьему столбцу. Звенья цикла должны быть параллельны строкам или столбцам таблицы, причем в каждой вершине цикла встречаются ровно два звена, одно из которых находится в строке, а другое – в столбце. Количество вершин в цикле должно быть четно. В результате построения цикла в соответствующих строках и столбцах должно быть парное количество знаков «-», «+».
Определяем величину
поставки
в клетку (3,3),
как минимальную величину из поставок,
стоящих в отрицательных клетках, то
есть
.
Перераспределяем по циклу поставки на
величину
.
Значение
записываем в
незанятую клетку (3,3), отмеченную знаком
«+», двигаясь по циклу, прибавляем эту
величину к поставкам в клетках со знаком
«+», вычитаем в клетках со знаком «-».
В результате получаем новое опорное решение или новый опорный план, в котором клетки с грузом, равным величине , становятся свободными.
bj ai |
150 |
130 |
150 |
140 |
200 |
7 * |
8 * |
1 90 |
2 110 |
180 |
4 150 |
5 * |
9 * |
8 30 |
190 |
9 * |
2 130 |
3 60 |
6 * |
Если освобождается больше одной клетки, то есть число заполненных клеток меньше числа m + n - 1, то такой план называется вырожденными, и для определения потенциалов необходимо ввести недостающее количество нулевых элементов в число основных базисных переменных. Свободные клетки заполняют нулевыми поставками так, чтобы они не образовывали цикл по заполненным клеткам, и чтобы в каждой строке и в каждом столбце находилась хотя бы одна заполненная клетка. Проверим новый опорный план на оптимальность. Пусть =0. Тогда найдем все остальные потенциалы, рассматривая только заполненные клетки и помня, что для них , то есть что сумма потенциалов должна быть равна тарифу, стоящему на пересечении соответствующих потенциалам строки и столбца.
bj ai |
150 |
130 |
150 |
140 |
|
200 |
7 * |
8 * |
1 90 |
2 110 |
=0 |
180 |
4 150 |
5 * |
9 * |
8 30 |
=6 |
190 |
9 * |
2 130 |
3 60 |
6 * |
=2 |
|
|
|
|
|
|
Число заполненных
клеток k=m+n-1,
следовательно, план невырожденный.
Найдем оценки
для
всех клеток с точками, где стоят свободные
переменные. Данный опорный план не
является оптимальным, так как не все
оценки для свободных клеток
,
а именно,
.
bj ai |
150 |
130 |
150 |
140 |
|
200 |
9>0 7 * |
8>0 8 * |
1 90 |
2 110 |
=0 |
180 |
4 150 |
-1<0 5 * |
2>0 9 * |
8 30 |
=6 |
190 |
9>0 9 * |
2 130 |
3 60 |
2>0 6 * |
=2 |
|
|
|
|
|
|
Возьмем клетку (2,2) за начало цикла пересчета. Цикл будет проходить по клеткам (2,2), (3,2), (3,3), (1,3), (1,4), (2,4) и опять вернется в (2,2).
bj ai |
150 |
130 |
150 |
140 |
|
200 |
9>0 7 * |
8>0 8 * |
1
90- |
2 110++ |
=0 |
180 |
4 150 |
-1<0 5 * |
2>0 9 * |
8 30- |
=6 |
190 |
9>0 9 * |
2 1 |
3 60+ |
2>0 6 * |
=2 |
|
|
|
|
|
|
Ищем количество
единиц груза
,
перераспределяемых по циклу пересчета,
как минимум по клеткам, помеченных
знаком минус.
Получаем новый опорный план
bj ai |
150 |
130 |
150 |
140 |
200 |
7 * |
8 * |
1 60 |
2 140 |
180 |
4 150 |
5 30 |
9 * |
8 * |
190 |
9 * |
2 100 |
3 90 |
6 * |
Проверяем данный опорный план на оптимальность
bj ai |
150 |
130 |
150 |
140 |
|
200 |
8>0 7 * |
8>0 8 * |
1 60 |
2 140 |
=0 |
180 |
4 150 |
5 30 |
3>0 9 * |
1>0 8 * |
=5 |
190 |
8>0 9 * |
2 100 |
3 90 |
2>0 6 * |
=2 |
|
|
|
|
|
|
Полученный опорный план является оптимальным, так как все оценки для свободных клеток . Выписываем оптимальный план: x11 = 0; x12 = 0; x13 = 60; x14 =140; x21 = 150; x22 = 30; x23 = 0; x24 = 0; x31 = 0; x32 = 100; x33 = 90; x34 = 0. Или в матричной форме
Высчитываем минимальные затраты на транспортировку продукции:

+
30-