Prof. univ. dr. Vasile Teodor NICA Catedra de Cibernetică Economică Academia de Studii Economice din Bucureşti Algoritmul Simplex Dual În Problema Transporturilor It is well known that the algorithm used to solve the classical transportation problem is the primal simplex algorithm of the general linear programming, adapted to the special structure of the problem. The paper describes an alternative method, based on the general dual simplex algorithm. The method is useful in analyzing and solving post-optimization instances. Key words: transportation problem, dual simplex algorithm, post- optimality. Introducere În problema clasică de transport, o cantitate Q dintr -un anumit bun, trebuie transportată – la cel mai mic cost – de la furnizorii m F F ,..., 1 cu disponibilele m a a ,..., 1 la consumatorii n C C ,..., 1 cu cererile n b b ,..., 1 .În ipoteza îndeplinirii condiţiei de echilibru: n j j m i i b a Q 1 1 (1) rezultă următorul model matematic:
16
Embed
Algoritmul Simplex Dual În Problema Transporturilor · Algoritmul Simplex Dual În Problema Transporturilor ... transportation problem is the primal simplex algorithm of the general
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Prof. univ. dr. Vasile Teodor NICA
Catedra de Cibernetică Economică
Academia de Studii Economice din Bucureşti
Algoritmul Simplex Dual În Problema Transporturilor
It is well known that the algorithm used to solve the classical
transportation problem is the primal simplex algorithm of the general linear
programming, adapted to the special structure of the problem. The paper
describes an alternative method, based on the general dual simplex
algorithm. The method is useful in analyzing and solving post-optimization
în care ijx este cantitatea de bun livrată de furnizorul iF consumatorului jC la
costul unitar de transport ijc .
(T) este un program liniar cu structură specială [1,2 ] şi ca urmare, metodele de
rezolvare uzuale nu sunt altceva decât adaptări ale unor metode ale programării liniare la această structură.
Astfel, metoda primală este în esenţă algoritmul simplex primal, adaptat la
particularităţile problemei (T). Ea pleacă de la o soluţie admisibilă de bază de start şi în continuare generează o secvenţă finită de soluţii admisibile de bază, din ce în
ce mai bune, în sensul micşorării progresive a valorii funcţiei obiectiv z, ultima
soluţie generată fiind chiar soluţia optimă.
Principala dificultate în aplicarea metodei primale o constituie prezenţa – foarte frecventă – a soluţiilor degenerate, cu consecinţe negative, uneori
semnificative, asupra “lungimii” procesului de optimizare.
Metoda primal duală este mai bine adaptată la tratarea fenomenului degenerării deşi, paradoxal, este mai puţin prezentă în textele de specialitate.
Metoda are la bază reducerea problemei de transport la o problemă de flux de cost
minim în reţeaua bipartită formată de furnizori şi consumatori. Exemplul
reprezentativ îl constituie algoritmul ungar de rezolvare a problemei afectării (caz
particular al problemei de transport cu m = n şi 1ji ba ).
Să considerăm următoarea situaţie de post optimizare. După determinarea
programului optim de transport şi aplicarea acestuia în cursul unei perioade de timp, are loc o modificare a disponibilelor furnizorilor, cantitatea totală oferită Q,
rămânând aceeaşi; de exemplu, un furnizor îşi reduce oferta ca urmare a unor
operaţii planificate de revizii şi reparaţii, deficitul de ofertă fiind acoperit, în
diferite cote, de către ceilalţi furnizori. Pot fi admise şi unele modificări ale cererilor consumatorilor, cererea totală rămânând totuşi neschimbată. Evident,
programul optim de transport corespunzător noii situaţii, se poate obţine rezolvând
problema modificată de sine stătător. Dacă schimbările în disponibile şi cereri nu
Algoritmul simplex dual în problema transporturilor
sunt de mare amploare,ne putem întreba dacă nu cumva, noul program optim de transport, se poate deduce – cu “mici” modificări – din programul optim anterior.
Din teoria generală a programării liniare se ştie că răspunsul este afirmativ dar
necesită utilizarea algoritmului simplex dual.
Ajungem astfel la chestiunea principială analizată în lucrare: cum
“lucrează” algoritmul simplex dual în cazul problemei de transport?
Articolul este organizat după cum urmează: în secţiunea 1 se introduc
notaţiile necesare şi se reaminteşte conceptul de bază dual admisibilă, concept
prezentat în cadrul specific teoriei reţelelor. În secţiunea 2 se arată cum se trece la o bază dual admisibilă “mai bună” în cazul în care soluţia asociată bazei curente are
componente negative. Algoritmul simplex dual, adaptat la specificul problemei de
transport, este prezentat în secţiunea 3. Lucrarea se încheie cu o ilustrare numerică.
1.Baze dual admisibile ale unei probleme de transport
Următoarele consideraţii sunt, în cea mai parte, reformulări ale unor fapte clasice. Pentru detalii vezi [ 1,3 ].
În general, dacă iF este un furnizor şi jC este un consumator, ambii aleşi arbitrar,
cuplul ),( ji CF se va numi rută (de transport).
Fie I o mulţime de cupluri de indici ),( ji cu mi1 şi nj1 .
Asociem lui I graful bipartit orientat G ( I ) în care:
Nodurile corespund furnizorilor mFF ,...,1 şi consumatorilor
nCC ,...,1 ;
Arcele corespund rutelor de transport ),( ji CF cu Iji ),( .
Definiţia 1. Mulţimea I se numeşte bază a problemei de transport (T) dacă graful asociat G ( I ) este un arbore, adică un graf conex şi fără cicluri.
Deoarece G ( I ) are m + n noduri, urmează că orice bază a problemei (T) are m + n – 1 componente.
Fixăm o bază I a lui (T). Variabilele ijx cu Iji ),( se vor numi, ca de obicei,
variabile bazice; toate celelalte vor fi numite nebazice.
Asociem bazei I doi vectori: o soluţie )()( ijxIx a problemei (T) – nu neapărat
admisibilă – şi un vector )()( ijI aflat în strânsă legătură cu duala:
În tabelul 2b) este indicată o soluţie optimă ),( vu a problemei duale (D) şi valorile
ij corespunzătoare. Rutele corespunzătoare bazei optime I sunt puse în evidenţă
prin graful bipartit G(I) din figura 5.
Presupunem că furnizorul F1 îşi diminuează oferta, deficitul fiind
compensat de ceilalţi furnizori în cotele 432 ,, aaa . Pentru moment, vom
presupune că modificările în ofertele furnizorilor sunt mici. În primul rând ne interesează efectul acestor”intenţii de modificare” asupra costului
total de transport.
Din teoria generală a dualităţii liniare rezultă că variaţia costului total:
z = costul “nou” – (costul “vechi” = 3710)
este dată de formula:
432414313212
4321443322
13162)()()(
)(
aaaauuauuauu
aaauauauauz
Remarcăm că, graţie relaţiei (8), z nu depinde de alegerea soluţiei optime duale
),( vu .
În cazul de faţă, z < 0 şi deci ne aşteptăm ca modificările să ducă la o micşorare a costului total al transportului. Concluzia nu este generală; dacă, de exemplu, F2 îşi reduce oferta ( fiind însă susţinut de către ceilalţi furnizori…) variaţia costului total
are expresia:
431424323121 11142)()()( aaaauuauuauuz
din care rezultă că “oferta de compensare” a lui F1 nu este avantajoasă…
Revenind la situaţia iniţială, suntem interesaţi totodată în a determina efectul
modificărilor asupra soluţiei )(Ix din tabelul 2a).
Deoarece G(I ) este un arbore, între furnizorul F1 şi ceilalţi furnizori există
lanţuri unice de arce de legătură:
Între F1 şi F2 există lanţul: 231 FCF ;
Între F1 şi F3 există lanţul: 331 FCF ;
Între F1 şi F4 există lanţul: 45331 FCFCF .
Luând pe rând aceste lanţuri şi transferând ofertele de compensare 432 ,, aaa
către F1, componentele ijx din soluţia optimă )(Ix , corespunzătoare rutelor ce
compun aceste lanţuri, se modifică conform schemei din figura 6. Celelalte
Se obţine astfel soluţia )(Ix asociată aceleaşi baze I dar corespunzătoare ofertelor
modificate. Ca urmare, )(Ix este o soluţie dual admisibilă. Ea este admisibilă şi în
consecinţă optimă numai dacă:
50050
10010
43243213
4435
aaaaaax
aax
De exemplu, pentru 1032 aa şi 54a - aceasta implicând o scădere a
ofertei furnizorului F1 cu 10 + 10 + 5 = 25 unităţi – problema modificată are soluţia optimă din tabelul 3a):
C1 C2 C3 C4 C5 C1 C2 C3 C4 C5
F1 10 25 40 F1 10 10 40
F2 30 40 F2 30 40
F3 55 5 F3 70 -10
F4 45 F4 60
Tabelul 3a) Tabelul 3b)
cu costul z’ = 3710 - 2 10 - 16 10 - 13 5 = 3465.
Dacă 1032 aa şi 204a , oferta lui F1 diminuându-se cu 40 unităţi, pentru
problema modificată se obţine soluţia dual admisibilă din tabelul 3b). Soluţia nu
mai este admisibilă şi atunci, costul asociat: z’ = 3710 - 2 10 - 16 10 - 13 20 = 3270 , va reprezenta numai o margine inferioară a costului total minim al problemei modificate.
Aplicăm acestei soluţii algoritmul simplex dual, descris în finalul secţiunii
precedente. Mărimile ij rămân cele asociate soluţiei optime a problemei originale
şi date în tabelul 2b).
Aplicăm procedura de marcaj plecând de la 01035x ; vezi tabelul 4a).
43213 50 aaax
223 30 ax
4333 40 aax
435 10 ax
445 40 ax
F1 F1
C3 F2
F3
F4
C5
Figura 6
Algoritmul simplex dual în problema transporturilor
Noua soluţie duală ),( vu şi mărimile jiijij vuc sunt evidenţiate în tabelul
4b).
În tabelul 3b) construim ciclul rutei ),( 24 CF , vezi tabelul 5a).
10 10 40 10 10 40
30 40 20 50
70 -10 60
60 10 50
Tabelul 5a) Tabelul 5b)
“Redistribuind” 1035x pe celelalte colţuri ale ciclului se obţine soluţia dual
admisibilă din tabelul 5b). Noua soluţie are toate componentele nenegative (adică este primal admisibilă) şi ca urmare este o soluţie optimă pentru problema
modificată. În notaţiile secţiunii 2, costul de transport asociat va fi:
.32902)10(3270)()( pqxII
Notă. În lucrarea [4] este descrisă o metodă de rezolvare a problemei de transport
bazată pe determinarea progresivă a unei soluţii optime a problemei duale. Organizarea calculelor este matricială şi total diferită de cea dată în această lucrare.