Sunteți pe pagina 1din 7

Curs 14

CAP. 8-PROBLEMA TRANSPORTURILOR


Problema de transport reprezinta un caz particular de model de programare liniara si
datorita formei sale particulare, rezolvarea acesteia se face cu algoritmi specifici.
Presupunem ca un produs este disponibil in m puncte (depozite, porturi, producatori)
A1 , A2 ,..., Am in cantitatile a1 , a2 ,..., am unitati de produs. Acest produs este cerut in alte n
puncte (consumatori, magazine) B1 , B2 ,..., Bn in cantitatile b1 , b2 ,..., bn unitati de produs. Se
cunosc costurile unitare de transport de la fiecare centru producator la fiecare centru
consumator in functie de distante, mijloace de transport. Se noteaza cu cij costul unitar de
transport de la Ai la B j .
Se pune problema sa determinam un plan de transport de la centrele producatoare la
centrele consumatoare astfel incat cantitatile necesare in centrele consumatoare sa fie
asigurate in cea mai mare masura, iar cheltuielile totale de transport sa fie minime.

B1

B2

....

Bn

disponibil

A1

c11

c12

....

c1n

a1

A2

c21
:
cm1

c22
:
cm 2

....
:
....

c2n
:
cmn

a2
:
am

b1

b2

....

bn

Bj

Ai

:
Am
necesar

In conditiile problemei ai 0, b j 0, cij 0 pot aparea situatiile:


1) Daca
2) Daca

i 1

j 1

i 1

j 1

ai b j atunci spunem ca problema este echilibrata;


ai b j , adica disponibilul este mai mare decat cererea, se adauga o

coloana, adica un centru fictiv de consum Bn 1 , care sa absoarba diferenta, iar toate
costurile unitare de transport pentru acest centru sunt nule.
3) Daca

i 1

j 1

ai b j , adica cererea totala este mai mare decat disponibilul, se adauga o

linie, adica un depozit fictiv Am 1 , avand diferenta de resursa, iar toate costurile unitare
de transport de la acest depozit sunt nule.
Obiectivul problemei este minimizarea cheltuielilor totale de transport si a
penalitatilor platite consumatorilor.
Vom nota cu xij cantitatea de produs ce se transporta din depozitul Ai spre
consumatorul B j . Pentru calcularea cheltuielilor totale de transport, trebuie facuta suma
produselor dintre cantitatile xij expediate de la sursa Ai la destinatia B j si costurile unitare de
transport cij .

Modelul matematic al problemei de transport echilibrate este:


m n

min(
cij xij )

i 1 j 1

n
xij ai , i 1, m
(1) j 1
,
m
xij b j , j 1, n
i 1

xij 0, i 1, m, j 1, n
si este caracterizat de urmatoarele:
- este un model de programare liniara cu m+n restrictii si m*n variabile;
-

numai m+n-1 restrictii sunt liniar independente datorita relatiei

i 1

j 1

ai b j ceea ce

inseamna ca o solutie admisibila de baza a problemei contine cel mult m+n-1


componente strict pozitive. De aici, o solutie admisibila care contine exact m+n-1
componente strict pozitive se numeste nedegenerata, iar in cazul in care contine mai
putin de m+n-1, degenerata.
sistemul de restrictii este compatibil adica totdeauna exista cel putin o solutie
ab
admisibila, de exemplu: xij mi j , i 1, m , j 1, n ;
ai
i 1

problema de transport admite solutie optima finita deoarece xij min{ai , b j } .

Rezolvarea problemei de transport are urmatoarele etape:


- determinarea unei solutii admisibile de baza initiale;
- testarea optimalitatii unei solutii;
- imbunatatirea solutiei.
Metode de determinare a unei solutii admisibile de baza: Au la baza aceleasi principii dar
difera prin modul de alegere a ordinii in care se atribuie valori pozitive variabilelor x pq din

baza. Presupunem ca am ales x pq . I se atribuie valoarea x pq min a p , bq . Avem trei cazuri:


1) a p bq , deci x pq a p si toate celelalte variabile din linia p vor lua valoarea zero. Se
inlocuieste bq cu bq' bq a p si se alege alta variabila de baza din tabela redusa (fara linia p).
2) a p bq , deci x pq bq si toate celelalte variabile din coloana q vor lua valoarea zero. Se
inlocuieste a p cu a 'p a p bq si se scoate din calcule coloana q.
3) a p bq si tabela se reduce la alegere cu linia p sau coloana q. Daca de exemplu se suprima
linia p, atunci bq devine zero. Se obtine o solutie degenerata de baza.
Solutia determinata cu ajutorul algoritmului expus este o solutie de baza. Componentele
nebazice nu se completeaza in tabel cu zero, casutele corespunzatoare ramanand libere, pentru
a nu se confunda componentele nebazice cu eventualele componente bazice nule. Metoda
generala este particularizata prin fixarea unei reguli de alegere a variabilelor care intra in
baza.

Metoda coltului de nord-vest: Regula dupa care se decide intrarea in baza a variabilelor este
ca la fiecare pas al algoritmului intra in baza variabila situata in casuta din coltul de N-V al
tabelei. Metoda nu tine seama de costurile unitare de transport, ci numai de cantitatile
disponibile si necesare.
Metoda elementului minim pe matrice: La fiecare pas al algoritmului intra in baza variabila
x pq daca c pq min cij . Rezulta de cele mai multe ori solutii initiale mai bune, cu costuri
i, j

totale de transport mai mici, decat cele obtinute prin metoda coltului de N-V. Daca la un
moment dat exista doua sau mai multe casute carora le corespunde acelasi cost unitar minim
de transport, o vom completa pe aceea pentru care cantitatea ce urmeaza a fi trnsportata este
mai mare.
Metoda elementului minim pe coloana: Incepand cu prima coloana intra in baza variabila x p1
daca c p1 min ci1 pana se satisface intreaga cerere a primului centru consumator. Se trece la
i

coloana a doua. Din coloana j intra in baza variabila x pj pentru care c pj min cij .
i

Metoda distributiv-modificata de obtinere a solutiei optime: Conform teoremei fundamentale


a dualitatii, o solutie X a problemei de transport (1) va fi optima odata cu solutia modelului
dual corespunzator ei. Primelor m restrictii din problema primala le atasam variabilele duale
ui , i 1, m si urmatoarelor n restrictii variabilele duale v j , i 1, n . Variabilele duale sunt
oarecare pentru ca ele corespund unor ecuatii in problema primala. Modelul dual se scrie sub
forma:
m
n

sup(
a
u

bjv j )

i i

i 1
j 1

ui v j cij
(2)
i 1, m , j 1, n

ui , v j oarecare
Introducand variabilele ecart de compensare, pentru a transforma inegalitatile in egalitati, in
cele m*n restrictii ale dualei si presupunand ca X este o solutie admisibila de baza
nedegenerata a modelului primal, atunci din teorema ecarturilor complementere, variabilele
ecart din modelul dual ce corespund variabilelor strict pozitive din modelul primal, trebuie sa
fie nule, deci variabilele duale verifica sistemul de ecuatii: ui v j cij . Acesta este un sistem
nedeterminat de m+n-1 ecuatii cu m+n necunoscute, care se rezolva atribuind unei variabile o
valoare arbitrara dupa care rezolvarea sistemului va conduce la solutia modelului dual.
Criteriul de introducere a unui vector in baza: A introduce un vector in baza inseamna a face o
casuta care este libera in vechea solutie admisibilade baza sa devina casuta ocupata in noua
soluite admisibila de baza, imbunatatita.
Criteriul de eliminare a unui vector din baza: Se scrie mai intai in matricea ce continea vechea
solutie, o valoare (nedeterminata) in casuta ce urmeaza a fi ocupata, apoi pornind din
aceasta casuta se determina un circuit ale carui varfuri se afla numai in casute ocupate si care
merge alternativ pe linii si coloane. Varfurile se marcheaza cu +,-,+,-,...incepand cu cu casuta
in care am trecut , indiferent de sensul de parcurgere ales. Se determina valoarea lui ca

fiind egala cu cea mai mica valoare marcata cu -, pentru ca noua solutie sa aiba tot
componente nenegative. Valoarea se aduna la toate componentele solutiei marcate cu + si
se scade din toate componentele marcate cu -, celelalte componente ramanand neschimbate.
Componenta care a devenit zero iese din baza. Se obtine o noua solutie admisibila de baza,
mai buna decat precedenta.
Exemplu:

A1

B1
8

B2
3

B3
5

B4
2

10

A2

15

A3

25

10

20

15

50

1) Se observa ca adunand valorile de pe ultima linie si de pe ultima coloana obtinem


acelasi rezultat 50, ceea ce inseamna ca problema este echilibrata.
2) Se determina o solutie initiala de baza prin metoda coltului de N-V, astfel: coltul situat
in N-V este completat cu min(5,10)=5. Pe prima coloana, jos, se scade valoarea 5 si
ramane 0 ,celelalte casute raman necompletate, iar pe prima linie ramane 5. Urmatorul
colt de N-V este pe linia 1 si coloana 2 si vom alege min(10,5)=5 si asa mai departe
pana se ajunge la ultima casuta de pe linia 3 si coloana 4 cu aceeasi valoare de
completat, si anume, 15.

5
5

10
10 15
10 20 15
5 10 0
0 0

5
0

10 5 0
15 10 0
25 15 0
50

Putem calcula la acest moment costul pentru cazul solutiei initiale de baza:
CI 5 8 5 3 5 1 10 6 10 4 15 3 205
3) Se rezolva sistemul liniar ui v j cij pentru casutele ocupate, dand uneia dintre
variabile o valoare arbitrara, de obicei se considera u1 0 si se determina celelalte.

u1

v1

v2

5
5

u2
u3
5

v3

v4
10

10

15

10 15

25

10 20 15

50

4) Pentru variabilele nebazice, casute neocupate, se calculeaza diferentele ui v j cij .


Daca aceste diferente sunt toate 0 , atunci solutia obtinuta este optima si problema
s-a terminat. Daca nu, se determina cea mai mare valoare obtinuta la calculul acestor
diferente si acolo unde a fost gasita se va trece in tabel +.
u1 v3 c13 0 8 5 3

u1 v4 c14 5 x14
u2 v1 c21 2
u2 v4 c24 2
u3 v1 c31 2
u3 v2 c32 10
Deci, pe pozitia (1,4) se trece + si de aici se incepe formarea circuitului, x14 va fi noua
varibila de baza si prin constructia circuitului vom vedea care valoare iese din baza.

u1

v1

v2

5
5

u2
u3
5

v3

v4
+

10

10

15

10 15

25

10 20 15

50

5) Pornind de la casuta marcata cu + si mergand pe linii si coloane obtinem elementele


care formeaza circuitul:+,5,5,10,10,15 si marcam valorile alternand semnele
+,-,+,-,+....

5+
5+ 1010+ 15-

6) Pentru celulele marcate cu se se determina cea mai mica valoare trecuta in aceste
casute, adica min(5,10,15)=5 si astfel se obtine 5 .
7) Noua solutie de baza se obtine scazand din cantitatile casutelor marcate cu si
adunand la cantitatile casutelor notate cu + si avem noul tabel:

5
10 5
15 10

Putem calcula acum costul


CII 5 8 5 2 10 1 5 6 15 4 10 3 180 care se
observa ca este mai mic decat costul pentru solutia initiala de baza.

8) Se reia algoritmul de la pasul 3 pentru noua solutie:


3) Se rezolva sistemul:
u1 v1 8
u1 0 v1 8

u1 v4 2
u2 v2 1
u2 v3 6

v4 2

u3 1
v3 3

u3 v3 4

u2 3

u3 v4 3

v2 2

4) Se calculeaza diferentele:
u1 v2 c12 5

u1 v3 c13 2
u2 v1 c21 7
u2 v4 c24 2

u3 v1 c31 8 x31

5
10 5
15 10

u3 v2 c32 10
x31 intra in baza
5) Circuitul +,5,5,10
5-

5+

10 5
15 10-

6) min(5,10) 5 .
7) Noua solutie:

10
10 5
15 5

CIII 10 2 10 1 5 6 5 1 15 4 5 3 140

8) Repetam algoritmul:
3) Rezolvam sistemul:

u1 v4 2

u1 0 v4 2

u2 v2 1

v2 2

u2 v3 6
u3 v1 1

u2 3
v1 0

u3 v3 4

v3 3

u3 v4 3

u3 1

u1 v1 c11 8 0
u1 v2 c12 5 0
u1 v3 c13 2 0

4) Se calculeaza diferentele:

u2 v1 c21 1 0
u2 v4 c24 8 0
u3 v2 c32 10 0

Se observa ca toate diferentele sunt negative, atunci putem spune ca ultimul cost este costul
optim, deci CIII 140 si se obtine pentru:

x14 10
x22 10
x23 5
x31 5
x33 15
x34 5

Tema:

A1

B1
3

B2
5

B3
9

B4
2

B5
18

A2

22

A3

20

25

60

15 12

S-ar putea să vă placă și