Upload
chiritoiu-tiberiu
View
304
Download
11
Embed Size (px)
Citation preview
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
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
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
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ă:
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
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
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
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:
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.
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:
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
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:
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
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)
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).
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:
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
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:
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