Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AgriculturaAsigurariComertConfectiiContabilitateContracteEconomie
TransporturiTurismZootehnie


METODA SIMPLEX PENTRU REZOLVAREA PROBLEMELOR DE PROGRAMARE LINIARA

Economie



+ Font mai mare | - Font mai mic



METODA SIMPLEX PENTRU REZOLVAREA PROBLEMELOR DE PROGRAMARE LINIARA

1. Metoda simplex pentru probleme in forma standard. Studiu de caz



In capitolul 1, sectiunea 1.4 este prezentata o procedura de calcul a unei solutii optimale pe baza multimii punctelor extrem. Metoda simplex este o varianta mai eficienta de calcul a unei solutii optimale si este bazata, de asemenea, pe calculul solutiilor admisibile de baza.

Fie problema de programare liniara in forma standard,

(1)

cu restrictiile

(2)

(3)

unde A este o matrice , , si . In continuare vom presupune . Prin introducerea a m variabile slack, notat, este obtinuta forma canonica a problemei de programare liniara definita prin (1), (2) si (3),

(4)

cu restrictiile

(5)

(6)

unde A este o matrice

, si .

Definitia 1. Fie S multimea solutiilor admisibile ale problemei de programare liniara definita de (1), (2) si (3).. Doua puncte extrem ale lui S sunt adiacente daca au in comun, ca solutii de baza si admisibile, una si numai una din variabilele de baza considerate.

Exemplul

Pentru prezentarea metodei simplex, vom considera in continuare urmatoarea problema de tip analiza activitatii de productie.

In procesul de prelucrare a butucilor, o fabrica de cherestea furnizeaza scandura de doua tipuri: finisata, notata cu Prod1, si pentru constructii, notata cu Prod Pentru obtinerea a 1000 de unitati de scandura finisata procedura de taiere dureaza 2 ore si procedura de rindeluire dureaza 5 ore. Pentru furnizarea a 1000 unitati de scandura de constructii, procesul de taiere dureaza 2 ore si cel de rindeluire necesita 3 ore. Fierastraul industrial cu care este realizata taierea poate fi folosit 8 ore pe zi si rindeaua este disponibila 15 ore pe zi.

Daca profitul obtinut din producerea a 1000 unitati de produs este de 120 lei in cazul scandurii finisate, respectiv 100 de lei in cazul scandurii de constructii, se cere sa se determine cantitatea de scandura din fiecare tip, in mii de unitati, care trebuie produsa zilnic pentru maximizarea profitului fabricii.

Modelul matematic este urmatorul. Fie x cantitatea din Prod1 si y cantitatea din Prod2 fabricate zilnic. Procesul de taiere necesita zilnic ore, in timp ce rindeluirea dureaza ore. Rezulta,

Evident,

.

Profitul este calculat prin .

Este obtinuta problema de programare liniara in forma standard,

Maximizeaza

cu restrictiile

In forma canonica, problema este formulata prin,

(7) Maximizeaza

cu restrictiile

(8)

(9)

Metoda simplex presupune parcurgerea urmatorilor pasi.

Pas 1. Determinarea unei solutii de baza admisibile initiale. Constructia tabelului initial

Deoarece , rezulta ca solutia de baza obtinuta prin considerarea celor m variabile slack ca variabile de baza (corespund ultimilor m coloane ale matricei A, care sunt vectori liniar independenti) si a variabilelor non-slack ca variabile non-baza,

, ,,

este admisibila.

Din (4) rezulta,

(10)

si vom considera z drept variabila.

Tabelul initial, figurat mai jos, este construit astfel. In capul de tabel este trecut setul de variabile (inclusiv z). Primele linii corespund setului de constrangeri (5). Ultima linie, numita linia obiectiv, rezulta din (10). In partea stanga a tabelului sunt indicate variabilele de baza, iar in partea dreapta solutia de baza initiala si admisibila si valoarea functiei obiectiv.

Pentru exemplul 1, rezulta,

,

Solutia admisibila de baza la momentul initial este (0,0).

Din (7) obtinem,

si vom considera z drept variabila.

Tabelul initial este descris prin tabelul

Tabelul 1

x

y

u

v

z

u

v

Tabelul 2

Pas Verificarea criteriului de optimalitate

Pe baza relatiei (10), functia obiectiv este definita prin,

(11)

In relatia (11) un coeficient al primei sume este pozitiv daca elementul corespunzator din linia functiei obiectiv a tabelului 1 si care corespunde unei variabile non baza este negativ. Valoarea lui z poate fi marita prin cresterea valorii oricarei variabile non baza al carui corespondent in linia obiectiv este negativ. Este obtinut urmatorul criteriu de optimalitate.

Criteriul de oprire. Daca linia obiectiv a tabelului contine in pozitiile variabilelor non-baza elemente nenegative, atunci este obtinut maximul functiei obiectiv si calculul se incheie.

Pas 3. Selectarea coloanei pivotale (variabila de intrare)

Vom presupune in continuare ca nu este indeplinit criteriul de optimalitate, adica exista cel putin un element strict negativ in linia obiectiv si care corespunde unei variabile non-baza.

In aceasta etapa este determinata, pe baza punctului extrem dat, a unui punct extrem adiacent care sa determine obtinerea unei valori mai mari a functiei obiectiv. Acest lucru revine la selectarea unei variabile non-baza, VE, care va creste de la valoarea 0 si inlocuirea unei alte variabile de baza, care va scadea la valoarea 0. Variabila VE este numita de intrare, deoarece, la iteratia urmatoare, VE intra in setul variabilelor de baza. Coloana in care se gaseste VE este numita coloana pivotala.

Selectarea lui VE poate fi realizata in mai multe variante, doua dintre ele fiind prezentate in continuare.

1. Deoarece cea mai mare imbunatatire unitara este adusa functiei obiectiv prin selectarea acelei variabile cu proprietatea ca elementul corespunzator din linia obiectiv este negativ si cel mai mic cu aceasta proprietate, selecteaza ca variabila de intrare in sistem acea variabila. Daca exista mai multe cu aceasta proprietate, selecteaza aleator una dintre ele.

Regula Bland. Alege drept coloana pivotala prima coloana (cea cu indicele minim) cu element strict negativ in linia obiectiv.

Observatii

1. Regula Bland este utilizata daca algoritmul implementat prin utilizarea primei variante de alegere a coloanei pivotale cicleaza (numai daca este atinsa o solutie degenerata). Se numeste solutie degenerata o solutie in care cel putin o variabila de baza este nula.

In general obtinerea unei solutii degenerate nu determina neaparat ciclarea algoritmului simplex.

Pentru exemplul considerat, ca variabila de intrare poate fi aleasa x, ambele reguli de selectie fiind indeplinite in acest caz particular.

Pas 4. Selectarea liniei pivotale (variabila de iesire)

Pentru explicarea procedurii de selectare a variabilei care iese din setul variabilelor de baza, vom considera in continuare exemplul 1. Pe baza relatiilor (8), obtinem,

Deoarece y ramane setata pe valoarea 0, rezulta,

(12)

Din (12) obtinem ca x si u, respectiv x si v sunt invers proportionale, deci cresterea lui x determina descresterea valorilor lui u si v. Valoarea variabilei x poate fi marita pana cand una din variabilele u, v devine negativa. Pe baza relatiilor (9) si (12) obtinem,

, deci

Cresterea maxima a lui x este deci la valoarea 3. Pentru , obtinem o noua solutie admisibila,

care este solutie de baza si adiacenta cu punctul extrem precedent. Noul set de variabile primitve este . Variabila v devine non-baza si este variabila de iesire (ea paraseste setul variabilelor de baza). Linia variabilei de iesire se numeste linie pivotala.

Cresterea variabilei de intrare este data de rapoartele dinte elementele de pe coloana cea mai din dreapta (solutia admisibila de baza de la momentul curent) si valorile corespunzatoare de pe coloana pivotala (in cazul nostru, ), numite rapoarte. Cea mai mica ratie nenegativa (si nenula) este valoarea maxim posibila cu care poate creste variabila de intrare; variabila de baza care eticheteaza linia pentru care este atinsa valoarea minima a rapoartelor este variabila de iesire, linia respectiva fiind linia pivotala. Daca nu exista nici un raport nenegativ si nenul, variabila de intrare poate creste oricat si problema de programare liniara nu are solutie optima finita, caz in care algoritmul se opreste.

Pas 5. Constructia noului tabel

In continuare este construit noul tabel pe exemplul considerat. Din a doua ecuatie a sistemului (8), obtinem,

,

si, inlocuind in prima ecuatie a sistemului (8), rezulta

Rezulta,

si, deoarece in noua solutie de baza admisibila , obtinem .

Tabelul rezultat este,

x

y

u

v

z

u

x

Tabelul 3

La acest pas este construit tabelul rezultat in urma modificarii setului solutiilor de baza admisibile prin stabilirea variabilelor de intrare si de iesire. Procedura, numita de pivotare, este descrisa astfel.

Pas 5.1. Determina pivotul, k, elementul situat in pozitia (lp,cp), adica pe linia si coloana pivotala si marcheaza variabilele de intrare si iesire.

Pas 5. Multiplica linia pivotala cu

Pas 5.3. Elementele coloanei pivotale mai putin pivotul sunt modificate in 0 prin, efectuarea unei operatii primitive la nivel de linie: pentru fiecare linie i, , adauga linia pivotala inmultita cu o constanta, astfel incat elementul din pozitia (lp,cp) sa fie 0. Constanta este determinata tinand cont de faptul ca noul pivot este 1.

Pas 5.4. Inlocuieste in tabelul rezultat eticheta liniei pivotale cu variabila de intrare.

Dupa incheierea procedurii de pivotare, reia algoritmul de la pasul

Observatie. Tabelul 3 rezulta in urma aplicarii procedurii de pivotare tabelului

In continuare vom aplica algoritmul pentru exemplul considerat, pana la obtinerea solutiei optimale.

Valoarea negativa nenula minima din linia obiectiv este -28, deci variabila de intrare este y. Deoarece , variabila de iesire este u. Linia pivotala este 1, coloana pivotala este 2 si pivotul este . Aplicarea procedurii de pivotare revine in continuare la efectuarea urmatoarelor operatii,

elementele din linia 1 sunt impartite la

din linia 2 este scazuta linia 1 inmultita cu

din linia 3 este scazuta linia 1 inmultita cu

Rezulta tabelul 4,

x

y

u

v

z

y

x

Tabelul 4

Deoarece nu exista elemente nenule si negative in linia obiectiv din tabelul 4, rezulta ca a fost obtinuta solutia optimala si valoarea maxima a functiei obiectiv, 430.

Exemplul Fie problema de programare liniara,

Maximizeaza

cu restrictiile

Forma canonica este,

Maximizeaza

cu restrictiile

Tabelul initial este figurat in 5.

x

y

z

u

v

t

u

v

Tabelul 5

Variabila de intrare este y si variabila de iesire este v. Linia pivotala este 2, coloana pivotala este 2 si pivotul este 1. Aplicarea procedurii de pivotare revine in continuare la efectuarea urmatoarelor operatii,

din linia 1 este scazuta linia 2 inmultita cu

din linia 3 este scazuta linia 2 inmultita cu

Obtinem tabelul 6

x

y

z

u

v

t

u

y

Tabelul 6

Cea mai mica valoare negativa este -8, dar nici un element din coloana pivotala nu este pozitiv, deci nici un raport nu este pozitiv. Rezulta ca problema nu are solutie optima finita.

Variabile artificiale. Metoda in doua faze

In sectiunea 1. este prezentata metoda simplex pentru rezolvarea problemei de programare liniara data de relatiile (1), (2) si (3) in ipoteza , care permite determinarea unei solutii de baza admisibila la momentul initial. In continuare este descrisa o procedura de introducere a unor variabile care sa poata fi considerate variabile de baza, in cazul rezolvarii unei probleme de programare liniara generala, in forma,

Maximizeaza

(9)

cu restrictiile

(10)

(11)

Fiecare inegalitate din sistemul de restrictii (10) poate fi transformata astfel incat membrul drept sa fie nenegativ, prin eventuala inmultire a inegalitatii cu -1. Inegalitatile sistemului (10) pot fi reordonate astfel incat (10) sa fie echivalent cu,

In sistemele (12a) si (12b), inegalitatile sunt transformate in egalitati prin introducerea variabilelor slack nenegative , respectiv , astfel,

pentru (12a):

(13a)

pentru (12b)

(13b)

Rezulta o problema de programare liniara in forma canonica,

Maximizeaza (14)

cu restrictiile

(15)

(16)

si astfel incat .

Determinarea unei solutii de baza admisibile poate fi realizata prin metoda in doua faze, descrisa in continuare.

Pentru obtinerea unei solutii de baza fezabile, in sistemul (15) sunt introduse m variabile, numite artificiale si notate cu , obtinandu-se problema,

Maximizeaza (17)

cu restrictiile

(18)

(19)

si astfel incat .

Rezulta prin calcul direct ca un vector Rs este solutie admisibila a problemei definite de (14), (15) si (16) daca si numai daca Rs+m este solutie admisibila a problemei definite de (17), (18) si (19). Pentru problema data prin (17), (18) si (19) o solutie de baza admisibila care poate fi selectata initial este . In continuare este dezvoltata o modalitate de utilizare a algoritmului simplex pentru obtinerea unei solutii de baza admisibila in care si, in consecinta a unei solutii de baza admisibila a problemei definite de (14), (15) si (16). Aceasta procedura este constiutita in faza 1 a metodei.

Faza 1. Deoarece in (19) fiecare este nenegativ, o modalitate de a ne asigura ca fiecare este nul este de a face suma variabilelor artificiale 0. Este considerata, astfel, o problema auxiliara in care este minimizata suma variabilelor artificiale cu seturile de restrictii (18) si (19).

Daca minimul nu este nul, rezulta ca cel putin o variabila artificiala este nenula, deci strict pozitiva. In plus, nu toate valorile variabilelor artificiale pot fi 0, deoarece minimul sumei lor este strict pozitiv. In acest caz, problema originala nu are solutii admisibile.

In faza 1, sistemul problema de programare liniara in forma canonica definita prin (14), (15) si (16) este transformata conform (17), (18) si (19) si este introdusa noua problema, definita prin,

(20) minimizeaza

cu restrictiile

(21)

(22)

si astfel incat .

In problema de minim (20) cu restrictiile (21) si (22), solutia de baza admisibila initiala este selectata prin considerarea vectorului , obtinut prin setarile,

.

Justificarea selectarii vectorului ca solutie de baza admisibila este urmatoarea. Scrisa in forma matriceala, problema data prin (20), (21) si (22) genereaza pe post de coloane corespunzatoare variabilelor artificiala matricea unitate de ordin m, deci variabilele artificiale sunt variabile de baza (ele corespund unui sistem liniar independent din spatiul Rm).

Pentru a aplica metoda simplex, problema de minim este transformata intr-o problema de maxim prin inmultirea cu -1 in relatia (20) si rezulta,

(23)

unde . Deoarece in metoda simplex variabilele de baza la momentul initail sunt variabilele slack, cu coeficienti 0 in functia obiectiv, trebuie ca variabilele artificiale sa fie inlocuite in (23). Utilizand (21), obtinem,

pentru

si

(24) .

In continuare este rezolvata problema de programare liniara data prin (24), (21) si (22) prin aplicarea metodei simplex.

Daca minimul obtinut este 0, treci la faza La finalul fazei 1 fie variabilele artificiale sunt toate non baza, fie exista variabile artificiale de baza, dar cu valoare 0. In continuare este tratata prima situatie, cea de-a doua varianta fiind rezolvata cu ajutorul notiunii de dualitate prezentate in capitolul 3.

Faza Deoarece in solutia optimala obtinuta in urma aplicarii fazei 1 variabilele artificiale sunt toate non-baza, solutia poate fi utilizata ca solutie admisibila de baza in problema originala definita prin relatiile (14), (15) si (16). Tabelul final al fazei 1 devine tabel initial al fazei 2, cu urmatoarele modificari,

elimina coloanele etichetate cu variabilele artificiale;

calculeaza noua linie obiectiv astfel. Considera functia obiectiv definita de (14). Elementul liniei obiectiv ce corespunde unei variabile de baza este anulat prin adaugarea liniei variabilei de baza inmultita cu o constanta aleasa corespunzator.

Exemplul 3. Fie problema de programare liniara in forma canonica,

Maximizeaza

cu restrictiile

Faza 1. Sunt introduse variabilele artificiale si rezulta problema auxiliara,

(25) Minimizeaza

cu restrictiile

(26)

Pentru transformarea problemei data prin relatiile (25) si (26) intr-o problema de maxim, prin , rezulta functia obiectiv

Pe baza relatiilor (26), rezulta

si functia obiectiv,

(27)

Solutia de baza admisibila la momentul initial este,

Tabelul initial este,

Tabelul 7

Variabila de intrare este . Deoarece , rezulta ca variabila care paraseste sistemul este . Elementul pivotal este 6. Prin pivotare este obtinut tabelul 8.

Tabelul 8

Variabila de intrare este . Deoarece , rezulta ca variabila care de iesire este . Elementul pivotal este . Prin pivotare rezulta tabelul 9.

Tabelul 9

Variabila de intrare este . Deoarece este un singur raport, rezulta ca variabila care de iesire este . Pivotul este 1. Tabelul 10 este obtinut prin pivotare.

Tabelul 10

Valoarea maxima a functiei obiectiv definita de relatia (27) este 0. Este obtinuta solutia de baza si admisibila pentru problema de optimizare initiala,

(28)

Faza a 2-a. Tabelul initial al fazei a doua este obtinut pe baza tabelului 10 astfel. Sunt eliminate coloanele corespunzatoare variabilelor artificiale. Functia obiectiv este definita prin,

(29)

Deoarece solutia de baza admisibila la momentul initial este definita de (28), rezulta ca variabilele sunt baza si, in linia obiectiv, elementele de pe pozitiile 2, 3 si 6 terbuie sa fie nule. In acest scop, linia obiectiv a tabelului 10, notata LO, (considerat fara coloanele etichetate cu variabilele artificiale) este prelucrata astfel:

a. LO=LO-2*linia 3 (etichetata cu

b. LO LO-3*linia 1 (etichetata cu

c. LO LO+2*linia 2 (etichetata cu

Rezulta tabelul de la momentul initial (pentru problema initiala),

Tabelul 11

Variabila de intrare este . Deoarece este un singur raport, rezulta ca variabila care de iesire este . Pivotul este . Tabelul 12 este obtinut prin pivotare.

Deoarece linia obiectiv are toate elementele nenegative, rezulta ca valoarea maxima a functiei obiectiv (29) este 15 si o solutie optimala este,

.

Observatie. Daca pentru problema initiala exista variabile ce pot fi utilizate ca variabile de baza, atunci numarul variabilelor artificiale scade. O variabila poate fi considerata de baza daca apare intr-o singura constrangere a sistemului de restrictii al problemei de programare liniara initiale, coeficientul sau fiind 1. De exemplu, in problema rezolvata in 3, variabila poate fi considerata de baza si sunt introduse doar doua variabile artificiale.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 7716
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved