|
Modelarea problemelor de transport si aprovizionare
1.Retele de transport
1.1.Clasificarea problemelor de transport si aprovizionare
Graful asociat unei probleme clasice de transport este bipartit, nodurile care reprezinta furnizorii formeaza multimea S, iar nodurile corespunzatoare consumatorilor formeaza multimea T si se numeste retea de transport.
Pentru Cercetarea Operationala prezinta interes analiza problemelor de optim in retele de transport in urmatoarele ipoteze:
1.Cel putin o sursa poate aproviziona mai multe destinatii si cel putin o destinatie poate primi unitati de flux de la mai multe surse. Rutele de legatura pot avea si alte puncte comune in afara surselor si destinatiilor, acestea fiind numite puncte intermediare sau puncte de tranzit. Legaturile directe intre surse nu sunt excluse. In principiu, orice ruta poate fi parcursa in ambele sensuri, dar pot exista si rute cu sens unic.
50300
100
120
300
230 400
a) b)
destinatie sursa
Figura 1.
Totalitatea surselor, destinatiilor, al punctelor de tranzit si al rutelor de legatura formeaza reteaua de transport. Ansamblul acesta care formeaza reteaua de transport se identifica cu un graf neorientat sau partial orientat(vezi figura 1.).
Unele rute de legatura pot avea limitari superioare si/sau inferioare pentru volumul unitatilor de flux ce se deplaseaza intr-un anumit sens. Aceste limitari poarta numele de capacitati ce pot fi inferioare respectiv superioare. In continuare vom lua in considerare numai cazul in care toate capacitatile inferioare sunt egale cu zero, iar cele superioare sunt exprimate prin numere pozitive.
3.Exista un cost al deplasarii unei unitati de flux de la un punct al retelei la altul, acest cost poate fi exprimat in bani timp sau distanta. In unele situatii acest cost poate semnifica profitul obtinut de pe urma deplasarii. Pe aceeasi ruta atat costurile cat si capacitatile pot diferi in functie de sensul de parcurgere.
Intotdeauna ipoteza 1. va fi presupusa in timp ce celelalte doua pot fiinta atat separat cat si simultan.
a)In prezenta ipotezei 3. si absenta ipotezei se pune problema deplasarii cantitatii de flux Q de la surse la destinatii la un cost total minim. Putem obtine problema clasica de transport in cazul in care sursele sunt in legatura directa cu destinatiile. Daca exista si puncte intermediare obtinem problema transferului. In cazul particular al unei singure surse S, al unei singure destinatii T si a unei singure unitati de flux se obtine problema drumului de cost minim de la S la T.
b)In prezenta ipotezei si absenta ipotezei 3.se pune problema daca reteaua, ale carei rute sunt capacitate, este capabila sa permita acoperirea integrala a cererilor in punctele de destinatie. In cazul acesta vom folo si problema determinarii volumului maxim Q* de unitati de flux ce pot fi deplasate de la surse la destinatii. In cazul in care Q*<Q vor exista destinatii a caror cerere este acoperita partial si atunci se ridica problema maririi capacitatii de transfer a retelei.
c)In prezenta ambelor ipoteze se pune problema satisfacerii cererilor in punctele de destinatie la un cost de transport minim. Aceasta este problema fluxului (maxim) de cost minim.
1.Problema clasica de transport si PTE
Un produs omogen se afla disponibil in localitatile F1, F2,,Fm in cantitatile a1,a2,,am si este cerut pentru consum in centrele b1,b2,,bn.Se presupune cunoscut costul cij al transportului unei unitati de produs de la Fi la Cj. Se pune problema satisfacerii cererii in punctele de consum la un cost de transport minim.
Centrele furnizoare, cele consumatoare, legaturile directe intre ele si costurile unitare de transport sunt vizualizate de obicei printr-un graf orientat ca in figura 1.a).
Sub forma generala, un model liniar de tip transport poate fi scris astfel:
m n
[opt]f=a acijxij
i=1j=1
n
aXij ≤ai, 1≤i≤m
j=1
m
axij≥bj, 1≤i≤n
i=1
unde:
m n
1) a acijxij reprezinta fie costul total al operatiunii de tip transport (cand se
i=1j=1
cere minimizarea acestuia), fie profitul total al operatiunii de tip transport (cand se cere maximizarea acestuia);
2)ai reprezinta disponibilul furnizorului Di, 1≤i≤m;
3)bj reprezinta necesarul consumatorului Cj, 1≤j≤n;
4)cij reprezinta costul unitar (sau profitul unitar) pe relatia (Di,Cj);
5)xij reprezinta cantitatea transportata de la furnizorul Di la consumatorul Cj, x=(xij), 1≤i≤m, 1≤j≤n;
6)restrictia n
axij ≤ai,
j=1
arata ca nu se pot aloca tuturor consumatorilor mai mult decat este disponibilul furnizorului Di;
7)restrictia m
axij≥bj,
i=1
arata ca de la toti furnizorii se aloca pentru consumul Cj cel putin cat este necesarul sau;
m
8)a= aai, disponibilul (sau oferta) tuturor furnizorilor,
i=1
n
iar b=abj, necesarul (sau cererea) tuturor consumatorilor in
j=1
ipoteza ca insumarile au sens.
Se spune ca o problema de transport este :
a)echilibrata daca oferta totalaa este egala cu cererea totala, adica
m n
a= aai=abj=b.
i=1j=1
b)neechilibrata daca oferta totala este diferita de cererea totala, adica
m n
a= aai abj=b.
i=1j=1
Conceptul de echilibrare este fundamental pentru construirea procedurilor de solutionare a unei probleme de tip transport.
In cazul PTE rezulta un tabel de forma:
FurnizoriConsumatori
C1
C2
Cn
Disponibil
F1
C11
C12
C1n
d1
F2
C21
C22
C2n
d2
Fm
Cm1
Cm2
Cmn
dm
Cerere
q1
q2
qn
Q
Tabelul 1.
La problema de tip neechilibrat in scopul echilibrarii acesteia intalnim doua cazuri:
m n n m
1) Daca aqi<adj, sfiind oferta, s = adj-aqi, in scopul
i=1j=1 j=1 i=1
echilibrarii se introduce un consumator fictiv, de unde rezulta un tabel de forma :
FurnizoriConsumatori
C1
C2
Cn
Cn+1
Disponibil
F1
C11
C12
C1n
0
d1
F2
C21
C22
C2n
0
d2
Fm
Cm1
Cm2
Cmn
0
dm
Cerere
q1
q2
qn
S
Q
Tabelul
m n mn
2) Dacaaqi>adj, D fiind cererea, D=aqi-adj,in
i=1 j=1i=1 j=1
scopul echilibrarii se introduce un furnizor fictiv, de unde rezulta un tabel de forma:
FurnizoriConsumatori
C1
C2
Cn
Disponibil
F1
C11
C12
C1n
d1
F2
C21
C22
C2n
d2
Fm
Cm1
Cm2
Cmn
dm
Fm+1
0
0
0
D
Cerere
q1
q2
qn
Q
Tabelul 3.
In concluzie, rezulta ca orice problema de tip neechilibrat poate fi transformata in PTE.
1.3.Formalizarea problemei PTE
Posibilitati de rezolvare
Forma particulara a problemei de tip transport a condus la unele metode specifice relativ simple, de determinarea a solutiei de baza .
Cele mai folosite metode sunt:
-metoda costului minim pe ansamblu (tabel);
-metoda diferentelor maxime (VOGEL).
Metoda costului minim pe ansamblu (tabel)
Aceasta metoda consta din a aloca pentru fiecare pereche sau relatie (Di,Cj) a cantitatii xij egala cu minimul dintre cerere si oferta existente in momentul acelei alocari, procedeul se aplica pe tabel in ordinea crescatoare a costurilor unitare cij.
Metoda diferentelor maxime (VOGEl)
Aceasta este o metoda mai elaborata.
Presupunem costurile unitare de transport inscrise intr-un tabel cu m randuri si n coloane.
1)Pe fiecare rand si pe fiecare coloana a acestui tabel se calculeaza diferenta dintre cel mai mic cost de transport si cel imediat superior; daca costul minim nu este unic, diferenta se va lua egala cu zero.
2)Se identifica randul sau coloana cu cea mai mare diferenta si aici, in ruta de cost minim, se executa prima alocare din algoritmul precedent.
3)Se refac diferentele pe randurile si coloanele neblocate folosind numai costurile neblocate, dupa care se reia procedura de alocare.
Voi prezenta in continuare intr-o schema logica algoritmul de rezolvare a PTE.
Figura Schema logica a algoritmului de rezolvare a PTE prin metoda Simplex
1.4.Problema de transfer
In problema clasica de transport, sursele erau in legatura directa cu destinatiile, rutele erau orientate de la surse catre destinatii si nu era permis nici un transport intre doua surse sau intre doua destinatii. Problema de transfer este o generalizare a problemei clasice de transport in urmatoarele directii:
.In reteaua asociata exista si centre intermediare sau de tranzit ; pot exista legaturi intre surse sau destinatii; ca urmare,este posibil ca o sursa (o destinatie) sa 'functioneze' la un moment dat si ca punct de tranzit pentru unitati de flux provenind de la o alta sursa (sau care se deplaseaza catre o alta destinatie).
.Pe unele rute de transport pot fi efectuate in ambele sensuri,costul unitar al transportului putand depinde de sensul de parcurgere al rutei.
Diferentele existente intre retele asociate unei probleme aclasice de transport respectiv unei probleme de transfer sunt puse in evidenta in figura 1.
Modelul matematic al problemei de transfer
Problema de transfer se poate descrie in urmatorii termeni.
Exista n localitati, notate 1,2,,n si se pune problema organizarii transportului unui anumit produs omogen intre aceste localitati la un cost total minim. Intre unele localitati exista legaturi directe numite rute. Pe fiecare ruta este precizat un cost al transportului unei unitati de produs de la o extremitate la cealalta. Este posibil ca aceste costuri unitare sa depinda de sensul de parcurgere al rutei respective. Pentru uniformitatea expunerii vom presupune ca intre oricare doua localitati i si j exista o legatura directa accesibila in ambele sensuri, convenind ca daca o asemenea ruta sau sens de parcurgere nu exista in realitate, costul corespunzator sa fie luat egal cu +
Ansamblul localitatilor si al rutelor de legatura poarta numele de retea de transport si poate fi vizualizata printr-un graf finit, neorientat sau partial orientat, simplu si conex.
Nodurile retelei sunt diferentiate in:
-surse: localitati in care produsul este disponibil pentru a fi transportat in alte locuri;
-destinatii: localitati in care produsul este cerut pentru consum, cererea neputand fi acoperita din productia locala;
-centre intermediare (de tranzit): localitati in care produsul se gaseste doar in tranzit eventualul consum fiind asigurat din productia locala.
Pentru fiecare i=1,.,n vom nota:
-ai, cantitatea disponibila in nodul i pentru a fi transportata spre alte localitati.Evident ai>0 daca i este o sursa si ai=0 in celelalte cazuri.
-bi, cantitatea neta solicitata pentru consum in nodul i.Daca i este o destinatie atunci bi>0, in celelalte noduri bi=0.
-cij (undei j), costul transportului unei unitati de produs de la i la j.Vom presupune ca cij>0 si ca cij=+ in cazul in care deplasarea de la i la j nu este posibila in realitate.Pentru simplificarea notatiilor vom pune cij=0.
-xij (i j), cantitatea de produs transportata din nodul i in nodul j. Daca transportul de la i la j nu este permis conditia cij=+ va implica xij=0 in orice solutie admisibila a problemei.
-xj, i= 1,.,n cantitatea de produs aflata in tranzit in nodul i (adica primita din unele localitati si expediata spre altele).
Putem atasa fiecarui nod al retelei de transport urmatoarele relatii:
n
axik-xij=ai , i=1,.,n(1)
k=1
k i
sau: Totalul unitatilor Cantitatatea aflata Productia
expediate din - in tranzit in= in nodul i
nodul inodul i (disponibila
spre a fi
expediata
catre alte
noduri)
n
axik-xij=bi , i=1,.,n(2)
k=1
k I
xij 0 ,xij 0 (3)
Variabilele xij , i j si xij nu pot lua decat valori pozitive.
sau: Totalul cantitatilor Cantitatea aflata Consum net
ajunse in nodul i - in tranzit in nodul i = in nodul i
Costul transporturilor efectuate in cele n localitati este reprezentat prin urmatoarea functie ce trebuie minimizata
n m
(min)f=aacijxij (4)
i=1 j=1
unde , cij=0 , i=1,.,n.
Ansamblul restrictiilor (1) si (2), conditia de nenegativitate (3) si functia obiectiv (4) constituie modelul matematic al problemei de transfer. Problema astfel definita este compatibila daca si numai daca totalul l al cantitatilor expediate din surse este egal cu totalul cantitatilor ajunse in destinatie, adica:
nn
aai=abj=L (5)
i=1j=1
Restrictiile (1) si (2) ca si modul de formare al functiei obiectiv (4) pot fi citite usor pe liniile si coloanele tabelului 4.:
C11=0
-X11
C12
X12
C1n
X1n
a1
C21
X21
C22
-X22
C2n
X2n
a2
Cn1
Xn1
Cn2
Xn2
Cnn
-Xnn
an
b1
b2
bn
L
Tabelul4.
Reducerea problemei de transfer la problema clasica de transport.
Se constata ca in nici un nod cantitatea tranzitata nu poate depasi 'plafonul' l definit in (5).Pe aceasta baza introducem variabilele nenegative:
xii=L-xii , i=1,.,n
Substituind xii=L-xii (6)
in ecutia (1) si (2) problema de transfer se reduce la problema clasica de transport echilibrata:
n
axik=L+ai , i=1,n
k=1
n
axik=L+bi , i=1,n
k=1
xij 0 , i,j=1,n (7)
n m
(min)f=aacijxij
i=1j=1
Dupa rezolvarea problemei (7), relatia (6) ne permite sa punem in evidenta cantitatile aflate in tranzit in nodurile retelei.
Flux intr-o retea de transport
1.Problema cererii si a ofertei
Enunt: O anumita marfa este disponibila intr-un numar de locuri iIs si este ceruta in alte locuri jIt in cantitatile bj, jIt.
Admitem ca :
aai=abj=Q
iIs jIt
Intre surse si destinatii exista o retea de legatura, unele directe, altele indirecte. Pe unele transoane se poate circula in ambele sensuri, pe altele nu. Exista, de asemenea, limitari in ceea ce priveste cantitatile transportate de la un punct la altul. Intrebarea ce se pune este daca reteaua capacitata permite satisfacerea integrala a cererilor.
Problema cererii si a ofertei se reduce la o problema de flux maxim astfel:
se completeaza reteaua originala cu:
-un nod s si rutele orientate (s,i), iIs dotate cu capacitatile ai;
-un nod t si rutele orientate (j,t), jIt dotate cu capacitatile bj;
Un flux din reteaua extinsa de la s la t se poate asimila deplasarii unei cantitati de marfa din locul in care aceasta se afla disponibila spre locul unde este ceruta pentru consum. De aici rezulta ca valoarea oricarui flux de la s la t nu poate depasi valoarea Q. Construind fluxul maxim f* cererea in punctul de destinatie va fi acceptat integral numai daca v(f*)=Q.
In prima figura de mai jos este vizualizata o retea de transport cu doua surse si trei destinatii, iar in cealalta apare reteaua extinsa.
9
17
15
13
6
a)reteaua initiala
b)reteaua extinsa
figura 3.
In cazul in care in reteaua initiala totalul cantitatii de marfa ceruta difera de totalul cantitatii cerute, problema se va echilibra reducand sau majorand proportional cantitatile disponibile/cerute in nodurile sursa/destinatie.
Flux de volum maxim
Fie G=(X,T) o retea de transport finita, fara bucle cu un nod de intrare s si unul de iesire t. Fiecarui arc uIT al grafului ii este asociata o capacitate c(u)IZ.
Daca j(u) este fluxul asociat unui arc uIT, atunci, acesta, verifica relatia
0 j(u) c(u).
Fie j(u)IZ, marime intreaga.
Prin reteaua de transport se propaga un flux j j (u))uIT care verifica proprietatea ca : « Suma fluxurilor pe arcele incidente spre interior, intr-un nod x este egala cu suma fluxurilor pe arcele incidente spre exterior, in acelasi nod x »,
aj(u)=aj(u).
uIU-x uIU x
Proprietatea mai sus enuntata se numeste legea conservarii fluxului.
Fluxul reprezinta acea cantitate de materie ce trece prin arc (sau prin graf), materializata in vehicule, lichid,etc.
js reprezinta valoarea fluxului care circula printr-o retea de transport in nodul de intrare s.
jt reprezinta valoarea fluxului care circula printr-o retea de transport in nodul de iesire t.
Din legea conservarii fluxului rezulta urmatoarea relatie :
js aj(u)=f aj(u)=jt ,
uIU-tuIU s
f-valoarea fluxului.
Daca pentru un arc uIT avem j(u)=c(u), arcul u este numit saturat.
Determinarea unui flux de volum maxim, ce trece prin reteaua de transport considerata, revine la determinarea unui flux care verifica conditiile de mai sus si pentru care valoarea f este maxima.
3.Algoritmul lui Ford-Foulkerson
Pentru determinarea unui flux de valoare maxima intr-o retea de transport data, se parcurge in general trei etape :
Etapa 1: Construirea unui flux compatibil
Fie intr-o ordine oarecare drumurile nesaturate care unesc intrarea s si iesirea t.Fie µ1 un drum nesaturat de la s la t.Fluxul propagat de-a lungul acestui drum, este dat de urmatoarea relatie :
ji =min[c(u)-j(u)]
uI Vom obtine un nou flux care satureaza cel putin un arc, cu relatia :
j(u)+ji ,cand uIµi
j(u)=
j(u) , cand uIµi
Daca reteaua de transport contine muchii, in identificarea drumurilor vom avea grija ca o ruta neorientata (muchie) sa nu fie folosita decat intr-un singur sens. In momentul identificarii unui drum se orienteaza si rutele. Pe fiecare arc se insumeaza fluxurile propagate.
Suma fluxurilor propagate de-a lungul drumurilor identificate este egala cu fluxul propagat in retea.
f aji
Etapa 2: Determinarea fluxului de valoare maxima
Pentru aceasta etapa se aplica urmatorul procedeu de marcare :
i)se marcheaza intrarea s cu [+] ;
ii)daca nodul i este marcat si (i,j)IT cu j(i,j)<c(i,j) atunci nodul i se marcheaza cu [+i];
iii)daca nodul j este marcat si (i,j)IT cu j(i,j)>0 atunci nodul i se marcheaza cu [-j] ;
vi)daca i este nod marcat si (i,j) este arc saturat atunci nodul j nu se marcheaza.
Daca iesirea t va fi marcata atunci exista un drum de la s la t.De-a lungul acestui drum notat µk se propaga un flux dat de relatia urmatoare :
jk= min(min(c(u)-j(u)), min j(u)), jk>0,
uIBuIC
B=multimea arcelor pe care se efectueaza marcaj de tip ii),
C=multimea arcelor pe care se efectueaza marcaj de tip iii).
Vom obtine un flux nou, imbunatatit, cu relatia
j(u)+jk , cand uIB
j(u)= j(u)-jk , cand uIC
j(u),in rest
Algoritmul se termina, in momentul in care nodul de iesire t al retelei nu mai poate fi marcat.
Fluxul de valoare maxima in reteaua de transport este egal cu suma fluxurilor propagate de-a lungul drumurilor si lanturilor care unesc nodul de intrare s cu nodul de iesire t.
Etapa 3: Determinarea taieturii de capacitate minima
Notam cu A multimea nodurilor nemarcate ale retelei, conform procedeului de marcare din etapa Multimea arcelor (i,j) cu iIA, jIA[incidente spre interior multimii A] notata cu UA se numeste taietura de capacitate minima in graf.
U A, granita intre nodurile marcate si nemarcate.Cu C(U A) vom nota capacitatea taieturii si se defineste ca fiind suma capacitatilor arcelor de :
C(U A)=ac(u)
uIU A
In conformitate cu enuntul teoremei lui Ford-Foulkerson intr-o retea de transport data, fluxul de valoare maxima este egal cu capacitatea taieturii de valoare minima:
maxf j)=minC(U A)
j s A
tIA
Arcele taieturii de capacitate minima fiind saturate inseamna ca pentru marirea fluxului propagat trebuie marita capacitatea unuia sau mai multor arce ale taieturii.
Varianta a algoritmului lui Ford-Foulkerson
Considerand un graf orientat, partial orientat sau neorientat, cu o intrare numita nodul sursa si o iesire numita nod terminal.
Se cere fluxul de valoare maxima intre nodul sursa si nodul terminal intr-o perioada de timp. Marimea fluxului este limitata pe fiecare muchie sau arc de capacitate care specifica disponibilul maxim in fiecare directie a arcului. Notam cu cij capacitatea arcului (i,j) in directia i j; cij reprezinta capacitatea aceluiasi arc (i,j) dar in cealalta directie j i. Daca un arc este orientat capacitatea in directia opusa este egala cu zero.
Fie C=(cij), matricea capacitatilor grafului.Inexistenta unui arc in graf, in matricea C se pune in evidenta prin '-'.
Consideram s ca fiind nodul sursa, iar t nodul terminal si n numarul nodurilor in graf.
Vom urma urmatorii pasi :
Pasul 1: -se determina un drum µ care conecteaza nodurile s si t, astfel ca, fluxul propagat sa fie mai mare ca zero pe fiecare arc al drumului. Daca nu exista un astfel de drum, se trece la pasul 3. Pasul 2: -se marcheaza cu cij capacitatile arcelor selectate in drumul µ in directia s t si cu c+ij capacitatile arcelor aceluiasi drum in directia opusa t s.
Se defineste q=min>0.
Matricea C mai sus definita, se modifica astfel :
i) se scade q din toate elementele marcate cij ;
ii) se aduna q la toate elementele marcate c+ij.
Cu aceasta noua matrice C se trece la pasul 1.
Conform modificarii i) cantitatea q propagata de la nodul s la nodul t trebuie redusa din capacitatile arcelor drumului m. Pe de alta parte ii) este introdusa pentru conservarea capacitatii arcelor. Descresterea capacitatii unui arc intr-o directie este echivalenta cu cresterea capacitatii aceluiasi arc in directie opusa.
Pasul 3: -in cadrul acestui pas se determina fluxul de valoare maxima in retea.
Daca C=(cij) este matricea initiala a capacitatilor vom nota cu C*=(c*ij) ultima matrice in urma modificarilor. In C* nu se mai identifica nici un drum de la nodul s la nodul t.
Fluxul in arcele grafului se calculeaza folosind urmatoarea formula :
cij - c*ij, daca cij>c*ij
jij
0 , daca cij c*ij
Fluxul maxim intre nodul sursa si nodul terminal este :
j0 ajsi ajjt
ij
j0=suma marimilor q determinate in iteratiile (pasul 2) algoritmului.