Материал: Методы оптимизации в примерах и задачах. Медведь Н.А., Фокин А.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Теперь, когда нам известна исходная базисная точка, можно продолжить решение транспортной задачи методом потенциалов. Для этого построим задачу, двойственную к ТЗЛП:

m

n

 

aiui

bj v j

min

i 1

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ui vj

cij , i 1, m, j 1, n ,

 

ui ,

 

 

 

 

где

i 1, m

- переменные двойственной задачи,

соответствующие ограничениям (4.6.2), a vj , j 1, n - переменные

двойственной задачи, отвечающие ограничениям (4.6.3). В соответствии с данным видом двойственной задачи, оценки в транспортной задаче будут иметь вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ij

ui

 

v j

 

cij , i 1, m, j 1, n ,

 

 

 

причем переменные ui , i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1, m и vj

,

 

j

1, n представляют собой

произвольное решение системы уравнений

 

 

 

 

 

 

 

 

 

 

 

 

ui

vj

cij , (i, j)

 

 

B ,

 

 

 

 

 

 

 

(4.6.5)

где B

- множество базисных пар индексов. Заметим,

что система

(4.6.5)

имеет

n

m

переменных и

 

m n 1 уравнение. Ранг

системы равен m

n

1. Отсюда следует,

что одну из переменных

можно выбрать произвольно, например,

u1

 

0 , а все остальные

переменные найти по цепочке.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сформулируем критерий оптимальности для транспортной

 

 

X

 

(x0 ) ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

задачи.

Пусть

 

 

i

1, m, j

 

1, n

-

 

некоторое базисное

 

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

решение транспортной задачи.

B

 

- множество базисных пар

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u0i ,

 

 

 

 

 

0 , j

 

-

индексов данного базисного решения,

 

i

1, m и v j

1, n

произвольное решение системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ui

vj

cij , (i, j)

 

 

B .

 

 

 

 

 

 

 

 

 

 

Если существует пара индексов (i, j)

 

 

 

B , для которой

 

 

 

 

 

u

0

v0

c ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

j

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

то существует базисное решение X

 

(xij ) , для которого

 

 

 

123

 

 

 

m

 

 

 

m

 

0 ;

 

 

 

 

 

 

 

 

 

c x

 

c x

 

 

(4.5.6)

 

 

 

 

 

ij ij

 

ij ij

 

 

 

 

 

 

 

i 1 j

1

 

i 1 j 1

 

 

 

 

 

 

если для всех пар индексов

(i, j)

B

выполнено

u0

v0

c

, то

 

 

 

 

 

 

 

 

 

i

j

ij

 

X (x0 ) ,

 

 

 

 

 

 

 

 

 

 

i 1, m, j

1, n

- решение

задачи. Заметим,

что

для

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

транспортной задачи гарантируется построение новой базисной точки, так как эта задача при соблюдении баланса всегда разрешима. Отметим также, что неравенство (4.5.6) является нестрогим в связи с возможностью вырожденности базисных точек. Как следует из

алгоритма симплексного метода, если существует вектор Ai0 j0 с

положительной оценкой, то вектор Ai0 j0 должен быть введен в

базис. Для введения вектора в базис нужно знать его текущие координаты. В транспортной задаче для определения координат используется понятие цикла.

Определение. Говорят, что множество пар индексов (i, j) образует цикл, если их можно расположить, например, в следующей последовательности:

(i0 , j0 )

(i0 , j1 )

(i1, j1 )

...

(ik , jk )

(ik , j0 )

(i0 , j0 )

Отметим, что каждые две рядом стоящие пары индексов должны иметь одинаковые номера строк или одинаковые номера столбцов. Сами пары, входящие в цикл, называются элементами цикла.

Пример цикла:

*

*

 

 

 

*

 

*

*

 

*

 

 

 

*

*

Цикл, который используется в алгоритме решения транспортной задачи, строится по следующему принципу:

ставятся (*) в клетках из множества B и в клетке (i0 , j0 ) , которая

будет вводиться в базис. Просматриваются все строки таблицы и вычеркиваются те строки, в которых имеется не более одной (*). Затем вычеркиваем те столбцы, в которых содержится не более одного элемента. Затем снова просматриваются строки и т.д.

124

Оставшиеся элементы образуют цикл.

Когда цикл построен, можно следующим образом найти коэффициенты вводимого вектора: перенумеровать все элементы цикла, присвоив вводимому элементу 0, следующему 1 и т.д.;

коэффициенты разложения вектора Ai0 j0 равны +1 по векторам из

цикла с нечетными номерами, -1 - по элементам цикла с четными номерами и 0 по векторам, не входящим в цикл. Обозначим через

множество индексов (i, j) с четными номерами, через - множество индексов (i, j) с нечетными номерами .

Зная координаты вектора Ai0 j0 , его можно ввести в базис по правилам симплексного метода. Поскольку координаты вводимого

вектора равны +1 или -1, то значение

min x0

x0* * . Вектор с

 

 

(i, j )

ij

i

j

 

 

 

 

 

 

 

 

(i* , j* )

B , на котором достигается

этот минимум,

считается в

дальнейшем небазисным. Остальные базисные координаты новой базисной точки пересчитываются по формулам:

 

 

xH

x0

, (i, j)

 

,

 

 

ij

ij

 

 

 

 

 

 

 

 

xH

x0

, (i, j)

 

,

 

 

ij

ij

 

 

 

 

 

 

где xH

x

по элементам, не входящим в цикл. Вычисление нового

ij

ij

 

 

 

 

 

 

 

 

значения функции цели может быть произведено по формуле

 

 

LH

L

i

0

j

.

 

 

 

 

 

 

 

 

0

 

 

Может

оказаться, что

 

min x0

достигается в нескольких

 

 

 

 

(i, j )

ij

 

 

 

 

 

 

 

нечетных элементах цикла. Тогда небазисным для новой базисной точки считается только один из них, например, тот, которому соответствует наибольшее значение функции цели. Остальные элементы считаются базисными со значением в новой базисной точке, равными нулю. В этом случае мы имеем вырожденную базисную точку.

4.6.3. Алгоритм метода потенциалов

Итерация 0.

0.1.Определить исходная базисная точка с помощью любого из алгоритмов построения начального базиса.

125

0.2. Вычислить значение целевой функции

z(x0 )

 

c x0

,

B

 

 

ij ij

 

 

(i, j )

B

 

 

- множество базисных индексов.

0.3.Положить k 0 .

Итерация k 1.

Пусть на k -той итерации получена базисная точка xk со значением целевой функции z(xk ) .

k+1. 1. Положить u1

0 и определить vj cij

u1 , (i, j)

B .

Если некоторое vs вычислено, то определить

 

ui

 

cis vs

,

 

 

 

 

 

 

 

(i, s)

.

 

и т.д., пока не будут вычислены все ui

,

 

 

 

 

 

 

 

 

 

i 1, m и vj ,

j 1, n .

 

 

 

k+1. 2. Вычисляют оценки небазисных векторов

 

 

ij

 

 

ui

vj

 

cij .

 

 

 

 

k+1. 3. Выбрать

i

0

j

0

max

ij .

 

 

 

 

 

 

 

 

 

 

i, j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k+1. 4. Если

i0 j0

 

 

0 , то СТОП,

xk - решение задачи.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k+1. 5. По правилу вычеркивания определить цикл,

 

образованный парой (i0 , j0 ) вместе с базисными парами

индексов.

 

 

 

 

 

 

 

 

 

 

Пусть

- множество четных элементов цикла,

-

 

множество нечетных элементов цикла без (i0 , j0 ) .

 

k+1. 6. Определить

 

 

min

xk

 

 

 

 

 

 

 

 

 

 

 

 

(i, j )

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k+1. 7. Положить

 

 

 

 

xk

1

,

 

 

 

 

 

 

 

 

 

 

 

 

i0 j0

 

 

 

xk 1

xk

 

 

 

 

, (i, j)

 

 

 

 

ij

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

xk 1

 

xk

 

 

 

 

, (i, j)

 

 

 

 

ij

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

126

k+1.

8.

Определить ci j

 

 

max

cij и элемент ci j

считать

 

 

l

l

(i, j ) , xij

0

 

 

l

l

 

 

 

 

 

 

 

 

 

 

небазисным.

 

 

 

 

 

 

 

 

k+1.

9.

Вычислить z(xk 1 )

z(xk )

i

 

j

.

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

 

 

 

k+1.

10. Положить k

 

k

1.

 

 

 

 

 

Пример. 3

Итерация 0. Определяем начальный базис методом минимального элемента.:

bj

12

 

8

 

7

 

7

 

6

 

ai

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

7

 

4

 

3

 

2

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

3

 

4

 

3

 

5

 

1

0

 

 

 

2

 

 

 

6

 

 

 

 

 

 

 

 

 

12

 

0

 

4

 

2

 

3

 

6

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

7

 

1

 

8

 

4

 

5

 

 

8

 

5

 

1

 

 

 

 

 

 

 

 

 

 

 

L(x0 ) 0*12+1*8 +1*6 + 2*6 + 3* 0 + 3*2 + 8* 5 + 4*1 = 76

{(1,4), (2,1), (2,3), (2,5), (3,1), (4,2), (4,3), (4,4)}

Итерация 1.

1.1Помечаем звездочками места, занимаемые базисными элементами. Полагаем u1 0 .

v4

c14

u1

2

u4

c44

v4

2

v2

c42

u4

1

v3

c43

u4

6 u2

c23

v3

3

v1

c21

u2

6

v1

c21

u2

6

v5

c25

u2

4

u3

c31

v1

6

1.2 Оценки

ij

записываем на свободные места таблицы:

 

 

 

 

 

 

 

 

 

 

 

 

 

127

Источник: https://studfile.net/preview/16565974/