26
Universitatea Dunărea de Jos din Galaţi Facultatea de Ştiinţe şi Mediu ALGORITMUL SIMPLEX Prof.coordonator : Bocaneala Corina

Algoritmul Simplex

Embed Size (px)

Citation preview

Page 1: Algoritmul Simplex

Universitatea Dunărea de Jos din Galaţi

Facultatea de Ştiinţe şi Mediu

ALGORITMUL SIMPLEX

Prof.coordonator :Bocaneala Corina

Realizatori:Grigorescu Maria

Chiritoiu Tiberiu

Page 2: Algoritmul Simplex

Programare liniară

Programarea liniară este o metodă matematică de optimizare cu aplicaţii în diverse domenii ca: industrie, agricultură, probleme de transport si repartiţie, investiţii,reclame, finanţe.

Scopul principal constă în determinarea alocării optime a unor resurse, de care se dispune în cantităţi limitate, pentru a se obţine valoarea optimă a unui anumit obiectiv, de exemplu minimizarea costurilor de producţie sau maximizarea profitului.

În domeniul economic, asemenea probleme de programare liniară sunt foarte naturale. Astfel, firmele încearcă să maximizeze profiturile sau să minimizeze costurile. Experţii în planificare macroeconomică se preocupă de maximizarea bunăstării unei comunităţi economico-sociale. Consumatorii doresc să cheltuiască venitul lor într-un mod care să le maximizeze satisfacţia (de natură materială dar şi spirituală etc.)

Aceste probleme constau în maximizarea sau minimizarea unei funcţii liniare, numită funcţie obiectiv, ale cărei variabile trebuie să satisfacă:

• un sistem de relaţii date sub forma unor ecuaţii şi / sau inecuaţii liniare nestricte, denumite generic restricţii;

• cerinţa de a lua numai valori numerice nenegative (≥0).

Exemple de probleme de programare liniară

Utilizarea optimă a resurselor

Unmanagerdeagenteconomictrebuiesărezolvedestuldedesurmătoarea problemă:

Resurselepecareleareladispoziţie(materieprimă,forţă de muncă, maşini- unelte,resursefinanciare etc.) sunt în cantităţi limitate. Fie inumărul de ordine al resurseişifie bi cantitateadisponibilădinresursa i. Cu ajutorul acestor resurse se

pot desfăşura mai multe activităţi (de exemplu: procese de producţie).Fie jnumăruldeordinealactivităţiidesfăşurateşifie xj nivelul(necunoscut)

lacaretrebuiesăsedesfăşoareaceastăactivitate.Deexemplu,pentruprocesulde producţie j, careconstăînfabricareaunuianumitprodus,senoteazăcu xj cantitateacevafiprodusă.Fie aijcantitateadinresursa i necesarăproducerii

uneiunităţidinprodusul j. Sepresupunecă aij nudepindedecâtdetipulresursei (i)

şidetipulprodusuluirealizat (j) şinudecantităţileproduse,ceeaceconstituie evident o simplificare a situaţiei reale.

Cu aceste notaţii se pot determina mărimile următoare: cantitateadinresursa

ifolosităpentruproducereacantităţiixj,careesteaijxj;

cantitateatotalădinresursa i folosităpentruproducţiatotalăformatădin n produse:ai1x1+ai2x2+...+ainxn

Page 3: Algoritmul Simplex

Deoarece nu se poate consuma din resursa i mai mult decât cantitatea de care se dispune, trebuie săfie respectate condiţiile:

ai1x1+ai2x2+...+ain xn ≤ bi, (∀) 1 ≤ i ≤ m,sau (1)

xj reprezentândcantitateacetrebuieprodusădinsortimentul j,

eanupoatefi unnumăr negativ: xj ≥ 0, j∈{1, 2,..., m}.

(2)Inecuaţiile (1) se numesc restricţiile problemei, iar (2), condiţiile de

nenegativitate.Sistemuldeinecuaţiiliniare(1)şi(2) poate avea o infinitate de soluţii, o

soluţie sau nici una. Pentru problemele corect puse, cel mai frecvent este cazul cu o infinitate de soluţii.

Adoptareauneivariantede plan (luarea unei decizii) se face pe baza unui criteriu economic, ca de exemplu venitul sau profitul să fie maxim.Dacăsenoteazăcu cjpreţul de vânzare al unei unităţi din produsul j şi cu dj costulunitarpentruacelaşiprodus(sepresupune,pentrusimplificareaproblemei, căatâtpreţuldevânzarecâtşicostulnudepinddecantitateaprodusă,ceea ce nuprea este în concordanţă cu realitatea), atunci venitul total va fi iar cheltuielile de producţie şi deci profitul va fi:

(3)

Problemacar esepuneacum estedeadeterminaaceavariantădeplan,adică aceasoluţieasistemuluideinegalităţi(1),(2)care dă pentruprofitul(3) valoareamaximă.În acest moment, din acea problemă economică s-a obţinut următoarea problemă matematică:

Aceasta este oproblemăde programare liniară, sauprogram liniar.

Problema de transport

Seconsiderăcăexistă mcentredeaprovizionare(depozite) şi n centre de consum (punctedelucru,uzine,magazineetc.).Sepuneproblemasăsedetermine unplandetransportpentruunprodusomogencareseaflăîncantitatea ai la depozitul (1 ≤ i ≤ m)şiestecerutîncantitatea bj lacentrul j (1 ≤ j ≤ n).Se noteazăcu

Page 4: Algoritmul Simplex

xij cantitateanecunoscutăcevafitransportatădeladepozitul i la centruldeconsum j şicu cij costultransportuluiuneiunităţidin produsul consideratdeladepozitul i lacentrul j (pentrusimplificaresepresupunecăacest cost unitar nu depinde de cantitatea transportată pe ruta respectivă).

Se pot exprima atunci următoarele mărimi:– cantitatea cerută de la depozitul i la toate cele n centre de

consumai= xi1 + xi2 + ... + xin = cantitatea aflată la depozitul i,(4)

– cantitatea transportată de la toate cele m depozite la centrul de consum jbj= x + x + ...+ x = necesarul la centrul de consum j,

(5)– costul transportului de la depozitul i la centrul de consumj

estecijxij.

O condiţie evidentă este:xij≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n .

Costul total al transportului de la toate cele m depozite la toate cele n centre de consum este

Pentru a putea efectua transportul este necesar caegalitate numită şi condiţia de balansare saude echilibru.

Sistemuldeecuaţii(4),(5)areoinfinitatedesoluţii.Dintreacestea trebuie alesecelecaredaucostuluitotaldetransportvaloareaminimă.Se obţine astfel un programliniar:

care se numeşte program de transport.

Alocarea optimă a fondurilor financiare

Având la dispoziţie o sumă totală S care poate fi investită în diverse activităţi j, 1 ≤ j ≤ n, fiecare producând un anumit profit unitar aj , 1 ≤ j ≤ n, se pune problema determinării sumei xj , 1 ≤ j ≤ n, investită pentru activitatea j, astfel încât să se obţină un profit maxim, adică:

Page 5: Algoritmul Simplex

Problemamaipoateficomplicatădândanumiteregulisuplimentare în legătură cuposibilitateadeinvestiţie,cuexistenţaunuiriscal investiţiilor şi neliniaritatea profitului total.

Gestionarea optimă a unui depozit

Săconsiderăm problemafuncţionăriiunuidepozitcarecumpărăşivindeun anumitproduscuscopulmaximizăriiprofituluipeo anumită durată de timp. Depozitulareoanumităcapacitatefixă Sşiuncostunitardestocare h. Preţul produsuluifluctueazăde-a lungul perioadei de analiză, dar pe durata unei unităţi de timppreţuldeachiziţieşipreţuldevânzaresuntaceleaşi.Depozitulesteiniţialgol şi trebuie să rămână gol la sfârşitul perioadei de analiză.

Modelarea problemei.Fie:

− xistocul din depozit la începutul perioadei i,− dicantitatea achiziţionată în perioada i,− bicantitatea vândută în perioada i şi− pi preţul pe perioada i.

Dacă sunt n intervale de timp avem:

Se obţine astfel o problemă de programare liniară.

Problema dietei

Sepresupunecăexistă n alimentediferite,cupreţulunitar ci pentru alimentul i, dincaretrebuiesăsepregăteacăodietă. Dietatrebuiesăconţină zilnic m ingredientenutritiveşidinfiecareingredient j,minimum bjunităţi.Se presupunecăounitatedinalimentul iconţine aji unităţidiningredientul j.Să sedetermineceamaieconomicădietăcaresatisfaceminimulnutriţionalcerut.

Modelarea problemeiSenotează xicu număruldeunităţidinalimentul i conţinutîndietă.Trebuie

minimizat costul total al dietei

Page 6: Algoritmul Simplex

min{c1x1+ c2x2+...+ cnxn}supus la restricţiile următoare date de conţinutul în ingrediente nutriţionale

Problemacarearezultatestetotoproblemădeprogramareliniară.Acelaşitip de problemă poate apărea în realizarea amestecurilor de tip mortar, beton etc.

Metode de rezolvare a problemelor de programare liniara

Exista mai multe metode de aflare a solutiei optime,printre care: metoda grafica, ce se poate aplica doar pentru cazul încare modelul

are doar doua variabile x1 six2. algoritmul simplex, aplicabil la orice numar finit de variabile, elaborat

si aplicat de George B Dantzig în 1947.

Metoda grafică

Metoda grafică de aflare a soluţiei optime se utilizeazănumai la probleme cu douăvariabile x1 si x2 (sau x si y).

Este importanta deoarece se definesc (si vizualizeaza)tipurile de soluţii: soluţii admisibile (SA), solutii admisibile debaza (SAB), solutia optima (SO), daca exista.

Se precizeazăşi cazurile în care: soluţia optimăesteunică, există mai multe soluţii optime, nu exista soluţie optimăori nu există un optim finit.

Se îndeplinesc mai întâi condiţiile de

nenegativitatex = x1 > 0 si y= x2>0 .

Fie planul ( x1ox2 ) sau ( xoy)

Condiţia x1>0 se compune din

Page 7: Algoritmul Simplex

Condiţia x2>0 se compune din

Cum ambele x1>0 ,x2>0 trebuie să fie satisfacute simultan, intersectăm semiplanele. Rezultă că solutia optimă, dacă există, se află în cadranul I.

Cele de mai sus pot fi aplicate pentru orice restricţie adicăo inecuaţie de tipul mx1 + nx2b

Algoritmul simplex

Page 8: Algoritmul Simplex

Algoritmul simplex (primal) a fost elaborat şi aplicat de G. B. Dantzig în 1947 ca metodă de rezolvare a unor probleme de optimizare.

Metoda simplex cercetează valorile funcţiei obiectiv în mulţimea soluţiilor admisibile de bazăşi permite trecerea de la o soluţie la o alta „mai bună” fără a fi necesară cercetarea tuturor soluţiilor admisibile de bazăşi este un proces iterativ.

Etapele algoritmului simplex se pot stabili atât pentruprobleme de maxim cât şi pentru probleme de minim, deşi se poate înlocui aflarea lui max f cu aflarea lui min(-f) deoarece:maxf = −min (− f )şiminf = −max (− f ) .

La probleme de maxim, dacă x0 si x’ sunt douăsoluţii admisibile de bază, soluţia x’ este mai bună decât x0dacă f( x’)f(x0)adică valoarea funcţiei obiectiv creşte.Pe lângă faptul că prin algoritmul simplex se determină atât soluţia optimă cât si valoarea optimă a funcţiei obiectiv, rezultăşi cazurile în care nu există soluţie optimă sau valoarea optimă a funcţiei obiectiv nu este finită.

ETAPELE ALGORITMULUI SIMPLEX PENTRU PROBLEME DE MAXIM

După aducerea la forma standard a problemei de programare liniară, seaplică algoritmul simplex cu următoarele etape:Etapa I.Se determină o soluţie admisibilă de bază de pornire. Apar două situaţii:

o Matricea A a coeficienţilor variabilelor din restricţii conţine toate coloanele matricei unitate de ordinul m, Im

În acest caz, soluţiile admisibile de bază se află din restricţii prin anulareavariabilelor nebazice (secundare).o Matricea A nu conţine toate coloanele matricei Im.În acest caz se foloseste metoda bazei artificiale.

Etapa II.Se alcătuieşte primul tabel simplex. Capul de tabel este:

o Pe coloana 1 (baza) se scriu vectorii bazei canonice, în ordinea apariţiei lor în baza deci:primul este vectorul care are componentele (1 0 0 0)T… , al doilea este cel de componentele (0 1 0 0)T … , ... iar ultimul de pe coloana 1, are componentele (0 0 0 1)T… .

o Pe coloana a doua, CB, se scriu coeficienţii dinfuncţia obiectiv, ci, care corespund variabilelor bazice xi de pe prima coloană

o Pe coloana a 3-a, P0 se scriu componentele soluţieide pornire X0.Pe prima linie din tabel se scriu coeficienţii c1, c2, ... cn din funcţia obiectiv a tuturor variabilelor.o Pe coloanele P1, P2, ..., Pn se scriu respective coloanele matricei A

a coeficienţilor variabilelor din restricţii.o Pe ultima linie din primul tabel simplex secalculează diferenţele

zk− ck din relaţia:

Page 9: Algoritmul Simplex

Practic se procedează astfel: se înmulţesc elementele coloanei CB, pe rând cu elementele coloanelor P1, ..., Pn sumând rezultatele şi apoi se scade coeficientul ck din funcţia obiectiv ce se află deasupra coloanei Pk, k=1,n .De exemplu, etc.

Etapa III.Se aplică criteriul de optimalitate:a) Toate diferenţele zk − ck0, soluţia este optimă si STOP.b) Există si diferenţe zk− ck< 0, soluţia de pe coloana P0 nu este optimă si

trecem laEtapa IV.Se va efectua o schimbare de bază.

Criteriul de intrareîn bază pentru probleme de maxim esteadică intrăin bază vectorul Ph căruia îi corespunde cea mai micăvaloare negativă pentru zk − ck .Acest vector Ph intră în baza în locul unuia dintre vectorii Pi aflaţi pe coloana 1 (baza), deci unul dintre aceşti vectori va ieşi din bază si trecem la etapa următoare:

Etapa V.Aplicarea criteriul de ieşire din bazăApar două situaţii:a) Vectorul Ph, care a intrat în bază are toate componentele(de pe coloana sa) nepozitive, adicăaih. În acest caz problema de programare liniarănu are soluţie STOP.b) Vectorul Ph care a intrat în bază are si componente strict pozitive. În acest caz, aplicăm criteriul de ieşire din bază:Iese din bază vectorul Pj pentru care avem:

adică se alege valoarea minimă a raportului dintre componentele soluţiei (aflate pe coloana P0) si componentele strict pozitive ale vectorului Ph care a intrat în bază.Elementul aflat la intersecţia coloanei Ph cu linia vectorului Pj care a ieşit din baza, se numeşte pivot.

Etapa VI.După aplicarea etapelorIV si V se va obţine un nou tabel simplex..După introducerea pe coloană „baza” a vectorului Ph în locul lui Pj, ceea ce înseamnă că vectorul Ph va deveni un vector din baza canonică, se înlocuieşte pe coloana CB coeficientul Ch din funcţia obiectiv.Apoi se procedează astfel:

Regula 1 Se obţine mai întâi linia vectorului Ph, care a intrat în bază, prin împarţirea la pivot a liniei care a corespuns lui Pj. Astfel în noul tabel simplex va apare cifra 1 în locul pivotului.Celelalte componente ale vectorului Ph trebuie să fie zero, deoarece acesta are drept componente una din coloanele matricei unitate.Pentru a obţine celelalte linii din al doilea tabel, se aplică regula 2:

Regula 2 Linia obtinuţa prin regula 1 se înmulţeşte convenabil iar rezultatul se adună pe rând, la toate liniile din tabelul precedend astfel că pe toatăcoloana pivotului se obtine cifra zero. Pe coloana lui P0 se va obţine, în al doilea tabel, o nouă soluţie admisibilă de bază, având componentele nenegative. Dupa calcularea liniei zk − ckîn al doilea tabel se repeat etapele, începând cu etapa 3.

Page 10: Algoritmul Simplex

Dupa un număr finit de iteraţii se va determina soluţia optimă, dacă există; se specificăşi faptul că nu există soluţieoptimă ori pot exista mai multe soluţii optime.Valoarea funcţiei obiectiv se calculează din CB P0şi odată cu fiecare nouă soluţie gasită ea creşte.

Reamintim că presupunem că problema este la forma standard de maxim şi că dispunem de o soluţie de bază admisibilă. Pasul 1.Se construieşte tabelul simplex corespunzător bazei de care dispunem

în ordinea următoare:

1. pe linia a doua se trec toate variabilele într-o ordine oarecare; 2. pe prima linie se trec coeficienţii funcţiei obiectiv, fiecare deasupra

variabilei corespunzătoare; 3. se construieşte matricea A, fiecare coloană fiind formată din

coeficienţii unei variabile din toate ecuaţiile (ordinea în care se parcurg ecuaţiile trebuie să fie aceeaşi pentru toate variabilele), având grijă ca, coloanele să fie trecute în ordinea în care au fost trecute variabilele pe linia 2;

4. se construieşte 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. se trec variabilele principale în a doua coloană, în aşa fel încât, la

intersecţia liniei şi coloanei corespunzătoare acestei variabile, să se afle valoarea 1.

8. se trec în prima coloană coeficienţii corespunzători variabilelor principale din funcţia obiectiv, fiecare în dreptul variabilei corespunzătoare;

9. se calculează soluţia de bază cu formula B-1⋅b, având grijă ca ordinea în care au fost trecuţi termenii liberi în vectorul b să fie aceeaşi cu ordinea în care au fost parcurse ecuaţiile la formarea matricii A;

10. se trec în a treia coloană valorile variabilelor principale din soluţia de bază, fiecare în dreptul variabilei corespunzătoare;

11. se calculează f(xB) înmulţind două câte două componentele coloanei 1 cu cele din coloana 3 aflate pe aceeaşi linie şi adunând toate produsele între ele (adică facem produsul scalar dintre cB şi xB);

12. se calculează pe rând fiecare zj j = 1,...,n un zj obţinându-se înmulţind 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 rând fiecare Δj j = 1,...,n scăzând din linia lui z linia lui c (Δj = zj - cj)

Pasul 2.Se analizează valorile Δj corespunzătoare variabilelor secundare (e uşor de văzut că întotdeauna, cei corespunzători variabilelor principale sunt toţi 0, deci neinteresanţi).

− dacă toţi sunt mai mari sau egali cu 0 atunci soluţia actuală este cea optimă. Dacă există Δj = 0 în afara bazei, atunci pot apărea două cazuri:

Page 11: Algoritmul Simplex

1)toate elementele din coloana aj din B-1⋅A sunt mai mici sau egale cu 0. Atunci toate soluţiile de forma xB - aj⋅λ sunt soluţii optime, unde λ > 0 oarecare;

2) există o componentă aij a coloanei aj strict pozitivă. Atunci introducând variabila xj în bază în locul variabilei principală xi obţinem altă soluţie de bază optimă.

- dacă apar numai cazuri de tipul 2), obţinem toate soluţiile de bază optime, mulţimea tuturor soluţiilor optime fiind formată din toate combinaţiile convexe ale acestora. Dacă apare şi cazul 1) atunci mulţimea soluţiilor optime este nemărginită fiind formată din combinaţiile convexe ale soluţiilor de forma xB - aj⋅λ unde xB sunt toate soluţiile optime de bază.

− dacă există Δj < 0 atunci îl alegem pe cel mai negativ: Δk = . Variabila xj0nj1mjminΔ<Δ≤≤+j va fi cea care intră în noua bază. Dacă minimul este multiplu atunci alegem, la întâmplare, unul dintre aceştia (cei minimi).

Pasul 3.Se analizează elementele coloanei aj din B-1⋅A, corespunzătoare variabilei alese la pasul 2.

− Dacă toate sunt mai mici sau egale cu 0 atunci problema are optim infinit şi algoritmul ia sfârşit;

− Dacă există componente strict pozitive, pentru acestea se calculează rapoartele θs = sjsax. Variabila xi corespunzătoare raportului minim este cea care va ieşi din bază. Dacă acest minim este multiplu sunt posibile două cazuri:

minimul este strict pozitiv. În acest caz se alege unul dintre aceştia la întâmplare;

minimul este 0. Atunci xi corespunzători sunt 0, deci soluţia este degenerată şi noua soluţie este la fel de bună. Această situaţie poate duce la ciclarea algoritmului şi alegerea la întâmplare nu mai este suficientă, fiind nevoie de o regulă de alegere suplimentară care să evite ciclarea. O metodă de alegere se bazează pe faptul că, aşa cum vom vedea, întotdeauna prima bază este matricea unitate şi în dreptul ei, în toate tabelele simplex, se va afla inversa bazei corespunzător fiecăruia. În acest caz, pentru poziţiile în care s-a obţinut minimul împărţim prima coloană a lui B-1 la coloana aj şi alegem minimul dintre aceste rapoarte. Dacă minimul dintre aceştia este tot multiplu continuăm procedeul, pentru poziţiile ce dau noul minim, cu coloana a doua din B-1 şi aşa mai departe, până minimul rămâne unic. Nu este posibil să se epuizeze toate coloanele lui B-1 şi minimul să rămână multiplu, deoarece, în acest caz, am avea: jijijiji2k21k1abab=jijijiji21k2k1aabb= , pentru toţi indicii jk

ai coloanelor lui B-1, i1 şi i2 fiind doi din indicii care dau acelaşi minim până la sfârşit sau altfel scris pentru orice

Page 12: Algoritmul Simplex

jk ⇒ liniile i1 şi i2 din B-1 sunt proporţionale, fapt ce contrazice faptul că B-1 este inversabilă.

Pasul 4.Se calculează componentele tabelului simplex corespunzător noii baze pe baza tabelului actual şi folosind următoarele reguli:

1. se încadrează elementul aij, aflat la intersecţia coloanei variabilei care intră în bază

cu linia variabilei care iese din bază, care a fost numit de Danzig pivot, într-un dreptunghi

2. coloana pivotului va avea 1 în dreptul pivotului şi 0 în rest (inclusiv Δj);

3. linia pivotului este linia actuală împărţită la pivot (inclusiv în soluţia de bază);

4. restul elementelor se calculează cu regula dreptunghiului (inclusiv soluţia de bază, Δ şi f(xB)). Regula dreptunghiului se bazează pe observaţia că în toate formulele prin care se calculează acestea nu apare decât valoarea lor actuală, pivotul şi cele două elemente care ar completa dreptunghiul ce are poziţia de calculat şi pivotul pe diagonală. Regula dreptunghiului se enunţă literar astfel: "noua valoare = produsul dintre elementele de pe diagonala pivotului minus produsul dintre cele aflate pe cealaltă diagonală totul împărţit la pivot". (pentru scurtarea timpului de lucru se poate observa că elementele unei linii care are 0 pe coloana pivotului rămân aceleaşi şi de asemenea elementele unei coloane care are 0 pe linia pivotului)

Operaţia de calculare a noului tabel prin regulile de mai sus poartă denumirea de pivotare.

Pasul 5.Se reia algoritmul de la pasul 2.

Se consideră problema de programare (2) şi un program de bază nedegenerat . După unele renumerotări şi rearanjări putem considera

; deci variabilele sunt principale iar

secundare, iar vectorii coloană formează baza B a

programului de bază . Fie

Mai notând:

problema (2) poate fi scrisă:

Înmulţind la stânga cu obţinem:

Page 13: Algoritmul Simplex

care reprezintă transcrierea sistemului de restricţii în baza B, căci dacă scriem

(exprimarea vectorilor coloană în funcţie de vectorii bazei B)

vom avea:

Corespunzător programului

problema (2) devine:

Deci sunt componentele vectorului L în baza B.

Deci relaţia (8) devine:

de unde

şi atunci

:

sau explicit:

Notând: atunci:

Observăm că

Acum putem asocia problemei PL- min următorul tabel:

c1 c2

cn

a1 a2

an

Page 14: Algoritmul Simplex

vectorii bazei

componentele nenule ale lui

..........................

...............

Teorema I. Dacă este un program de bază nedegenerat pentru PL -

min şi în tabelul asociat (S) avem atunci este program optim.

Demonstraţie: Din (13) avem:

pentru orice program admisibil X. Deci este

optim.

Teorema II. Dacă este un program de bază nedegenerat şi în tabelul

simplex asociat (S) există un t, astfel încât , atunci

PL - min nu are optim finit.

Demonstraţie: Fie: unde:

Astfel avem

Pentru avem:

(S)

Page 15: Algoritmul Simplex

Deci este

soluţie admisibilă. Avem:

din definirea lui .

Deoarece atunci , adică funcţia obiectiv nu are

optim finit.

Teorema III. Dacă este un program de bază nedegenerat pentru PL -

min, iar în tabelul simplex asociat (S) există un t, şi cel

puţin un indice i, , astfel încât , atunci alegând , după

criteriul:

se poate substitui în baza B vectorul cu vectorul , obţinând o bază , corespunzătoare unui program de bază care ameliorează valoarea funcţiei obiectiv.

Demonstraţie. Deoarece folosind lema substituţiei rezultă că

înlocuind în B cu sistemul de vectori nou obţinut , este o bază. Soluţia de bază corespunzătoare lui este dată tot de lema substituţiei:

cu toate componentele nenegative (pentru dacă atunci

, deci o sumă de numere nenegative; iar dacă avem

şi ţinând seama de (14) înseamnă că este produs de două

numere nenegative).

Page 16: Algoritmul Simplex

Deci este o soluţie de bază. Valoarea funcţiei obiectiv pentru

este:

Acum putem prezenta algoritmul simplex pentru o problemă PL - min în formă standard.

-Pasul 10: Se găseşte un program de bază nedegenerat cu baza B; se construieşte tabelul simplex (S).

-Pasul : Se verifică dacă diferenţele pentru orice . Dacă DA

se trece la pasul 5; dacă NU, dintre toate diferenţele , negative, se alege

cea mai mică. Indicele j corespunzător să-l notăm cu t. (Dacă există mai mulţi t se alege primul de la stânga la dreapta). Vectorul va intra în bază. Se

cercetează dacă pentru Dacă DA, se trece la pasul 4, dacă NU,

se trece la pasul 3.

-Pasul : Se alege s, astfel încât .

Vectorul va ieşi din bază. Elementul devine pivot. Se construieşte un nou

tabel simplex folosind regula dreptunghiului:

a) se împarte linia pivotului la pivot.

b) în coloana pivotului, elementele se înlocuiesc cu 0

c) elementele se înlocuiesc cu .

Se obţine un alt program de bază cu baza şi o nouă valoare a funcţiei obiectiv.

Se revine la pasul cu şi

-Pasul 40 .Concluzie: “PL - min nu are optim finit” şI algoritmul se opreşte.

-Pasul .Concluzie: “PL - min are optim iar valoarea minimă ". STOP.

Exemplul I. Fie problema:

Page 17: Algoritmul Simplex

Alegem . Avem:

Coordonatele vectorilor în baza B sunt , respectiv . Pentru a

afla coordonatele lui se procedează astfel: punem

, deci:

ceea ce ne dă . Deci în

baza B, . Analog se găsesc:

Aşadar tabelul simplex corespunzător bazei B are forma:

5 7 9 2 1

1 0 1 1 -1

0 1 -1 1

0 0 11 -10 -15

Deci intră în bază, iese din bază, z25 - pivot. Se execută pivotajul şi obţinem:

1 1/3 2/3 0

0 1/3 -1/3 1/3 1

3

4/3

Page 18: Algoritmul Simplex

0 5 6 -5 0

Intră în baza şi iese .

15/4 25/4 17/2 0 0

Şi am obţinut Deci programul optim este

.

Algoritmul se aplică şi problemelor PL - max în forma standard cu observaţia că . De asemenea algoritmul se aplică şi în cazul în

care funcţia obiectiv are forma , deoarece punctele de extrem

ale acesteia sunt aceleaşi cu punctele de extrem ale funcţiei:

Page 19: Algoritmul Simplex

Bibliografie

Ion Mirică, Matematică aplicată în economie, Ed.Dunărea de jos, Galaţi, 2002

E. Tiganescu,D. Mitrut, Bazele cercetării operaţionale,Biblioteca digitala ASE

R. Trandafir, Modele şi algoritmi de optimizare, Ed. Agir, Bucureşti, 2004

www.wikipedia.com

http://www.biblioteca-digitala.ase.ro/biblioteca/model/index2.asp

www.tocilar.ro