Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Cercetri Operaionale
CO - Cursul 2
Capitolul 1
PROGRAMARE LINIAR
(II)
CO - Cursul 2
CO - Cursul 2
3. Metoda SIMPLEX
3.1. Fundamente teoretice 3.2. Algoritmul simplex 3.3. Metoda coeficienilor de penalizare
CO - Cursul 2
CO - Cursul 2
min c T x Ax = b x0
unde x, c Rn, b Rm, A Mm n , cu rang A = m < n. Fie B o baz primal admisibil extras din matricea A i xB = B-1b soluia de baz iniial asociat. Coeficienii numerici ai problemei corespunztori bazei B se nscriu n tabelul simplex asociat bazei B, de forma:
Cap.1. Programare liniar
CO - Cursul 2
CO - Cursul 2
Tabelul simplex conine: - n prima coloan, variabilele de baz (V.B.); - n a doua coloan, valorile variabilelor de baz (V.V.B.); B y - n urmtoarele n coloane, vectorii j , j = 1,..., n. - pe ultima linie, valoarea funciei obiectiv n baza B, B B z notat cu z ; diferenele j - c j , j = 1, n . La aplicarea algoritmului metodei simplex, fiecrei baze B i corespunde un tabel simplex de acest tip.
CO - Cursul 2
CO - Cursul 2
10
B max ( z B c ) = z j j k ck j J +
B Dac yk 0, atunci STOP: problema are optim infinit; altfel se determin indicele l I cu criteriul de ieire din baz:
x iB x lB min = B y yB i I lk B y ik > 0 ik Pasul 5. Fie baza B obinut din B prin nlocuirea coloanei A(l) cu coloana A(k) . Se trece la pasul 2, nlocuind peste tot baza B cu baza B .
Cap.1. Programare liniar
CO - Cursul 2
11
B y Dac k 0, atunci STOP: problema are optim infinit; altfel se determin indicele l I cu criteriul de ieire din baz.
Cap.1. Programare liniar
CO - Cursul 2
12
Observaie: Elementul y
B lk
se numete pivot.
Formulele de schimbare a bazei sunt echivalente cu urmtoarele reguli de transformare ale tabelului simplex asociat bazei B: a) elementele situate pe linia pivotului se mpart la pivot; b) elementele situate pe coloana pivotului devin zero, cu excepia pivotului, care devine 1; c) celelalte elemente ale tabelului simplex se transform dup formula dreptunghiului. Se consider dreptunghiul imaginar a crui diagonal este determinat de elementul de transformat i de pivot:
Cap.1. Programare liniar
CO - Cursul 2
13
Formula dreptunghiului:
B yij
CO - Cursul 2
14
CO - Cursul 2
15
Construiete tabelul simplex iniial Ct timp exist valori pozitive (negative) pe linia diferenelor execut Determin coloana pivotului Exist valori pozitive n coloana Processpivotului ? Da
Process
CO - Cursul 2
16
Soluie. Se aduce problema la forma standard. Pentru aceasta se introduc variabilele de compensare x4 , x5 , x6 nenegative n cele trei restricii. Se nmulete cea de-a doua restricie cu -1 i obinem:
Cap.1. Programare liniar
CO - Cursul 2
17
min (4 x1 3 x2 + 5 x3 ) 3x 2 x + x + x =4 1 2 3 4 + x5 =1 2 x1 x2 2 x3 2 x1 + 4 x2 3 x3 + x6 = 6 x 0, i = 1, 6 i
CO - Cursul 2
18
Se poate forma o baz, B, cu ultimele trei coloane ale matricei A, aceasta fiind matricea unitate: 1 0 0 B = 0 1 0 0 0 1 Pentru a putea aplica algoritmul simplex se verific, n prealabil, dac baza B este primal admisibil. ntr-adevr, B fiind matrice unitate, avem B-1 = B, iar x B = B 1b = b = [4 1 6] T > 0. Se construiesc tabelele simplex (v. fig. urm.). Problema admite soluia optim finit: x1= 0; x2= 1,5; x3= 0; x4= 7; x 5= 2,5; x6= 0; zmin= -4,5.
Cap.1. Programare liniar
CO - Cursul 2
19
CO - Cursul 2
20
Soluie. Se aduce problema la forma standard, prin introducerea variabilelor de compensare x4 , x5: max ( x1 + 3 x2 + 2 x3 ) =2 x1 x2 + x3 + x4 2x + 2x x + x5 = 4 1 2 3 xi 0, i = 1, 5
Cap.1. Programare liniar
CO - Cursul 2
21
Cu ultimele dou coloane din matricea sistemului de restricii (ecuaii) se poate forma baza B, respectiv, matricea unitate. Baza B este o baz primal admisibil deoarece T B 1b = b = [2 4] > 0 ; aadar, se poate aplica algoritmul simplex. Tabelele simplex corespunztoare sunt prezentate n figurile urmtoare. n ultimul tabel se constat c exist zk - ck < 0; J= {1, 2}, deci soluia obinut nu este optim. Pe de alt parte, toi coeficienii yi1 de pe coloana variabilei x1 sunt nepozitivi. Rezult c problema dat are optim infinit (nu are soluie optim finit).
Cap.1. Programare liniar
CO - Cursul 2
22
CO - Cursul 2
23
CO - Cursul 2
24
(3.1)
Presupunem c toi termenii liberi sunt pozitivi: b1 0,..., bm 0 i c matricea A nu conine nici un vector coloan unitar. Prin adugarea variabilelor de compensare (nenegative) cu semnul "- n fiecare restricie, se obine sistemul de restricii n forma standard:
Cap.1. Programare liniar
CO - Cursul 2
25
Considernd ca soluie iniial de baz: x1 = x2 = ... = xn = 0, xn +1 = -b1 , xn +2 = -b2 ,..., xn + m = = -bm aceasta nu este realizabil (admisibil) i nu satisface condiiile algoritmului simplex. Pentru a obine o soluie admisibil de baz se introduce n fiecare restricie cte o variabil artificial (nenegativ) xn + m +1 , xn + m + 2 , ..., xn + 2m ,
Cap.1. Programare liniar
CO - Cursul 2
26
cu semnul "+":
a11 x1 + a12 x2 + L + a1n xn xn +1 + xn + m +1 = b1 a21 x1 + a22 x2 + L + a2 n xn xn + 2 + xn + m + 2 = b2 LLLLLLLLLLLLLLLLLLL am1 x1 + am 2 x2 + L + amn xn xn + m + xn + 2 m = bm
Se modific i funcia obiectiv a problemei iniiale (3.1) prin introducerea acestor variabile artificiale cu coeficientul de penalizare +M. Se consider c M are o valoare pozitiv foarte mare (practic infinit). Rezult problema extins (3.2) de mai jos:
Cap.1. Programare liniar
CO - Cursul 2
27
[min] z = c1 x1 + L + cn xn + Mxn + m +1 + L + Mxn + 2 m a11 x1 + a12 x2 + L + a1n xn xn +1 + xn + m +1 = b1 a21 x1 + a22 x2 + L + a2 n xn xn + 2 + xn + m + 2 = b2 (3.2) LLLLLLLLLLLLLLLLLLL am1 x1 + am 2 x2 + L + amn xn xn + m + xn + 2 m = bm x1 , x2 ,..., xn , xn +1 ,..., xn + m , xn + m +1 ,..., xn + 2 m 0
Soluia iniial de baz pentru problema (3.2) poate fi: x1 = x2 = ... = xn = xn +1 = xn +m = 0, xn +m +1 = = -b1 , xn +m +2 = -b2 , xn +2m = -bm Soluia conine variabilele artificiale, dar este convenabil pentru aplicarea algoritmului simplex problemei (3.2).
Cap.1. Programare liniar
CO - Cursul 2
28
Se rezolv problema extins (3.2) fiind posibile urmtoarele cazuri: 1) Problema (3.2) are optim infinit. Atunci i problema (3.1) are optim infinit. 2) Problema (3.2) are optim finit, dar n soluia optim cel puin o variabil artificial are o valoare nenul (pozitiv). Atunci problema (3.1) nu are soluie. 3) Problema (3.2) are optim finit i n soluia optim toate variabilele artificiale au valoarea nul. Atunci aceast soluie, din care se ignor variabilele artificiale, este soluia optim a problemei (3.1).
Cap.1. Programare liniar
CO - Cursul 2
29
(3.3)
Presupunem c toi termenii liberi sunt pozitivi: b1 0,..., bm 0 i c matricea A nu conine nici un vector coloan unitar. Pentru a obine o soluie admisibil de baz se introduce n fiecare restricie din (3.3) cte o variabil artificial (nenegativ), xn +1 , xn + 2 ,..., xn + m , cu semnul "+".
Cap.1. Programare liniar
CO - Cursul 2
30
Se modific funcia obiectiv a problemei (3.3) prin introducerea acestor variabile artificiale cu coeficientul de penalizare -M. Rezult problema extins: [max] z = c1 x1 + L + cn xn Mxn +1 L Mxn + m a11 x1 + a12 x2 + L + a1n xn + xn +1 = b1 a21x1 + a22 x2 + L + a2 n xn + xn + 2 = b2 LLLLLLLLLLLLLLL (3.4) am1x1 + am 2 x2 + L + amn xn + xn + m = bm x1, x2 ,..., xn , xn +1 ,..., xn + m 0 Se rezolv problema (3.4) fiind posibile aceleai cazuri, relative la problema (3.3), ca cele prezentate anterior la problema de minimizare (3.1).
Cap.1. Programare liniar
CO - Cursul 2
31
Observaii: 1) Indiferent de tipul problemei (minimizare sau maximizare), dac matricea restriciilor nu conine vectori unitari, atunci numrul variabilelor artificiale introduse va fi egal cu m. 2) Dac, la aplicarea algoritmului simplex pentru rezolvarea problemei extinse, o variabil artificial iese din baz, ea nu va mai intra niciodat n baz, fapt care justific eliminarea (eventual) din calculele ulterioare a coloanei variabilei respective.
CO - Cursul 2
32
Soluie. Se aduce mai nti problema la forma standard prin introducerea n restricii a variabilelor de compensare x4 i x5. Se adaug variabilele artificiale x6 i x7; ele se introduc n restricii cu coeficientul 1 i n funcia obiectiv cu coeficienii de penalizare +M:
Cap.1. Programare liniar
CO - Cursul 2
33
Soluia iniial de baz este x1 = x2 = x3 = x4 = x5 = 0, x6 = 10, x7 = 6. Primul tabel simplex al problemei extinse corespunztor acestei baze este:
CO - Cursul 2
34
CO - Cursul 2
35
Deoarece zk - ck 0, k = 1,..., 7 tabelul simplex de mai sus conine soluia optim a problemei extinse, n care variabilele artificiale x6 i x7 au valoarea zero. Soluia optim a problemei iniiale: x1 = 4, x2 = 2, x3 = 0. Valoarea optim a funciei obiectiv zopt = 20.
CO - Cursul 2
36
4. Postoptimizare
CO - Cursul 2
37
n modelul unei probleme de PL min (max) c T x Ax = b x0 ce poate caracteriza activitatea unui agent economic, intervin mai multe mrimi considerate constante n momentul elaborrii: A - matricea coeficienilor sistemului de restricii; b - vectorul termenilor liberi; c - vectorul coeficienilor funciei obiectiv. Dinamica accentuat a economiei de pia implic, adeseori, schimbri ale condiiilor care stau la baza elaborrii modelului.
Cap.1. Programare liniar
CO - Cursul 2
38
Exemple: modificarea preurilor la resurse, a tarifelor sau cererii la activitile desfurate, a unor capaciti de producie, a cantitilor disponibile de resurse; introducerea n fabricaie a unor noi produse. Din punct de vedere matematic, astfel de schimbri implic modificri ale elementelor unei probleme de PL: modificarea vectorului b; modificarea vectorului c; introducerea unei variabile suplimentare; introducerea unui grup de restricii n sistemul de restricii iniial; modificarea unei linii/coloane din matricea A.
Cap.1. Programare liniar
CO - Cursul 2
39
Postoptimizarea (reoptimizarea) unei probleme de PL const n recalcularea soluiei optime a problemei n cazul unor modificri de tipul menionat. ntrebarea care se pune este dac soluia optim i pstreaz caracterul de optimalitate dup modificrile survenite. Se impune, aadar, n primul rnd, o verificare a soluiei n noile condiii. Dac soluia nu mai este optim, determinarea unei noi soluii se face, nu refcnd calculele de la nceput, ci pornind de la o soluie de baz mai apropiat de soluia optim, uneori chiar de la soluia optim a problemei iniiale, pentru micorarea volumului de calcule necesare.
Cap.1. Programare liniar
CO - Cursul 2
40
5. Optimizare parametric
CO - Cursul 2
41
Problema de programare liniar n care cel puin unul din elementele sale - matricea coeficienilor sistemului de restricii A, vectorul termenilor liberi b, vectorul coeficienilor funciei obiectiv c depinde, liniar sau neliniar, de unul sau mai muli parametri reprezint o problem de programare liniar parametric. Optimizarea parametric studiaz, ca i postoptimizarea, problemele de programare liniar cu coeficieni variabili. Dac postoptimizarea corespunde variaiei discrete a coeficienilor, optimizarea parametric vizeaz variaia continu a coeficienilor.
Cap.1. Programare liniar
CO - Cursul 2
42
Rezolvarea problemelor de programare liniar parametric implic parcurgerea a dou etape: 1) Determinarea soluiei optime pentru o valoare determinat a parametrului sau a unui sistem de valori dac este vorba de mai muli parametri. 2) Studiul sensibilitii soluiei optime determinate la variaia parametrului (parametrilor). Acest studiu const n stabilirea intervalelor (domeniilor) de optimalitate a unei soluii, respectiv, a mulimii valorilor parametrilor pentru care soluia determinat i pstreaz caracterul de optimalitate.
Cap.1. Programare liniar
CO - Cursul 2
43
CO - Cursul 2
44
CO - Cursul 2
45
Marea majoritate a problemelor de programare discret ntlnite n practic impun ca variabilele (o parte sau toate) s aib valori ntregi. Vorbim n aceste cazuri de programare n numere ntregi. Problemele n care doar o parte din variabile au valori ntregi sunt denumite probleme mixte sau parial ntregi, iar cele n care toate variabilele au valori ntregi se numesc probleme total ntregi. n cele ce urmeaz ne vom limita la studiul problemelor de programare n numere ntregi, ceea ce nu reprezint o restrngere a generalitii deoarece cazurile generale discrete pot fi aduse la aceast form.
Cap.1. Programare liniar
CO - Cursul 2
46
Astfel, presupunem c, ntr-o problem, o variabil oarecare x poate lua numai un numr finit de valori: a1, a2 ,..., ak . Variabila x se poate rescrie sub forma:
x = i ai , cu
i =1
i = 1 i i = 0 sau 1
i =1
ceea ce conduce la o problem cu variabile ntregi. Observaie. n orice problem de programare discret funcia obiectiv i restriciile, chiar dac sunt exprimate prin forme liniare, datorit caracterului discontinuu al variabilelor nu mai sunt, din punct de vedere matematic, funcii liniare. Din acest motiv, programaCap.1. Programare liniar
CO - Cursul 2
47
rea discret este tratat ca un caz special de programare liniar. Utilizarea variabilelor ntregi conduce la o cretere a flexibilitii modelrii fenomenelor, dar i a complexitii modalitilor specifice de rezolvare. n acest scop, cele mai des utilizate sunt: metodele planului de seciune; metodele de ramificare i mrginire (tip branch and bound).
CO - Cursul 2
48
CO - Cursul 2
49
tranportate, care trebuie maximizat. Modelul matematic al problemei are forma: n [max] z = vi xi i =1 n mi xi C i =1 xi 0, i = 1, n xi Z , i = 1, n S-a obinut un model de problem de optimizare total discret, n care variabilele pot lua numai valori ntregi.
Cap.1. Programare liniar
CO - Cursul 2
50
Exemplu. Problem de investiii O firm intenioneaz s fac investiii pentru retehnologizare. Ea are posibilitatea s aleag din n oferte de proiecte. Fiecare proiect va aduce un profit ci (i =1,..., n). Se mai cunosc costul investiiei n fiecare proiect ai (i =1,..., n) i suma maxim disponibil S pentru investiii. S se stabileasc programul optim de investiii care s conduc la un profit total maxim.
CO - Cursul 2
51
CO - Cursul 2
52
Exemplu. Problem de costuri Conducerea unei firme dorete minimizarea cheltuielilor de fabricaie pentru cele n tipuri de produse ale sale. Fiecare tip de produs j (j = 1,, n) are un cost unitar de producie cj (costul materialelor, manoperei etc.) i un cost de pregtire a fabricaiei qj . Pentru fiecare tip de produs j se cunosc cererea minim a pieii aj i capacitatea proprie maxim de fabricaie bj . S se stabileasc programul de fabricaie al firmei, optim din punct de vedere al cheltuielilor sale totale.
Cap.1. Programare liniar
CO - Cursul 2
53
Fie xj cantitatea de produs j (j = 1,..., n) ce urmeaz a se fabrica. Se mai definesc variabilele bivalente: 1, dac x j > 0 yj = 0, altfel care indic dac produsul j intr sau nu n fabricaie. Funcia obiectiv este reprezentat de cheltuielile totale de fabricaie ale firmei i trebuie minimizat:
[min] z = c j x j + q j y j
j =1 n
CO - Cursul 2
54
x j a j , j = 1, n
Se obine un model de optimizare mixt, n care o parte din variabile au valori pozitive, iar celelalte nu pot lua dect valori ntregi (sunt variabile bivalente):
Cap.1. Programare liniar
CO - Cursul 2
55
CO - Cursul 2
56
Exemplu. Problema comis voiajorului Un comis voiajor trebuie s viziteze n localiti L1 , ..., Ln . El va porni din localitatea L1 i se va rentoarce acolo dup ce va trece prin toate localitile cte o singur dat. Se cunosc distanele dij dintre oricare dou localiti Li i Lj . S se aleag traseul optim de vizitare al celor n localiti care s minimizeze lungimea total a traseului parcurs de ctre comis voiajor.
Se definesc variabilele bivalente: 1, dac traseul include deplasarea din Li la L j xij = 0, altfel
Cap.1. Programare liniar
CO - Cursul 2
57
Funcia obiectiv este lungimea total a traseului parcurs i care trebuie minimizat:
[min] z = dij xij
i =1 j =1 n n
Condiia ca traseul s se ndreapte exact spre o singur alt localitate dup plecarea din localitatea Li:
xij = 1, i = 1, n
j =1
Condiia ca traseul s treac prin fiecare localitate o singur dat este echivalent cu faptul c n fiecare localitate Lj se poate ajunge numai din o singur alt localitate:
Cap.1. Programare liniar
CO - Cursul 2
58
xij = 1,
i =1
j = 1, n
O soluie a problemei este admisibil dac fiecare i (i = 1,, n) ocup o singur dat prima poziie i o singur dat a doua poziie, ca indice al variabilei. n caz contrar, soluia nu este acceptabil deoarece se formeaz dou subtrasee neconectate. Pentru eliminarea acestora, se impune condiia:
ui u j + nxij n 1, i, j = 2 , n, i j
CO - Cursul 2
59
CO - Cursul 2
60
CO - Cursul 2
61
[max] z = c T x Ax = b x0 x j Z, j T
Algoritmul metodei branch and bound: Pasul 1 (Soluia iniial) Se rezolv problema de programare liniar obinut din problema n numere ntregi iniial, prin omiterea condiiilor de integritate. Dac toate valorile soluiei x j Z, j T, atunci avem soluia optim a problemei iniiale, STOP; altfel se trece la pasul 2.
Cap.1. Programare liniar
CO - Cursul 2
62
Pasul 2 (Selectarea variabilelor de ramificare) Se alege din ultimul tabel simplex de la pasul 1, dintre acele variabile xj , j T, care nu au valori ntregi, variabila de baz xl avnd partea fracionar, fl , cea mai mare, pentru generarea restriciilor de ramificare. Deoarece variabila xl trebuie s aib valori ntregi, i xl = [ xl ] + fl ea trebuie s satisfac fie condiia:
xl [ xl ]
fie
(7.1) (7.2)
xl [ xl ] + 1
Cap.1. Programare liniar
CO - Cursul 2
63
Pasul 3 (Generarea unor noi noduri) Se formeaz dou noi probleme de programare n numere ntregi, relative la nodul considerat la pasul 2. O problem este format prin adugarea restriciei (7.1), iar cealalt prin adugarea restriciei (7.2). Se rezolv fiecare problem cu algoritmul simplex. Pasul 4 (Testarea nodurilor terminale) Fiecare din nodurile generate la pasul 3 poate fi un nod terminal dac: problema reprezentat de acel nod nu are soluii admisibile sau toate variabilele xj , j T, au valori ntregi.
Cap.1. Programare liniar
CO - Cursul 2
64
n primul caz, se eticheteaz nodurile ca noduri terminale i se trece la pasul 5. n al doilea caz, se compar, mai nti, valorile funciei obiectiv cu valoarea curent cea mai bun. Dac valoarea funciei obiectiv pentru noul nod este mai bun, ea devine cea mai bun valoare; se trece la pasul 5. Pasul 5 (Selectarea nodurilor) a) Dac ambele noduri de la pasul 4 sunt terminale, atunci urmtorul nod considerat este urmtorul din lista nodurilor independente. Dac nodul independent are o valoare a funciei obiectiv mai mare dect cea
Cap.1. Programare liniar
CO - Cursul 2
65
mai bun valoare curent, atunci, cu acest nod, se trece la pasul 2; altfel se verific urmtorul nod din lista celor independente. Cnd lista nodurilor independente este epuizat, valoarea curent cea mai bun este soluia optim, STOP. b) Dac doar un nod la pasul 4 este terminal, atunci se utilizeaz nodul neterminal i se trece la pasul 2. c) Dac ambele noduri la pasul 4 sunt neterminale, atunci se alege nodul cu valoarea funciei obiectiv mai mare. Cellalt nod se adaug la lista nodurilor independente.
Cap.1. Programare liniar
CO - Cursul 2
66
Soluie. Se rezolv cu algoritmul simplex problema de PL obinut din cea iniial prin renunarea la condiiile de integritate i se obine tabelul simplex final:
Cap.1. Programare liniar
CO - Cursul 2
67
Se constat c x1 Z, x 2 Z. Se aplic metoda branch and bound. Prile fracionare sunt: f1 = 7/17, f2 = 4/17. Deoarece f1 > f2 , se alege ca variabil de ramificare x1, creia i se aplic condiiile: x1 4 i x1 5 .
Cap.1. Programare liniar
CO - Cursul 2
68
x1 = 75 / 17 x2 = 72 / 17 z = 741 / 17
(Tab.7.9) x1 5
x1 4
2
x1 = 4 x2 = 22 / 5 z = 206 / 5
(Tab.7.12)
x1 = 5 x2 = 8 / 3 z = 43
(Tab.7.13)
Valoarea funciei obiectiv din nodul 3 este mai mare dect cea din nodul 2 (43 > 206/5). Ca urmare, nodul 2 se introduce n lista nodurilor independente. n nodul 3 se aplic condiiile: x2 2 i x2 3.
Cap.1. Programare liniar
CO - Cursul 2
69
x1 = 75 / 17 x2 = 72 / 17 z = 741 / 17
(Tab.7.9) x1 5
x1 4
2
x1 = 4 x2 = 22 / 5 z = 206 / 5
(Tab.7.12) x2 2
x1 = 5 x2 = 8 / 3 z = 43
(Tab.7.13) x2 3
5 Nu exist soluie admisibil
x1 = 21 / 4 x2 = 2 z = 171 / 4
(Tab.7.16)
(Tab.7.15)
Nod terminal
CO - Cursul 2
70
n nodul 3, x1 are o valoare ntreag, dar, n nodul 4, x1 nu mai are valoare ntreag. n nodul 4 se aplic condiiile: x1 5 i x1 6 i se obine:
CO - Cursul 2
71
x1 = 75 / 17 x2 = 72 / 17 z = 741 / 17
(Tab.7.9) x1 5
x1 4
2
x1 = 4 x2 = 22 / 5 z = 206 / 5
(Tab.7.12) x2 2
x1 = 5 x2 = 8 / 3 z = 43
(Tab.7.13) x2 3
5 Nu exist soluie admisibil
x1 = 21 / 4 x2 = 2 z = 171 / 4
(Tab.7.16) x1 6
(Tab.7.15)
x1 5
6
x1 = 5 x2 = 2 z = 41
(Tab.7.18)
x1 = 6 x2 = 0 z = 42
Soluia optim
(Tab.7.19)