Реферат: Линейное и динамическое программирование
Таблица 1
Потребл Произв | b1 =48 | b2 =30 | b3 =29 | b4 =40 | b5 =8 | |
a1 =40 | 40 3 | 6 | 4 | * 3 | 0 | p1 =0 |
a2 =45 | 8 2 | 30 3 | 7 1 | 3 | 0 | p2 =-1 |
a3 =70 |
6 |
5 | 22 1 | 40 4 | 8 0 | p3 =-1 |
q1 =3 | q2 =4 | q3 =2 | q4 =5 | q5 =1 |
Обозначим через m(p1 , p2 ,…, pm , q1 , q2 ,…, qn ) вектор симплексных множителей или потенциалов. Тогда Dij =mAij -cij , iÎNm , jÎNn , откуда следует
Dij =pi +qj -cij , iÎNm , jÎNn
Положим, что p1 =0. Остальные потенциалы находим из условия, что для базисных клеток Dij =0. В данном случае получаем
D11 =0, p1 +q1 -c11 =0, 0+q1 -3=0, q1 =3
D21 =0, p2 +q1 -c21 =0, p2 +3-2=0, p2 = -1
D23 =0, p2 +q3 -c23 =0, -1+q3 -1=0, q3 =2
аналогично, получим: q2 =4, р3 =-1, q4 =5, q5 =1.
Затем вычисляем оценки всех свободных клеток:
D12 =p1 +q2 -c12 =0+4-6= -2
D13 =p1 +q3 -c13 =0+2-4=-2
D14 =2; D15 =1; D24 =1; D25 =0; D31 = -4; D32 = -2
Находим наибольшую положительную оценку:
mах(Dij >0)=2=D14 ,
Для найденной свободной клетки 14 строим цикл пересчета - замкнутую ломаную линию, соседние звенья которой взаимно перпендикулярны, сами звенья параллельны строкам и столбцам таблицы, одна из вершин находится в данной свободной клетке, а все остальные - в занятых клетках. Это будет 14-34-33-23-21-11. Производим перераспределение поставок вдоль цикла пересчета:
40 | * | 40-r | r | 33 | 7 | |||
8 | 30 | 7 |
® | 8+r | 7-r |
® | 15 | 30 |
22 | 40 | 22+r | 40-r | 29 | 33 |
rmax =7
Получаем второе базисное допустимое решение:
Таблица 2
Потребл Произв | b1 =48 | b2 =30 | b3 =29 | b4 =40 | b5 =8 | |
a1 =40 | 33 3 | 6 | 4 | 7 3 | 0 | p1 =0 |
a2 =45 | 15 2 | 30 3 | 1 | 3 | 0 | p2 =-1 |
a3 =70 |
6 | * 5 | 29 1 | 33 4 | 8 0 | p3 =1 |
q1 =3 | q2 =4 | q3 =0 | q4 =3 | q5 = -1 |
Находим новые потенциалы. Новые оценки:
D12 = -2; D13 = -4; D15 = -1; D23 = -2; D24 = -1; D25 = -2; D31 = -2; D32 =0. Поскольку все Dij £0 решение является оптимальным:
33 0 0 7
Xо pt1 = 15 30 0 0
0 0 29 33