algoritm simplex

Embed Size (px)

Citation preview

Bazele cercetrii operaionalePROGRAMAREALINIARALGORITMULSIMPLEXReamintim c presupunem c problema este la forma standard de maxim i c dispunem de o soluie de baz admisibil.Pasul 1.Se construiete tabelul simplex corespunztor bazei de care dispunemn ordinea urmtoare:1. pe linia a doua se trec toate variabilele ntr-o ordine oarecare;2. pe prima linie se trec coeficienii funciei obiectiv, fiecare deasupra variabilei corespunztoare;3. se construiete matricea A, fiecare coloan fiind format din coeficienii unei variabiledintoateecuaiile(ordineancareseparcurgecuaiile trebuie s fie aceeai pentru toate variabilele), avnd grij ca, coloanele s fie trecute n ordinea n care au fost trecute variabilele pe linia 2;4. se construiete baza B, ordinea coloanelor fiind cea n care apar ele n matricea A;5. se calculeaz B-1;6. se calculeaz B-1 A i se trece n partea central a tabelului;7. setrecvariabileleprincipalenadouacoloan, naafelnct, la intersecia liniei i coloanei corespunztoare acestei variabile, s se afle valoarea 1.8. se trec n prima coloan coeficienii corespunztori variabilelor principale din funcia obiectiv, fiecare n dreptul variabilei corespunztoare;9. se calculeaz soluia de baz cu formula B-1 b, avnd grij ca ordinea n care au fost trecui termenii liberi n vectorul b s fie aceeai cu ordinea n care au fost parcurse ecuaiile la formarea matricii A;10. se trec n a treia coloan valorile variabilelor principale din soluia de baz, fiecare n dreptul variabilei corespunztoare;11. se calculeaz f(xB) nmulind dou cte dou componentele coloanei 1 cuceledincoloana3aflatepeaceeai liniei adunndtoateproduselentreele (adic facem produsul scalar dintre cB i xB);12. se calculeaz pe rnd fiecare zj j = 1,...,n un zj obinndu-se nmulind scalar cB cu coloana j din B-1 A aflat n centrul tabelului (aceast linie se calculeaz i se trece doar n primul tabel, scopul ei fiind calcularea lui );13. se calculeaz pe rnd fiecare j j = 1,...,n scznd din linia lui z linia lui c (j = zj - cj)Pasul 2.Seanalizeazvalorilejcorespunztoarevariabilelor secundare(euor devzut c ntotdeauna, cei corespunztori variabilelor principale sunt toi 0, deci neinteresani). dac toi sunt mai mari sau egali cu 0 atunci soluia actual este cea optim. Dac exist j = 0 n afara bazei, atunci pot aprea dou cazuri:1) toate elementele din coloana ajdin B-1 A sunt mai mici sau egalecu0. AtuncitoatesoluiiledeformaxB-aj suntsoluii optime, unde > 0 oarecare;2) existocomponentaijacoloanei ajstrict pozitiv. Atunci introducnd variabila xj n baz n locul variabilei principal xi obinem alt soluie de baz optim. Dac apar numai cazuri de tipul 2), obinem toate soluiile de baz optime, mulimea 21Programarea liniartuturorsoluiiloroptime fiind format din toate combinaiile convexe ale acestora. Dacaparei cazul 1) atuncimulimeasoluiilor optimeestenemrginitfiind formatdincombinaiileconvexe ale soluiilor de forma xB- aj undexBsunt toate soluiile optime de baz. dac existj

< iji0 a3 i 1j09 j 4amin maxijjx i deci de calculat: i4i0 a3 i 14amini4x> =

,_

72762,1min79= 23i5i0 a3 i 15amini5x> =

,_

717113,2min74= 118i6i0 a3 i 16amini6x> =

,_

7271733,2,1min722= 32224Bazele cercetrii operaionalei8i0 a3 i 18amini8x> =

,_

753min76= 518i n final max (23,118,322,518) = 322 i corespunde tot lui 6.n concluzie, soluia actual nu este optim i soluia cea mai bun dintre cele posibile ca succesoare va avea variabila x6 printre cele principale.Analiznd coloana a6observm c exist componente strict pozitive (de fapt, n acest caz sunt chiar toate) i calculm pentru acestea rapoartele i obinnd:1 = 731 = 37, 2 = 712 = 14, 3 = 723 = 221 deciminimulcorespundevariabileix1iaceastaesteceacare vaieidinbaz.n cest moment cunoatem noua baz i vom construi tabelul simplex pe baza regulilor de calcul de la pasul 4:1. pivotul este a16 = 734. de exemplu, pentru elementul de pe poziia a34 avem dreptunghiul:i noua valoare de pe aceast poziie va fi:7372767373

,_

=1n final, tabelul corespunztor noii baze va fi: 32143 50 00cBxBxB x1x2 x3x4 x5x6 x7x8x9521x6x2x3373537321320311 1 032310320350 0 131341311322 0 037 3523164370385 0 0322 Continund algoritmul vom gsi tabelele: 32143 50 00cBxBxB x1x2 x3x4 x5x6 x7x8x92576737372Programarea liniar520x6x2x83143537321320311 1 032310320350 0 131320311311 1 035 380380310341 4 0314 32 143500 0cBxBxB x1x2x3x4 x5 x6 x7x8x9530x6x5x8512531540 0 1 15153510520 1 0 05351530511 0 1 15158 28520510 0 1 454522Ultimul tabel conine soluia optim, deoarece toi j0. Deoarece nu mai exist nici un j = 0 n afara celor din baz rezult c soluia optim este unic.Determinarea unei soluii de baz admisibile de startPresupunem nc odat c problema este la forma standard.Algoritmul simplex necesit, pentru pornire, o soluie admisibil de baz. Gsirea acesteia pur i simpluprinncercri nuestedelocosarcinuoar, gndindu-necaceastapresupune gsirea unui minor principal, inversarea acestuia i calcularea soluiei, abia n acest moment putnd vedea dac aceasta are toate componentele pozitive, aceast cutare putnd dura foarte mult. Rezolvarea problemei pleac de la observaia c singura baz pentru care calculul de mai sus se poate face imediat este matricea unitate, caz n care soluia de baz corespunztoare este chiar vectorul termenilor liberi. Aceasta presupune ca problema s aib toi termenii liberi mai mari sau egali cu 0 i n matricea A s existe toate coloanele matricii unitate.Dac toi termenii liberi pot fi fcui mai mari sau egali cu 0 foarte simplu, prin nmulirea eventual cu 1 a restriciei respective, existena tuturor coloanelor matricii unitate este evident c este foarte puin probabil i mai greu de obinut.n acest sensplecm de laobservaia c existena unui vector din coloana unitate printre coloanele matricii Aeste echivalent cu existena unei variabile care apare doar n ecuaia corespunztoarelui 1dinacel vector, cucoeficientul 1. Acest lucrupoatefi obinut ndou moduri:a) ncepnddelaprimaecuaie, cutmovariabilcarearecoeficientul de acelai semncutermenul liber, oscoatemdinaceastecuaienfunciedecelelalte variabile, o nlocuim n celelalte i repetm procedeul pornind de la a doua ecuaie. Pot aprea trei cazuri:1) la un moment dat obinemo ecuaie n care toi coeficienii variabilelor au semn contrar termenului liber, mcar unul dintre toi fiind diferit de 26Bazele cercetrii operaionale0. n acest caz ecuaia nu are evident soluie admisibil(pozitiv) i deci problema nu are soluie;2) toi coeficienii variabilelor i termenul liber sunt 0. nacest caz rezult c aceast ecuaie rezult din cele anterioare i ea va fi eliminat, trecndu-se la urmtoarea;3) se epuizeaz toate ecuaiile. n acest moment, variabilele care au fost scoase din fiecare ecuaie formeaz baza dorit. Procedeul demai suspoatepreaatractiv, dar presupuneintroducereaunui algoritm diferit desimplex, cuefect asupraomogenitii calculelor i avitezei delucru. De asemenea, prin efectuarea calculelor de mai sus, datele problemei nu mai au semnificaia economic iniial, ne mai putndu-se face interpretri economice.b) Pentrutoi vectorii coloanintroducemnecuaiilecorespunztoarecteo variabil cu coeficientul 1. Vom obine evident un nou sistem de restricii i rmne de vzut ce legtur este ntre soluiile acestuia i cel iniial. Cele dou sisteme au forma:A x = b iA x + y = bEste evident c o soluie a primului sistem este soluie i a celui de-al doilea (lum y = 0) iar o soluie aceluide-al doilea este soluie i pentru primul doar dac y = 0. Scopul nostru va fi deci, ca pornind de la soluia iniial a celei de-a doua probleme s ajungem laosoluieaacesteiancarey=0. inndcont cnsoluiiledebaz, variabilele secundare sunt toate egale cu 0, vom ncerca s scoatem din baz variabilele y. Scopul algoritmuluisimplexeste ns maximizarea funciei obiectiv,nu scoaterea auneiasau alteia din variabile din baz. Pentru a echivala cele dou scopuri putem proceda n dou feluri:1) Alegemonoufuncieobiectivcares-i atingextremul printre soluiile pozitive chiar pentruy=0i nmomentul cndamobinut soluia respectivpornimcuaceastacasoluieiniialalgoritmul simplexpentrufosta problem.2) Adugm la fosta funcie obiectiv noile variabile cu nite coeficieni deasemeneanaturalei nct aportul variabilelor ylavaloareafunciei sfie contrar scopului dorit (foarte mari pozitivi ntr-o problem de minim i foarte mari negativi ntr-o problem de maxim).Vom detalia n continuare cele dou metode:Algoritmul simplex n dou fazeDat problema de programare liniar la forma standard de maxim:( )' 0 xb x Ax c maxTfn care am aranjat deja ca toi termenii liberi s fie pozitivi (b 0).Faza 1 Construim problema:( )' + 0 y x,b y x Ay min gpecare orezolvm cualgoritmulsimplex pornind rezolvarea de la baza matrice unitate,putnd ajunge la dou situaii:27Programarea liniar1) minimul funcieigeste strict pozitiv. Aceasta este echivalent cu faptul c egalitatea Ax + y = b se poate obine doar pentru y > 0 sau altfel spus Ax > b pentru orice x 0, deci sistemul Ax = b nu are soluii admisibile i n concluzieproblema iniial nu are soluie.2) minimul funcieigeste 0. n acest caz, soluia optim obinut are y = 0, deci verific Ax = b fiind n concluzie o soluie admisibil de baz a primei probleme.Faza 2 ncepnd de la soluia gsit la faza 1 se rezolv problema iniial cu algoritmul simplex.Dezavantajul metodei const n faptul c tabelul simplex final de la faza 1 trebuie modificat pentru a obine tabelul simplex iniial de la faza 2 (vectorii x, c, cB, z, , f(xB), se elimin coloanele corespunztoare lui y) i n plus nu vom mai avea n tabelele simplex ale problemei iniiale inversa bazei (caresegseandreptul coloanelor matricii unitatedinprimafaz) necesarnanumite variante ale algoritmului simplex.Metoda bazei artificiale (metoda penalizrii)Dat problema de programare liniar la forma standard de maxim:( )' 0 xb x Ax c maxTfn care am aranjat deja ca toi termenii liberi s fie pozitivi (b 0).Construim problema:( )' + 0 y x,b y x AMy x c maxTgncareMesteoconstantpresupusfoarte mare (mai mare dect orice constant care arputea apare n rezolvarea problemei). Rezolvm problema cu algoritmul simplex pornind rezolvarea de la baza matrice unitate, putnd ajunge la trei situaii:1) problema are optim infinit. n acest caz, problema iniial are optim infinit.2) problema are optim finit i n soluia de baz avem cel puin o variabil din vectorul y. n acest caz problema iniial nu are soluii admisibile.3) problema are optim finit i n soluia de baz nu avem nici o variabil din vectorul y. nacest cazproblemainiialareoptimfinit, soluiaoptimi maximul funciei fiind aceleai cu cele ale problemei modificate.nfinal vomremarcafaptul cvariabilele ynucorespundunor mrimi economiceca celelalte, ele fiind introduse doar ca un artificiu de calcul pentru a putea porni algoritmul simplex. Din acest motiv ele se numesc variabile artificiale.28Bazele cercetrii operaionaleExemplu Fie problema de programare liniar:( )' + ++ 0 x , x2 x 4 x10 x x 3x 3 x 2 max2 12 12 12 1fForma standard a problemei va fi: ( )' + + ++ 0 x , x , x , x2 x x 4 x10 x x x 3x 3 x 2 max4 3 2 14 2 13 2 12 1fAvem deja termenii liberi i o coloan a matricii unitate,_

01 corespunztoare variabilei x3. Pentru a obine i a doua coloan,_

10 vom introduce variabila x5 cu coeficientul 1 n a doua ecuaie i n final vom avea de rezolvat problema:Algoritmul simplex n dou faze Metoda bazei artificiale ( )' + + + +0 x , x , x , x , x2 x x x 4 x1 0 x x x 3x m i n5 4 3 2 15 4 2 13 2 15g ( )' + + + + + 0 x , x , x , x , x2 x x x 4 x10 x x x 3Mx x 3 x 2 max5 4 3 2 15 4 2 13 2 15 2 1fAplicnd algoritmul simplex n dou faze vom obine n prima faz succesiunea de tabele:0 0 0 0 1cBxBxBx1x2x3x4x50 x310 3 1 1 0 01 x52 1 4 0 -1 12 1 4 0 -1 11 4 0 -1 00 0 0 0 1cBxBxBx1x2x3x4x50 x32194110 141410 x221411 041410 0 0 0 0 -1Amobinut optimul egal cu0nsoluiadebaz(x3,x2)carevafi soluiainiialpentru algoritmul simplexaplicat problemei iniialenadouafaz. Eliminmdintabel coloanalui x5, nlocuim valorile coeficienilor funciei obiectiv i deci i valoarea acesteia, valorile i obinem tabelul:29Programarea liniar2 3 0 0cBxBxBx1x2x3x40 x32194110 1413 x221411 04123450 043 2 3 0 0cBxBxBx1x2x3x40 x34 0 -11 1 32 x12 1 4 0 -14 0 5 0 -22 3 0 0cBxBxBx1x2x3x40 x43403113112 x13101313103200373202 3 0 0cBxBxBx1x2x3x40 x438 11 0 4 13 x210 3 1 1 030 7 0 3 0Soluia optim a primei probleme este deci x1= 0 i x2= 10 care d un maxim al funciei egal cu 30. Dac aplicm a doua metod vom obine succesiv tabele:2 3 0 0 -McBxBxBx1x2x3x4x50 x310 3 1 1 0 0-M x52 1 4 0 -1 1-2M -M -4M 0 M -M-M-2 -4M-3 0 M 02 3 0 0 -McBxBxBx1x2x3x4x50 x32194110 141413 x221411 0414123450 0 43M+43 30Bazele cercetrii operaionale2 3 0 0 -McBxBxBx1x2x3x4x50 x34 0 -11 1 3 -32 x12 1 4 0 -1 14 0 5 0 -2 2+M2 3 0 0 -McBxBxBx1x2x3x4x50 x4340311311 -12 x1310131310 0320037320 M2 3 0 0 -McBxBxBx1x2x3x4x50 x438 11 0 4 1 -13 x210 3 1 1 0 030 7 0 3 0 MRezultatul final este evident acelai.VARIANTEALEALGORITMULUISIMPLEX1. Algoritmul simplex dualPentruexpunereaacestui algoritmtrebuieintrodusenoiuniledebazdual admisibili soluie dual admisibil de baz. Prin definiie numim:soluie de baz dual admisibil =soluie de baz pentru care toi j 0baz dual admisibil = baz corespunztoare unei soluii de baz dual admisibileCa i n cazul algoritmului simplex, pentru a putea rezolva problema cu algoritmul simplex dual trebuie s dispunemdejadeo baz iniial dual admisibil.Aceast soluie poate exista ca urmare a unor calcule anterioare (vezi capitolul cu reoptimizarea) sau, ca i n cazul algoritmului simplex, poate fi aplicat o procedur prin care s gsim aceast baz. Prezentarea acesteia este mai complicat dect cea de la algoritmul simplex astfel nct: dac dispunem de o baz dual admisibil vom rezolva problema cu algoritmul simplex dual dac nudispunemde o baz dual admisibil vomrezolva problema cu algoritmul simplex.Pentru a evita orice confuzie, vom numi n continuare algoritmul simplex obinuit algoritm simplex primal i o baz admisibil baz primal admisibil.Se observ c o soluie dual admisibil nu este n general primal admisibil i reciproc, iar o soluie care este simultan primal i dual admisibil este o soluie optim i reciproc.Presupunem c am adus problema la forma standard de maxim i dispunem de o baz dual admisibili dispunemdejadedeobazdual admisibil. Algoritmul simplexdual constn 31Programarea liniarurmtorii pai:Pasul 1.Seconstruietetabelul simplexasociat acestei baze, lafel cai laalgoritmul simplex primal;Pasul 2.Se analizeaz componentele soluiei: Dactoatecomponentelesunt mai mari sauegalecu0atunci soluia este i primal admisibil, deci optim. Dacexistcomponentestrict negative,variabila corespunztoare celei mai negative (xi =km k 1x min ) este cea care iese din baz. Dac minimul este multiplu se ia una la ntmplare.Pasul 3.Se analizeaz linia li corespunztoare variabilei xi aleas la pasul 2: Dac toate componentele aij j = 1,...,n sunt mai mari sau egale cu 0, atunciamaveaoecuaiecu toicoeficienii necunoscutelor pozitivi itermenul liber strict negativ, deci problema nu are soluii primal admisibile. Dacexistcomponentestrict negative, atunci pentruacestease gseteacelindicepentrucare se obineijj0 aaminij0 deci soluia este optim (i unic) STOPChiar dac la prima vedere calculele par mai mprtiate i deci mai lente, pentru probleme mari, pe calculator se economisete foarte mult memorie i se mrete foarte mult viteza de calcul.Totui, marele avantaj al acestei metode este acela c, la fiecare iteraie, se folosesc datele problemei iniiale, ceea ce face ca erorile inerente de rotunjire s nu se propage, rmnnd n limite acceptabile.39