Системный анализ и исследование операций. Теория принятия решений
.pdfВматрице ∆(k ) отмечаем элементы, соответствующие базисным
вновом решении (на рисунке помечены символом « »), максимальную оценку отмечаем особо. Далее строим цепочку выделения. Она строится с особо отмеченного элемента, который соединяют с отмеченными
вэтой строке. Затем отмеченные элементы, попавшие в цепочку, соединяют с отмеченными в их столбцах. Далее снова проводим соединение по строкам, итакдо тех пор, поканеоборвутся всеветви.
Элементы, попавшие в цепочку выделения, выделяют строку
истолбец за исключением особо отмеченного элемента – он выделяет только строку. К выделенным столбцам прибавляем, а из выде-
ленных строк вычитаем ∆kr , в результате получаем матрицу ∆(k+1).
|
|
|
* * |
|
|
|
|
( k ) |
|
|
|
= |
|
* |
|
∆ |
|
||
|
|
* |
|
+∆kr +∆kr
|
|
|
−∆ |
|
|
|
kr |
|
|
−∆ |
|
|
|
kr |
|
∆kr |
* |
−∆kr ∆(k+1) |
|
* |
|
|
−∆ |
|
|
||
|
* |
kr |
+∆kr
Можно вместо построения цепочки выделения вычеркивать строку, где есть максимальный элемент, и затем вычеркивать столбцы, где есть элементы, отмеченные символом « » в вычеркнутой строке, и т.д. Вычеркнутые строкиистолбцы являются выделенными.
Продолжим решение. Как следует из анализа матрицы ∆(I), решение x(I) не является оптимальным. Следующее решение получаем с помощью цикла, построенного на клетке (2,4), имеющей максимальную оценку. Перемещая по циклу θ0 = min(5,15) =5, получаем
|
|
0 |
0 |
0 |
10 |
||||
Х |
(II) |
|
20 |
5 |
|
0 |
|
5 |
|
|
= |
|
|
. |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
30 |
|
|
|||
|
|
|
10 |
В новом плане перевозок транспортные затраты
L(II) =180 −5 3 =165
31
Используя полученный план, преобразуем матрицы ∆(I) в матрицу оценок ∆(II). Результат представлен ниже.
|
|
|
|
|
|
|
|
|
|
|
|
−6 |
|
−8 −6 0 |
−3 |
||||
(II) |
|
|
0 |
|
|
|
|
−3. |
|
∆ |
= |
0 |
|
−3 0 |
|||||
|
|
−5 |
|
|
|
|
|
|
−3 |
|
|
|
|||||||
|
|
|
3 |
|
0 |
0 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
+3 |
|
|
+3 +3 |
|
|
Из анализа этой матрицы следует, что план X (II) не является оптимальным. Находим в матрице ∆(II) максимальный элемент, и на соответствующей этому элементу клетке в X (II) строим цикл пересчета.
Вычисляем по нечетным клеткам цикла θ0 = min(5,10) =5 и, перемещая полученное значение по циклу пересчета, приходим к сле-
дующему плану перевозок: |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
10 |
|
Х |
(III) |
|
20 |
0 |
0 |
|
|
= |
10 . |
||||
|
|
|
0 |
5 |
30 |
|
|
|
|
5 |
По этому плану значение критерия L(III) =165 −5 3 =150. Для выяснения статуса нового плана находим соответствующую ему матрицу оценокпутемпреобразованияматрицы∆(II), врезультатеимеем
|
|
−11 |
−6 |
|
−6 |
0 |
|||
|
0 |
−3 |
−3 |
|
∆(III) = |
0 . |
|||
|
−5 |
0 |
0 |
|
|
0 |
|||
|
|
|
|
|
Матрица |
∆(III) |
не содержит положительных оценок, следова- |
тельно, план |
X (III) |
является оптимальным. Согласно этому плану, |
от 1-го поставщика надо поставить 10 ед. продукции 4-му потребителю, от 2-го поставщика – 20 ед. направить 1-му и 10 ед. – 4-му потребителям, от 3-го поставщика 5, 30 и 5 ед. – соответственно 2-му, 3-му и 4-му потребителям.
32
Контрольные вопросы к транспортной задаче
1.Что такое базисное решение задачи ЛП?
2.Сколько оптимальных решений имеет задача?
3.Чему равна размерность базиса в транспортной задаче?
4.Какнесбалансированную задачу привести к сбалансированной?
5.Как строится цикл пересчета?
6. К чему приведет перемещение по циклу, построенному на клетке с отрицательной оценкой?
7.В чем состоит признак оптимальности транспортной задачи?
8.Как интерпретировать результаты решения в случае несбалансированной задачи?
Второе задание. Решить задачу целочисленного программирования методом ветвей и границ. Корневую задачу решить симплексметодом, остальные графически. Построить дерево решений.
Для выполнения этого задания следует проработать материал гл. 7 в источнике [3], особенно подразд. 7.1 и 7.3, там же приведены примеры решения задач.
Обратите внимание, что каждая задача из дерева решений решается как непрерывная, т.е. без требования целочисленности. При поиске оптимального решения графическим методом надо выделить допустимую область решаемой задачи и на ней с помощью линии уровня критерия определить оптимальную вершину. По уравнениям границ, пересечение которых образует найденную вершину, находятся координаты вершины, т.е. значения переменных, а по ним – значение критерия (оценки).
Варианты задания
|
L = 7x1 + 4x2 → max |
|
L = 2x1 + 3x2 → min |
|
№ 1 |
4x1 + x2 ≤ 14 |
№ 2 |
7x1 + 20x2 ≥ 140 |
|
3x1 + 2x2 ≤ 12 |
2x1 + x2 ≥ 18 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L =6x1 + 4x2 → min |
|
L = 6x1 + 9x2 → max |
|
№ 3 |
4x1 + 2x2 ≥ 7 |
№ 4 |
5x1 + 7x2 ≤ 35 |
|
x1 – x2 ≤ 1 |
4x1 + 9x2 ≤ 36 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
33
|
L = 4x1 + 4x2 → max |
|
L = 2x1 + 7x2 → max |
|
№ 5 |
3x1 + 2x2 ≤ 10 |
№ 6 |
4x1 + 5x2 ≤ 20 |
|
x1 + 2x2 ≤ 9 |
– x1 + 2x2 ≤ 1 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = 6x1 + 9x2 → max |
|
L = –2x1 – 3x2 → min |
|
№ 7 |
8x1 + 18x2 ≤ 72 |
№ 8 |
5x1 + 7x2 ≤ 35 |
|
5x1 + 7x2 ≤ 35 |
4x1 + 9x2 ≤ 36 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = 9x1 + 12x2 → max |
|
L = x1 + x2 → min |
|
№ 9 |
14x1 + 9x2 ≤ 51 |
№ 10 |
2x1 + 4x2 ≥ 7 |
|
– 6x1 + 3x2 ≤ 1 |
10x1 + 3x2 ≥ 15 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = 6x1 + 8x2 → max |
|
L = 9x1 + 12x2 → max |
|
№ 11 |
– 12x1 + 6x2 ≤ 1 |
№ 12 |
–12x1 + 6x2 ≤ 2 |
|
14x1 + 9x2 ≤ 51 |
14x1 + 9x2 ≤ 51 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = 14x1 + 8x2 → max |
|
L = 2x1 + 6x2 → max |
|
№ 13 |
6x1 + 4x2 ≤ 24 |
№ 14 |
10x1 + 11x2 ≤ 110 |
|
4x1 + x2 ≤ 14 |
– x1 + 2x2 ≤ 7 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = 4x1 + 6x2 → max |
|
L = 6x1 + 8x2 → max |
|
№ 15 |
10x1 + 14x2 ≤ 70 |
№ 16 |
6x1 –3x2 ≥ – 1 |
|
4x1 + 9x2 ≤ 36 |
14x1 + 9x2 ≤ 51 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = x1 + x2 → max |
|
L = 2x1 + 7x2 → max |
|
№ 17 |
2x1 + 5x2 ≤ 16 |
№ 18 |
– 2x1 + 4x2 ≤ 2 |
|
6x1 + 5x2 ≤ 27 |
4x1 + 5x2 ≤ 20 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = x1 + x2 → max |
|
L = 4x1 + 14x2 → max |
|
№ 19 |
4x1 + 5x2 ≤ 18 |
№ 20 |
8x1 + 10x2 ≤ 40 |
|
– x1 + 2x2 ≤ 1 |
– 2x1 + 4x2 ≤ 2 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
|
|
L = 3x1 + 3x2 → min |
|
L = x1 + x2 → max |
|
№ 21 |
4x1 + 8x2 ≥ 14 |
№ 22 |
2x1 + 11x2 ≤ 38 |
|
10x1 + 3x2 ≥ 15 |
4x1 –5x2 ≤ 5 |
|||
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
34
|
L = 7x1 + 2x2 → max |
|
L = x1 + x2 → max |
||
№ 23 |
4x1 + x2 ≤ 14 |
№ 24 |
4x1 + 5x2 ≤ 18 |
||
6x1 + 4x2 ≤ 24 |
–x1 + 2x2 ≤ 1 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = 8x1 + 5x2 → max |
|
L = 5x1 + 9x2 → max |
||
№ 25 |
x1 + x2 ≤ 6 |
№ 26 |
–6x1 + 3x2 ≥ 1 |
||
9x1 + 5x2 ≤ 45 |
2x1 + 5x2 ≤ 28 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = x1 –x2 → min |
|
L = 4x1 + 3x2 → max |
||
№ 27 |
2x1 + x2 ≤ 6 |
№ 28 |
6x1 – 12x2 ≤ 1 |
||
– 5x1 + 2x2 ≤ 0 |
9x1 + 14x2 ≤ 51 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = 3x1 + 2x2 → min |
|
L = x1 + x2 → max |
||
№ 29 |
20x1 + 7x2 ≥ 140 |
№ 30 |
5x1 + 4x2 ≤ 18 |
||
x1 + 2x2 ≥ 18 |
|
2x1 – x2 ≤ 1 |
|||
|
|
|
|||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = 2x1 + 3x2 → max |
|
L = 13x1 – 6x2 → max |
||
№ 31 |
5x1 + 7x2 ≤ 70 |
№ 32 |
12x1 + 11x2 ≤132 |
||
4x1 + 9x2 ≤ 72 |
4x1 – 5x2 ≤ 20 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = –11x1 + 6x2 → min |
|
L = 11x1 – 6x2 → max |
||
№ 33 |
12x1 + 11x2 ≤132 |
№ 34 |
8x1 + 13x2 ≤104 |
||
–x1 + 2x2 ≥2,2 |
–x1 + 2x2 ≥2 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = 7x1 + 3x2 → max |
|
L = 4x1 + 7x2 → max |
||
№ 35 |
5x1 + 2x2 ≤ 20 |
№ 36 |
x1 + 4x2 ≤ 14 |
||
4x1 + 2x2 ≤ 19 |
2x1 + 3x2 ≤ 12 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = x1 + x2 → max |
|
L = 5x1 + 1,6x2 → max |
||
№ 37 |
11x1 + 2 x2 ≤ 38 |
№ 38 |
–0,6x1 + x2 ≤ 2,5 |
||
–5x1 + 4x2 ≤ 5 |
5x1 |
+ 1,5x2 ≤ 22,5 |
|||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
||
|
L = 25x1 + 8x2 → max |
|
L = 5x1 + 2x2 → max |
||
№ 39 |
x1 + 0,3x2 ≤ 4,5 |
№ 40 |
12x1 + 11x2 ≤132 |
||
–1,2x1 + x2 ≤ 5 |
–x1 + 2x2 ≥2,2 |
||||
|
|
||||
|
xj ≥ 0, цел. |
|
xj ≥ 0, цел. |
35
|
L = –11x1 + 6x2 → min |
|
L = 19x1 + 6x2 → max |
||
№ 41 |
12x1 + 11x2 ≤132 |
№ 42 |
10x1 + 3x2 |
≤ 45 |
|
–x1 + 2x2 ≥2,2 |
–6x1 + 5x2 |
≤ 25 |
|||
|
|
||||
|
xj ≥ 0, цел |
|
xj ≥ 0, цел. |
||
|
L = x1 + 2x2 → min |
|
L = –x1 + 3x2 → max |
||
№ 43 |
5x1 + 7x2 ≥17,5 |
№ 44 |
23x1 + 40x2 |
≤ 184 |
|
2x1 + 5,5x2 ≥11 |
–11x1 + 10x2 ≤ 22 |
||||
|
|
||||
|
xj ≥ 0, цел |
|
xj ≥ 0, цел. |
Контрольные вопросы к методу ветвей и границ
1.Как изменяется допустимое множество задачи ЛП при добавлении требования целочисленности переменных?
2.В каких случаях обрывается ветвь дерева решений?
3.При выполнении каких условий порождаются две новые задачи? В каком порядке эти условия проверяются?
4.Каково условие завершения работы алгоритма?
5.Что такое рекорд?
6.Что такое верхняя граница в задаче на максимум?
7. Как соотносятся допустимые множества задач, лежащих
вразных ветвях?
8.При каких исходных параметрах алгоритма не найдется решение разрешимой задачи?
9.От чего зависит число непрерывных задач, решаемых в методе ветвей и границ?
10.Как изменяется значение критерия задач при движении вниз по ветви и почему?
11.Алгоритм дает точное или приближенное решение целочисленной задачи?
12.Метод применяется для полностью целочисленных задач или для смешанных, или для тех и других?
13.По какому признаку можно быстро определить после завершения алгоритма, имеет ли задача решение?
14.Какое решение находит алгоритм: локальное или глобальное? Обоснуйте ответ.
15.Содержит ли метод ветвей и границ признак оптимальности?
36
Дополнительный материал к решению корневой задачи
Краткая теория и примеры решения задачи симплекс-методом (см. также работы [1, гл. 3], [3, подразд. 4.9])
Симплекс-метод является универсальным и наиболее распространенным методом. Идея метода состоит в последовательном продвижении по базисам опорных планов задачи, т.е. в последовательном улучшении планов задачи по заданному критерию до тех пор, пока не будет получено оптимальное решение.
Необходимо предварительно выполнить следующие шаги:
−привести математическую модель к каноническому виду;
−определить начальное базисное решение задачи;
−заполнить начальную симплекс-таблицу по начальному базисному решению, для чего ввести в нее:
• коэффициенты Cj при переменных x j в целевой функции;
•векторы (переменные), которые входят в текущий базис;
•значения базисных переменных в столбец А0 ;
• элементы aij, i =1, ..., m, j =1, ..., n, матрицы условий задачи
Am×n (столбцы A1 , A2 , ..., An ).
Оценки ∆j , j =1, ...,n, соответствующие векторам A1, A2, …, An,
для начальной таблицы вычисляются по формуле
∆j = z j −cj , z j |
m |
= ∑ci aij , j =1, ..., n. |
|
|
i=1 |
Коэффициенты критерия сsi |
при базисных переменных простав- |
ляются в левый столбец таблицы соответственно векторам базиса. Значение целевой функции при текущем базисе
m
∆0 = ∑сi ai 0 заносится в последнюю строку столбца A.
i=1
37
Пример 1. Модель задачи
|
L = x1 + x2 → max, |
|||
|
x |
≤10, |
||
|
|
1 |
+ 2 x2 ≤ 20, |
|
|
x1 |
|||
|
x ,x |
≥ 0. |
||
|
|
1 |
2 |
|
Приведем заданную модель к каноническому виду, введя до- |
||||
полнительные |
переменные x3 |
|
и |
x4 , превращающие неравенства |
в равенства: |
|
|
|
|
|
L = x1 |
+ x2 → max, |
||
|
x1 |
+ x3 |
=10, |
|
|
x1 |
+ 2 x2 + x4 = 20, |
||
|
xj ≥ 0. |
|||
Начальное базисное решение построим на переменных x3 , x4 , |
||||
соответственно |
A3 , A4 образует начальный базис, а x1 , x2 становятся |
|||
небазисными переменными; A0 |
= (10,20) – вектор ограничений. |
Заполняем симплекс-таблицу, соответствующую начальному базисному решению:
|
Таблица 0 |
0 |
1 |
|
1 |
0 |
0 |
|
|
i |
Сsi |
Базис |
А0 |
А1 |
|
А2 |
А3 |
А4 |
θ |
1 |
0 |
A3 |
10 |
1 |
|
0 |
1 |
0 |
10 min |
|
|
|
|
|
|
|
|
|
|
2 |
0 |
A4 |
20 |
1 |
|
2 |
0 |
1 |
20 |
|
|
|
|
|
|
|
|
|
|
|
|
∆ |
0 |
–1 |
|
–1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Z |
0 |
0 |
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
min |
|
|
|
|
38
Элементы строки ∆ рассчитаны по формулам:
2
∆1 = ∑сi ai1 −c1 = 0 1+0 1−1 = −1;
i=1
2
∆2 = ∑сi ai 2 −c2 = 0 0 +0 2 −1 = −1;
i=1
2
∆3 = ∑сi ai 3 −c3 = 0 1+0 0 −0 = 0;
i=1
2
∆4 = ∑сi ai 4 −c4 = 0 0 +0 1−0 = 0.
i=1
Для базисных переменных оценки всегда равны нулю. Значение критерия для данного начального решения
L = ∑ci ai 0 = 0 10 +0 20 = 0.
Поскольку имеются ∆j < 0, признак оптимальности в начальном
плане не выполняется. Приступаем к улучшению плана.
Первая итерация:
В базис будем вводить вектор A1, которому соответствует минимальное значение ∆ j , т.е. этот столбец становится направляю-
щим. Направляющая строка определяется по минимальному значениюθ. Величина θ находитсякакрезультатделенияэлементастолбцаA0 насоответствующийположительныйэлементнаправляющегостолбца
|
a |
a |
|
10 |
|
20 |
|
=10. |
|||
θ0 |
= minθi = min |
30 |
; |
40 |
|
= min |
|
; |
|
|
|
|
a41 |
1 |
1 |
||||||||
|
a31 |
|
|
|
|
|
Минимум достигается в строке с А3, которая становится направляющей, а из базиса будет выведен вектор А3. Таким образом, элемент a31, расположенный на пересечении направляющих столбца и строки, будет направляющим (здесь индексы элемента соответствуют индексам векторов, выходящего и входящего в базис).
Заполняемтаблицу, соответствующуюновомубазисномурешению. Все элементы aij таблицы определяются по следующему рекур-
рентному соотношению:
39
|
|
|
|
|
|
l |
|
|
|
aijl − |
arj |
aikl ,i ≠ r ; |
|||
|
|
|
|||||
al +1 |
= |
|
|
l |
|
ark |
|
ij |
|
|
a |
|
|
|
|
|
|
|
rj |
,i = r |
|||
|
|
|
|||||
|
|
|
|
||||
|
|
al |
|
|
|
||
|
|
|
rk |
|
|
|
где ark – направляющий элемент; l – номер итерации.
Из нижней части формулы следует, что элементы направляющей строки пересчитываются путем деления каждого ее элемента на направляющий. Верхняя часть формулы реализуется построением прямоугольника на элементе, новое значение которого хотим получить. Проектируя этот элемент на направляющую строку и направляющий столбец, получаем прямоугольник. В его вершинах находятся все четыре элемента, входящие в формулу (в вершине, противоположной вычисляемому элементу, всегда лежит направляющий элемент). После пересчета, называемого симплекс-преобразованием, получаем следующую таблицу:
|
Таблица 1 |
0 |
1 |
1 |
0 |
0 |
|
|
i |
Сsi |
Базис |
А0 |
А1 |
А2 |
А3 |
А4 |
θ |
1 |
1 |
А1 |
10 |
1 |
0 |
1 |
0 |
---- |
2 |
0 |
A4 |
10 |
0 |
2 |
–1 |
1 |
10 min |
|
|
∆ |
10 |
0 |
–1 |
1 |
0 |
|
|
|
Z |
10 |
1 |
0 |
1 |
0 |
|
min
Приведем пример расчета нескольких элементов табл. 1:
a(2) |
= a(1) |
− |
a30(1) a41(1) |
= 20 − |
10 1 |
=10. |
|
a(1) |
1 |
|
|||||
40 |
40 |
|
|
|
|
||
|
|
31 |
|
|
|
|
Этой формуле соответствует прямоугольник, построенный на элементе20 втабл. 0, другиееговершинынаходятсянаэлементах10, 1 и1.
a(2) |
= a(1) |
− |
a33(1) a41(1) |
= 0 |
− |
1 1 |
= −1. |
|
a(1) |
1 |
|
||||||
43 |
43 |
|
|
|
|
|
||
|
|
31 |
|
|
|
|
|
40