1.4 Метод потенциалов
Для каждого поставщика и потребителя находят потенциал или силу. Для этого, составляют систему уравнений Ui+Vj=Cij для каждой заполненной решением клетки таблице. В системе будет (m+n-1) уравнение, с m+n неизвестными то есть неизвестных на один больше чем уравнений, такая система имеет бесконечное множество решений, по этому, для её решения, одной из переменных, дают конкретное значение (обычно U1=0) и система будет иметь единственное решение.
Потенциалы записываются рядом с таблицей.
Для
всех не
заполненных
решением клеток таблицы, вычисляют
оценку
ij=
Ui+Vj-Cij.
Если
все
ij
0,
то решение оптимальное.
Если
хотя бы один
ij
0,
то решение не оптимально и его можно
улучшить.
1.5 Переход от одного опорного решения к другому
Переход к новому опорному решению, осуществляется с помощью цикла.
Циклом называется такая последовательность клеток таблицы, в которой две и только две соседние клетки, расположенные в одной строке или столбце, причем первая и последняя клетки цикла, так же находится в одной строке или столбце.
Цикл
строится для клетки, в которой наибольшая
положительная оценка
max”+”{
}.
В эту клетку таблицы ставится знак плюс
и она добавляется к заполненным клеткам
таблицы (то есть заполненных клеток
становится m+n).
Затем методом вычеркивания строится
цикл.
Метод «вычеркивания»
В
таблице можно вычеркнуть те строки и
столбцы, в которых по одной заполненной
клети таблицы, причем вычеркнутые строки
и столбцы уже не учитываются. Оставшиеся
клети таблицы после вычеркивания,
образуют цикл. В найденном цикле
расставляют знаки плюс и минус в нечетных
клетках плюсы, а в четных минусы, начиная
с уже поставленного знака плюс. По циклу
перераспределяется груз величиной
=min”-“{xij}.
При построении нового решения, все
вычеркнутые клетки переписываются без
изменения, в клетках со знаком «плюс»,
величина перевозки увеличивается на
,
со знаком «минус» уменьшив на
при этом одна из помеченных клеток
останутся пустой.
Глава 2. Решение транспортной задачи
Склады в городах |
Магазины в городах |
|
|||
Чебоксары |
Вязники |
Набережные Челны |
Казань |
Запасы |
|
Москва |
7 |
6 |
5 |
11 |
400 |
Нижний Новгород |
3 |
4 |
2 |
2 |
200 |
Покров |
9 |
10 |
3 |
15 |
100 |
Ижевск |
1 |
5 |
1 |
3 |
100 |
Заявки |
400 |
200 |
100 |
200 |
|
Однако имеются дополнительные условия: объем перевозки шин со склада i Москве магазину в Вязниках должен быть не менее 100 (х12 > 100), а со склада i в Нижнем Новгороде магазину в Чебоксарах - не более 100 (х21 <100). Определите оптимальный план поставок шин в магазины, обеспечивающий минимальные затраты.
bj ai |
400 |
200 |
100 |
200 |
400 |
7 |
6 |
5 |
11 |
200 |
3 |
4 |
2 |
2 |
100 |
9 |
10 |
3 |
15 |
100 |
1 |
5 |
1 |
3 |
100 Ф |
0 |
0 |
0 |
0 |
Проверяем баланс задачи:
=400+200+100+100
= 800
=400+200+100+200
= 900
Т.к. < => вводим фиктивного поставщика a5 = 900 - 800 = 100, с5j = 0.
Требуется при решении транспортной задачи ограничить перевозки от поставщика с номером l и потребителю с номером k.
Т.к. x12 ≥ 100, то необходимо прежде, чем решать задачу, сократить запасы 1-го поставщика и запросы 2-го потребителя на величину 100 (т.е. зарезервировать перевозку x12 = 100). В полученном оптимальном решении следует увеличить объем перевозки x12 на величину 100.
bj ai |
400 |
100 |
100 |
200 |
300 |
7 |
6 |
5 |
11 |
200 |
3 |
4 |
2 |
2 |
100 |
9 |
10 |
3 |
15 |
100 |
1 |
5 |
1 |
3 |
100 Ф |
0 |
0 |
0 |
0 |
Т.к. x21 ≤ 100, то необходимо вместо 1-го потребителя с запросами b1 ввести двух других потребителей. Один из них с номером 1 должен иметь запросы b1’ = 100, а другой с номером 5 с запросами b5 = 400 – 100 = 300. Стоимости перевозок для этих потребителей остаются прежними, за исключением стоимости c25, которая принимается равной сколь угодно большому числу M (M<< 1). После получения оптимального решения величины грузов, перевозимых к 5-му потребителю, прибавляются к величинам перевозок 1-го потребителя. Так как c25=M – самая большая стоимость перевозки, то в оптимальном решении клетка с номером (2,5) останется пустой (x25 = 0) и объем перевозки x21 не превзойдет 100.
bj ai |
100 * |
100 |
100 |
200 |
300 * |
|
300 |
7
- |
6 100 |
5
- |
11
- |
7 200 |
U1 = 0 |
200 |
3
- |
4
3 |
2 0 |
2 200 |
М
- |
U2 =1 |
100 |
9
- |
10
- |
3 100 |
15
- |
9 0 |
U3 =2 |
100 |
1 100
|
5
1 |
1 0 |
3
- |
1 + 6 |
U4 =0 |
100 Ф |
0
- |
0
- |
0
- |
0
- |
0 100 |
U5 =-7 |
|
V1 =1 |
V2 =6 |
V3 =1 |
V4 =1 |
V5 =7 |
|
m+n-1=5+5-1=9
С=
Задаем целевую функцию:
Z(x)=600+1400+0+400+300+0+100+0+100=2900
Проверяем решение на оптимальность, для этого:
Для каждой заполненной решение клетки таблицы составляем уравнение вида Ui+Vj=Cij и решаем систему:
Пусть U1=0, тогда
Для каждой незаполненной клетки таблицы находим оценки ij= Ui+Vj-Cij
11=U1+V1-C11=0+1-7=-6 0
13=U1+V3-C13=0+1-5=-4 0
14=U1+V4-C14=0+1-11=-10 0
21=U2+V1-C21=1+1-3=-1 0
22=U2+V2-C22=1+6-4=3 0
25=U2+V5-C25=1+7-М=M 0
31=U3+V1-C31=2+1-9=-6 0
32=U3+V2-C32=2+6-10=-2 0
34=U3+V4-C34=2+1-15-12 0
42=U4+V2-C42=0+6-5=1 0
44=U4+V4-C44=0+1-3=-2 0
45=U4+V5-C45=0+7-1=6 0
51=U5+V1-C51=-7+1-0=-6 0
52=U5+V2-C52=-7+6-0=-1 0
53=U5+V3-C53=-7+1-0=-6 0
54=U5+V4-C54=-7+1-0=-6 0
так как 22, 42, 45>0, то решение неоптимальное, его можно улучшить. Для этого строим цикл для клетки max”+”{ }= 45=>(4;5) в которую ставим знак «+» добавляем его к заполненным клеткам.
=min”-“{0;0}=0
bj ai |
100 * |
100 |
100 |
200 |
300 * |
|
300 |
7
0 |
6 100
|
5
- |
11
- |
7 200 |
U1 = 0 |
200 |
3 + 5 |
4
3 |
2 0 |
2 200 |
М
- |
U2 =1 |
100 |
9
0 |
10
- |
3 100 |
15
- |
9 0 |
U3 =2 |
100 |
1 100
|
5
- |
1
- |
3
- |
1 0 |
U4 =-6 |
100 Ф |
0
0 |
0
- |
0
- |
0
- |
0 100 |
U5 =-7 |
|
V1 =7 |
V2 =6 |
V3 =1 |
V4 =1 |
V5 =7 |
|
Задаем целевую функцию:
Z(x)=600+1400+0+400+300+0+100+0+0=2800
Проверяем решение на оптимальность
Пусть U1=0, тогда
11=U1+V1-C11=0 0
13=U1+V3-C13=-4 0
14=U1+V4-C14=-10 0
21=U2+V1-C21=5 0
22=U2+V2-C22=3 0
25=U2+V5-C25=M 0
31=U3+V1-C31=0 0
32=U3+V2-C32=-2 0
34=U3+V4-C34=-12 0
42=U4+V2-C42=-5 0
43=U4+V3-C43=-6 0
44=U4+V4-C44=-8 0
51=U5+V1-C51=0 0
52=U5+V2-C52=-1 0
53=U5+V3-C53=-6 0
54=U5+V4-C54=-6 0
так как 21 и 22>0, то решение не оптимальное, его можно улучшить. Для этого строим цикл для клетки max”+”{ }= 21=>(2;1) в которую ставим знак «+» добавляем его к заполненным клеткам.
=min”-“{0;0;100}=0
bj ai |
100 * |
100 |
100 |
200 |
300 * |
|
300 |
7
0 |
6 100
|
5
- |
11
- |
7 200 |
U1 = 0 |
200 |
3 0
|
4
- |
2
- |
2 200 |
М
- |
U2 =-4 |
100 |
9
0 |
10
- |
3 100 |
15
- |
9 0 |
U3 =2 |
100 |
1 100
|
5
- |
1
- |
3
- |
1 0 |
U4 =-6 |
100 Ф |
0
0 |
0
- |
0
- |
0
- |
0 100 |
U5 =-7 |
|
V1 =7 |
V2 =6 |
V3 =1 |
V4 =6 |
V5 =7 |
|
Задаем целевую функцию:
Z(x)=600+1400+0+400+300+0+100+0+0=2800
Проверяем решение на оптимальность
Пусть U1=0, тогда
11=U1+V1-C11=0 0
13=U1+V3-C13=-4 0
14=U1+V4-C14=-9 0
22=U2+V2-C22=-2 0
23=U2+V3-C23=-5 0
25=U2+V5-C25=M 0
31=U3+V1-C31=0 0
32=U3+V2-C32=-7 0
34=U3+V4-C34=-1 0
42=U4+V2-C42=-5 0
43=U4+V3-C43=-6 0
44=U4+V4-C44=-3 0
51=U5+V1-C51=0 0
52=U5+V2-C52=-1 0
53=U5+V3-C53=-6 0
54=U5+V4-C54=-1 0
bj ai |
400 |
200 |
100 |
200 |
400 |
7 200
|
6 200
|
5
|
11
|
200 |
3 0
|
4
|
2
|
2 200 |
100 |
9 0
|
10
|
3 100 |
15
|
100 |
1 100
|
5
|
1
|
3
|
100 Ф |
0 100
|
0
|
0
|
0
|
Z(x)=1400+1200+400+300+100=3400
Ответ:
minZ(x)=3400
при x=
