- •1. Введение 4
- •1.1. Основные методологические принципы
- •1.2. Основные определения
- •1.3. Этапы моделирования
- •5. Модели с обратной связью, динамическое проектирование.
- •2. О принципах принятия решений
- •2.1. Принятие решений в условиях неопределенности критерия.
- •Самостоятельная работа №1.
- •2.2. Принятие решения в условиях неопределенности состояния окружающей среды
- •Самостоятельная работа №2
- •3. Задачи выпуклого векторного программирования1.
- •3.1. Некоторые сведения выпуклого анализа
- •3.2. Понятие оптимальности по Слейтеру и Парето
- •3.3. Возможные (допустимые) и подходящие направления.
- •3.4. Задача выпуклого векторного программирования с ограничениями типа неравенства. Поиск подходящих направлений.
- •Самостоятельная работа №3.
- •3.4. Теорема Куна–Таккера для задачи выпуклого векторного программирования
- •Самостоятельная работа № 4.
- •4. Некоторые задачи теория игр
- •4.1. Анализ матричных антагонистических игр двух игроков .
- •Самостоятельная работа № 5.
- •4.2. Анализ матричных игр двух игроков с нулевой суммой в смешанных стратегиях.
- •Самостоятельная работа №6
- •4.3. Биматричные неантагонистические игры.
- •Самостоятельная работа № 7.
- •4.4. Взаимосвязь равновесий по Нешу и Парето в играх.
- •Самостоятельная работа № 8.
- •4.5. Динамические игры с полной информацией
- •Самостоятельная работа № 9
- •5. Задачи дискретного программирования.
- •5.1. Методы отсечения для решения задач целочисленного линейного программирования.
- •Самостоятельная работа № 10.
- •5.2. Комбинаторные методы решения задач целочисленного линейного программирования.
- •5.3. Алгоритм Ленд–Дойг.
- •Самостоятельная работа № 11.
- •5.4. Метод ветвей и границ для решения задачи о коммивояжере.
- •Самостоятельная работа № 12.
- •6.Транспортные задачи линейного программирования
- •6.1. Транспортная задача в сетевой постановке
- •Самостоятельная работа 13.
- •6.2. Транспортная задача в матричной постановке.
- •Самостоятельная работа 14.
- •7. Динамическое программирование и потоки в сетях
- •7.1. Задача оптимизации многошаговых процессов, задача о ранце.
- •Самостоятельная работа 15.
- •7.2 .Задача отыскания кратчайшего расстояния в сети между парами вершин
- •Самостоятельная работа 16.
- •7.2. Задача о максимальном потоке в сети.
- •Самостоятельная работа 17.
- •Литература.
6.2. Транспортная задача в матричной постановке.
Имеется mпунктов производства иnпунктов потребления некоторого однородного продукта. Заданы объемы производстваai, i=1,2,3,…,m, в каждом пункте производства и размеры спроса bj,j=1,2,3,…,n в каждом пункте потребления. Известны также транcпортные расходыci,j, связанные с перевозом единицы продукта из пунктаi в пунктj. Требуется определить объемы перевозокxi,j изi–го пункта вj–ый для всехi=1,2,3,…,m, j=1,2,3,…,n, при минимальных общих транспортных издержках, при этом весь груз из пунктов производства должен быть вывезен, и весь спрос в пунктах потребления должен быть удовлетворен.
Приведем математическую постановку транспортной задачи:
, |
(6.6) |
при ограничениях , |
(6.8) |
(6.9) | |
. |
(6.10) |
Транспортная задача имеет решение тогда и только тогда, когда выполняется соотношение :
, |
(6.10) |
т.е. объем производства должен быть равен объему потребления. В реальных задачах условие (6.10) часто нарушается, если имеет место соотношение
, |
(6.11) |
то в этом случае необходимо ввести в рассмотрение фиктивного (внешнего) потребителя j1c
.
Для всех i=1,2,3,…,m полагают равным достаточно большому числу. Этот пункт иммитирует экспорт продукции. Аналогично, если
, |
(6.12) |
то вводится дополнительный (внешний) пункт производства i1.
Транспортные задачи, в которых выполняется соотношение (6.10) называют замкнутыми, в случаях (6.11) (6.12) открытыми.
Транспортную задачу решают методом потенциалов, который является частным случаем метода потенциалов для транспортной задачи в сетевой постановке. Общая схема которого такова:
1. Определяют исходное базисное решение.
2. По критерию оптимальности проверяют, является ли найденное решение оптимальным. Если критерий оптимальности не выполняется, то переходим к новому базису и возвращаемся к пункту 2, иначе конец работы алгоритма.
Опишем алгоритм решения транспортной задачи более детально. Запишем ее условия в таблицу следующего вида:
|
|
|
j=1 |
j=2 |
j=3 |
j=4 |
|
| ||||
|
|
b1 |
b2 |
b3 |
b4 |
| ||||||
|
|
|
|
| ||||||||
i=1 |
a1 |
|
|
|
|
|
|
|
|
|
|
u1 |
|
|
|
|
|
|
|
| |||||
i=2 |
a2 |
|
|
|
|
|
|
|
|
|
|
u2 |
|
|
|
|
|
|
|
| |||||
i=3 |
a3 |
|
|
|
|
|
|
|
|
|
|
u3 |
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
|
| ||||||
|
v1 |
v2 |
v3 |
v4 |
Будем называть клеткой (i,j) клетку, находящуюся на пересеченииi– той строки иj–го столбца. Каждую клетку (i,j) будем заполнять следующей информацией:
-
cij
xij
dij
Описание позиций dijи будет приведено ниже.
Определение исходного базисного решения. Для определения исходного базиса можно использовать алгоритм северо–западного угла.
Алгоритм северо–западного угла.
1. k:=1; p:=1; (клетка (k, p) находится в северо–западном углу рассматриваемой таблицы)
2. xkp:=min (ak, bp);ak:= ak– xkp;bk:= bk– xkp.
3. Если ak=0, то вычеркиваем из таблицы k–ю строку, в противном случае (в этом случаеbp=0) вычеркиваемp– ый столбец. Если одновременноak=bp= 0, то вычеркиваем, либотолькостолбец, либотолькостроку.
4. Если в таблице все столбцы и все строки вычеркнуты, то алгоритм заканчивает работу, в противном случае в качестве (k, p) берем координаты клетки северо–западного угла получившейся таблицы и переходим к выполнению 2.
Клетки с заполненной информацией xijявляются базисными, все остальные внебазисные, для нихxij=0 (в целях наглядности для внебазисных переменных значенияxij=0 не заносятся). Среди базисных переменных может оказаться, что некоторыеxij=0 (при вырожденном базисе базисные нули заносятся обязательно). В этом случае базис вырожденный.
Чтобы убедиться в том, что исходный базис найден верно, проверьте:
1. Количество базисных клеток (переменных) должно быть равно n+m–1.
2. Должны выполняться ограничения (6.8) – (6.10).
Для проверки найденного решения на оптимальность необходимо вычислить потенциалы всех пунктов и производства, и потребления. Под потенциалами будем понимать числа ui , i= 1,2,3,...,m, иvj, j= 1,2,3,...,n, определяемые по формуле:
vj=ui+cij,
где клетка (i, j) базисная клетка.
Алгоритм расчета потенциалов
В данном алгоритме введен механизм пометок. Строка или столбец помечены знаком '+', если соответствующий потенциал найден, знаком '–' в противном случае.
В начале все строки и столбцы таблицы помечаем символом '–'
1 –ыйшаг.u1:=0 , 1–ую строку помечаем символом '+' (это означает, что потенциал для данной строки найден ).
k –ый шаг.
a) Для каждой строкиi, помеченной символом '+', выполнить:
для каждого столбца j=1,2,3,...,nтакого, что клетка (i,j) базисная иj– ый столбец помечен символом '–'vj :=ui+cij, столбец помечаем символом '+'.
b) Для каждого столбцаj, помеченного символом '+', выполнить:
для каждой строки i=1,2,3,...,n такой, что клетка (i,j) базисная, иi–я строка помечена символом '–'ui:=vj–cij, строку помечаем символом '–'.
k –шагвыполняем до тех пор, пока все строки и столбцы не станут помеченными символами '+'.
Проверка критерия оптимальности
Для того, чтобы базисное решение xij, i=1,2,3,...,m,j=1,2,3,...,n, было оптимальным, необходимо и достаточно, чтобы для всехi=1,2,3,...,m, j=1,2,3,...,nбыло справедливо неравенствоdij=vj–ui–cij0.Таким образом, для проверки найденного решения на оптимальность достаточно выполнить следующий алгоритм
1. Для всех i=1,2,3,...,m, j=1,2,3,...,n положитьdij=vj–ui–cij.
2. Найти такие (k, p), чтоd kp =max{ dij| i=1,2,3,...,n, j=1,2,3,...,m }
3. Если dkp0, то полученное базисное решение является оптимальным и транспортная задача решена, иначе необходимо перейти к новому базису.
Алгоритм перехода к новому базису.
Вводим в базис клетку (k, p).Для определения клетки (q,l), выводимой из базиса, воспользуемся следующим алгоритмом:
1. Строим последовательность клеток
П={(i1, j1), (i2, j2),...(i, j),... )} такую, что
a) (k,p)П;
b) все остальные клетки базисные;
с) последовательность Побразует цикл (смотри транспортную задачу в сетевой постановке).
2. Задаем направление обхода этого цикла, совпадающего с направлением kp. В клетку (k, p) заносим символ '+'. Для остальных клеток (i, j)П, если направлениеijсовпадает с направлением обхода цикла с направлением обхода цикла, то заносим в позициюсимвол '+', в противном случае заносим '–' .
3. Определяем клетку (q,l), для которойх(q,l)=min xij , где (i,j) – пробегает все клетки изП, помеченные символом '–'.
Полагаем Q=x(q,l).Из базиса выводится клетка (q,l).
4. Для всех (i,j)П, если клетка помечена символом '+', то полагаемxij=xij+Q, в противном случае xij=xij–Q.
5. Перейти к выполнению проверки критерия оптимальности.
Замечание 1. Иногда минимум достигается на нескольких клетках одновременно. В этом случае в качестве клетки (q,l) выбирается произвольно только одна из них.
Замечание 2. При заполнение таблицы для нового базиса значенияxijвносятся только в базисные клетки.
Пример.Рассмотрим пример, в котором требуется решить транспортную задачу методом потенциалов. Значенияai, bj,cij (i=1,2,3, j=1,2,3,4), заданы в таблице
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
10 |
16 |
14 |
12 | |||||||||
i=1 |
a1 |
11 |
2 |
|
7 |
|
6 |
|
4 |
|
|
u1 |
|
|
|
|
|
|
|
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
|
3 |
|
3 |
|
|
u2 |
|
|
|
|
|
|
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
|
7 |
|
|
u3 |
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
| |||||||
v1 |
v2 |
v3 |
v4 |
Начинаем с определения исходного базиса методом северо–западного угла. Таковым является клетка (1,1), для нее x11=min (11,10)=10, это число заносим в эту клетку. Изменяемa1 иb1. Так какb1=0, затемняем столбецj=1.
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
0 |
16 |
14 |
12 | |||||||||
i=1 |
a1 |
1 |
2 |
10 |
7 |
|
6 |
|
4 |
|
|
u1 |
|
|
|
|
|
|
|
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
|
3 |
|
3 |
|
|
u2 |
|
|
|
|
|
|
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
|
7 |
|
|
u3 |
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
| |||||||
v1 |
v2 |
v3 |
v4 |
В незатемненной части таблицы северо–западный угол (1,2), для нее x12=min (1,16)=1, это число заносим в эту клетку. Изменяемa1 иb2. Так какa1=0, затемняем строкуi=1.
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
0 |
15 |
14 |
12 | |||||||||
i=1 |
a1 |
0 |
2 |
10 |
7 |
1 |
6 |
|
4 |
|
|
u1 |
|
|
|
|
|
|
|
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
|
3 |
|
3 |
|
|
u2 |
|
|
|
|
|
|
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
|
7 |
|
|
u3 |
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
| |||||||
v1 |
v2 |
v3 |
v4 |
Продолжая аналогично далее, получим следующую таблицу:
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
10 |
16 |
14 |
12 | |||||||||
i=1 |
a1 |
11 |
2 |
10 |
7 |
1 |
6 |
|
4 |
|
|
u1 |
|
|
|
|
|
|
|
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
15 |
3 |
2 |
3 |
|
|
u2 |
|
|
|
|
|
|
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
12 |
7 |
12 |
|
u3 |
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
| |||||||
v1 |
v2 |
v3 |
v4 |
В ней восстановлены значения ai,bj, а также затемнены базисные клетки. Значение функционала на этом решении будет равно
F=210+71+415+32+312+712=213.
Алгоритм поиска начального базиса может быть достаточно произвольным. В результате должно получиться решение, удовлетворяющее требованиям:
1.,
2. Число базисных клеток должно быть равно n+m–1.
Расчет потенциалов и проверка критерия оптимальности, переход к новому базису
Для базисных переменных должно выполняться vj:=ui+cij.Положимu1=0, тогда по этой формуле по клетке (1,2)v2=0+2=2, по клетке (1,2)v2=0+7=7. Из клетки (2,2)u2=7–4=3. Продолжая аналогичным образом, получим информацию, приведенную в следующей таблице
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
10 |
16 |
14 |
12 | |||||||||
i=1 |
a1 |
11 |
2 |
10 |
7 |
1 |
6 |
|
4 |
|
0 |
u1 |
0 |
|
|
|
0 |
|
6 |
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
15 |
3 |
2 |
3 |
|
3 |
u2 |
–7 |
|
0 |
|
|
|
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
12 |
7 |
12 |
3 |
u3 |
–6 |
|
–2 |
|
0 |
|
0 |
| |||||
|
2 |
7 |
6 |
10 |
| |||||||
v1 |
v2 |
v3 |
v4 |
Подсчитываем значения dijпо формулеdij=vj–ui–cij и заносим в таблицу. Для базисных клетокdij=0. В клетке (1,4)dij>0, поэтому включаем эту клетку в базис, но нам нужно определить клетку, выходящую из базиса. Выполним это на следующей таблице, в ней клетка (1,4) затемнена. Легко видеть, что затемненные клетки образуют цикл (1,4)(3,4)(3,3)(2,3)(2,2,)(1,2)(1,4)
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
10 |
16 |
14 |
12 | |||||||||
i=1 |
a1 |
11 |
2 |
10 |
7 |
1 |
6 |
|
4 |
«+» |
0 |
u1 |
0 |
|
|
«–» |
0 |
|
6 |
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
15 |
3 |
2 |
3 |
|
3 |
u2 |
–7 |
|
0 |
«+» |
|
«–» |
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
12 |
7 |
12 |
3 |
u3 |
–6 |
|
–2 |
|
0 |
«+» |
0 |
«–» | |||||
|
2 |
7 |
6 |
10 |
| |||||||
v1 |
v2 |
v3 |
v4 |
Заносим в позицию клетки значения «+» и «–». В каждой строке и в каждом столбце их должно быть ровно по одному значению. Начинаем с клетки (1,4), далее идет чередование. В соответствии с этим, положимx1,4=x1,4+Q, x 3,4=x 3,4– Q, x3,3=x3,3+ Q, x2,3=x2,3–Q, x2,2=x2,2+ Q, x 1,2=x 1,2– Q.Увеличиваем значение от нуля до значения, когда одна из этих переменных обратится в 0, это будет приQ=min(x34, x23, x12)=1. Этот минимум достигается на клетке (1,2), поэтому она исключается из базиса (если минимум достигнут на нескольких клетках, то исключается из базиса только одна). Выполним преобразования и данные внесем в таблицу
|
j=1 |
j=2 |
j=3 |
j=4 |
| |||||||
b1 |
b2 |
b3 |
b4 | |||||||||
10 |
16 |
14 |
12 | |||||||||
i=1 |
a1 |
11 |
2 |
10 |
7 |
0 |
6 |
|
4 |
1 |
|
u1 |
|
|
|
|
|
|
|
| |||||
i=2 |
a2 |
17 |
6 |
|
4 |
16 |
3 |
1 |
3 |
|
|
u2 |
|
|
|
|
|
|
|
| |||||
i=3 |
a3 |
24 |
5 |
|
6 |
|
3 |
13 |
7 |
11 |
|
u3 |
|
|
|
|
|
|
0 |
| |||||
|
|
|
|
|
| |||||||
v1 |
v2 |
v3 |
v4 |
Значение функционала на этом решении будет равно
F=210+41+416+31+313+711=191.
Этот алгоритм повторяем до тех пор, пока не окажется, что все значения dij0. Оптимальным решением будут значенияxijпоследней таблицы.