Общая формулировка транспортной задачи

 

Пусть имеется m-пунктов производства с объемом производства аi (i=1,m) и n пунктов потребления с объемом потребления bj (j=1,n). Сбалансированной моделью называется транспортная задачи, в которой

          Si=1 m ai= S j=1n bj

(Сколько произвели, столько и продали). Стоимость транспортировки Cij, тогда задача заключается в нахождении таких Xij, которые удовлетворяют следующим соотношениям:

         Sj=1nXij=ai>0  (i=1,m)

         Si=1mXij=bj    (j=1,n)

Необходимо минимизировать функцию

                C=Si=1mSj=1nCijXij

Так как выполняются условия

  Si=1mai=Si=1mSj=1nXij=Sj=1nSi=1mXij=Sj=1nbj, то имеется (m+n-1) ограничений, следовательно (m+n-1) базисных переменных. Если задача не сбалансирована, то для приведения ее к стандартному виду вводят фиктивные пункты производства или потребления, стоимость перевозки на которые полагается равной нулю. Решение транспортной задачи похоже на симплекс-метод.

Шаги:

1)нахождение начального допустимого решения

2)выделение из числа небазисных переменных новой, вводимой в базис переменной

3)выбор выводимой из базиса переменной с нахождением нового базисного решения и переходом на шаг 2.

Для шага 1 применяют три метода:

1.правило северо-западного угла

2.метод минимальной стоимости

3.метод Фогеля.

1 метод- начинают решение с левого верхнего элемента.

2 метод- выбирают переменную, которой соответствует наименьшая стоимость (самая дешевая продукция реализуется первой).

3 метод основан на понятии штрафа для каждой строки.

Шага 2 делается с помощью метода потенциалов.

Пример: Рассмотрим 2 склада и 2 магазина.

Ограничения на неотрицательность

x11>=0,x12>=0,x21>=0,x22>=0

x11+x12=a1       ai- количество грузов у поставщика i

x21+x22=a2       bi-количество  грузов, необходимое

x11+x12=b1       потребителю j

x12+x22=b2

Стоимость перевозки Cij

Z=C11+x11+C12x12+C21x21+C22x22

a1+a2=b1+b2- модель сбалансирована

Алгоритм решения задачи

(вещ Z, вещтаб C[1:2,1:2],X[1:2,1:2],A[1:2},B[1:2],лит y)

арг C,A,B

рез X,Y,Z

начало вещ v1,v2,v3,v4,x

v1=-b(1)+A(2)

v2=c(1,1)+C(2,2)-C(2,1)-C(1,2)

v3=c(1,2)*A(1)+C(2,1)*B(1)+C(2,2)*v1

если A(1)<B(1) то v4=A(1) иначе v4=B(1) все

если v2<=0 то если V4+v1>=0 то v4=v1 все все

если v2<>0 то y="решение одно" иначе y="решений много" все

если v2>0 то x=0;Z=v3 иначе h=v4;Z=v3+v2*v4 все

X(1,1)=x;X(1,2)=A(1)-x;X(2,1)=B(1)-x;X(2,2)=A(2)-B(1)+x

конец