Sunteți pe pagina 1din 71

CO - Cursul 2

Universitatea POLITEHNICA din Bucureti

Cercetri Operaionale

Autor curs: Conf. dr. ing. mat. Ovidiu Bljin


Cap.1. Programare liniar

CO - Cursul 2

Capitolul 1

PROGRAMARE LINIAR
(II)

Cap.1. Programare liniar

CO - Cursul 2

3. Metoda SIMPLEX 4. Postoptimizare 5. Optimizare parametric 6. Programare n numere ntregi

Cap.1. Programare liniar

CO - Cursul 2

3. Metoda SIMPLEX
3.1. Fundamente teoretice 3.2. Algoritmul simplex 3.3. Metoda coeficienilor de penalizare

Cap.1. Programare liniar

CO - Cursul 2

3.1. Fundamente teoretice


Cea mai utilizat metod pentru rezolvarea problemelor de PL este metoda simplex datorat matematicianului american G. B. Dantzig (1947). Metoda simplex permite cercetarea sistematic a mulimii soluiilor admisibile de baz ale unui model de problem de PL n forma standard. Presupunnd cunoscut o astfel de soluie iniial, se construiesc succesiv soluii realizabile de baz din ce n ce "mai bune" pn la obinerea soluiei optime. Metoda ofer i un criteriu de recunoatere a optimului infinit.
Cap.1. Programare liniar

CO - Cursul 2

Prezentarea metodei simplex se va referi la modelul de PL n forma standard de minimizare:

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

Cap.1. Programare liniar

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.

Cap.1. Programare liniar

CO - Cursul 2

3.2. Algoritmul simplex


Algoritmul simplex pentru problema de minimizare: Pasul 1. Se determin o baz primal admisibil iniial B. B B B B y z x z Pasul 2. Se calculeaz , , j , j c j , j = 1,..., n . B z Pasul 3. Dac j c j 0 , j = 1, n , atunci STOP: este program optim; altfel se determin mulimea
J+ = j J zB j cj > 0

i se trece la pasul 4. Pasul 4. Se determin indicele k J+ cu criteriul de intrare n baz:


Cap.1. Programare liniar

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

Algoritmul simplex pentru problema de maximizare:


B z Pasul 3. Dac j c j 0, j = 1, n , atunci STOP: este

program optim; altfel se determin mulimea (nevid)


J = j J zB j cj < 0

i se trece la pasul 4. Pasul 4. Se determin indicele k J- cu criteriul de intrare n baz: B B min ( z j c j ) = zk ck


j J

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

B B B B yij ylk ylj yik B ylk

Cap.1. Programare liniar

CO - Cursul 2

14

Cap.1. Programare liniar

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

Nu Nu exist soluieProcess optim finit STOP

Determin linia pivotului Calculeaz noul tabel simplex

Prezint tabelul simplex final (ce conine soluia optim)


Cap.1. Programare liniar

CO - Cursul 2

16

Exemplu. S se rezolve cu algoritmul simplex problema de PL:


min (4 x1 3 x2 + 5 x3 ) 3 x1 2 x2 + x3 4 2 x1 + x2 + 2 x3 1 2 x1 + 4 x2 3 x3 6 x 0, x 0, x 0 2 3 1

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

Matricea sistemului de restricii a formei de mai sus a problemei este:


3 2 1 1 0 0 A = 2 1 2 0 1 0 2 4 3 0 0 1

cu m = 3, n = 6, rang (A) = 3 < 6.


Cap.1. Programare liniar

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

Cap.1. Programare liniar

CO - Cursul 2

20

Exemplu. S se rezolve problema de PL:


max ( x1 + 3 x2 + 2 x3 ) x1 x2 + x3 2 2x + 2x x 4 1 2 3 x1 , x2 , x3 0

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

Cap.1. Programare liniar

CO - Cursul 2

23

3.3. Metoda coeficienilor de penalizare


Pentru a putea ncepe aplicarea algoritmului simplex este necesar a fi ndeplinite dou condiii: problema s fie n form standard; s dispunem de o soluie de baz iniial. Pentru cea de-a doua condiie, alegerea la ntmplare a unei baze formate din m vectori oarecare dintre vectorii coloan ai matricei A poate conduce la soluii de baz nerealizabile cu care aplicarea algoritmului simplex nu poate ncepe. Determinarea unei soluii de baz iniial se poate realiza cu metoda coeficienilor de penalizare.
Cap.1. Programare liniar

CO - Cursul 2

24

Fie problema de PL de minimizare:


[min] z = c1x1 + c2 x2 + L + cn xn a11x1 + a12 x2 + L + a1n xn b1 LLLLLLLLLLLLL am1x1 + am 2 x2 + L + amn xn bm x ,..., x 0 n 1

(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

a11 x1 + a12 x2 + L + a1n xn xn +1 = b1 a21 x1 + a22 x2 + L + a2 n xn xn + 2 = b2 LLLLLLLLLLLLLLL am1 x1 + am 2 x2 + L + amn xn xn + m = bm

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

Fie problema de PL de maximizare:


[max] z = c1x1 + c2 x2 + L + cn xn a11x1 + a12 x2 + L + a1n xn = b1 LLLLLLLLLLLLL am1x1 + am 2 x2 + L + amn xn = bm x ,..., x 0 n 1

(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.

Cap.1. Programare liniar

CO - Cursul 2

32

Exemplu. S se rezolve problema de PL cu metoda coeficienilor de penalizare: min (3x1 + 4 x2 + 7 x3 ) x1 + 3 x2 x3 10 x +x +x 6 2 3 1 x1, x2 , x3 0

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

min (3x1 + 4 x2 + 7 x3 + Mx6 + Mx7 ) + x6 = 10 x1 + 3x2 x3 x4 x +x +x x5 + x7 = 6 1 2 3 xi 0, i = 1, 7

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:

Cap.1. Programare liniar

CO - Cursul 2

34

Cap.1. Programare liniar

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.

Cap.1. Programare liniar

CO - Cursul 2

36

4. Postoptimizare

Cap.1. Programare liniar

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

Cap.1. Programare liniar

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

6. Programare n numere ntregi


6.1. Consideraii generale 6.2. Exemple de probleme economice 6.3. Metoda branch and bound

Cap.1. Programare liniar

CO - Cursul 2

44

6.1. Consideraii generale


n problemele de programare liniar studiate anterior variabilele au fost supuse condiiei de nenegativitate, avnd o variaie continu. O serie de situaii din domeniul economic impun cerina ca variabilele s nu poat lua dect valori din anumite mulimi discrete. Astfel de restricii de discontinuitate apar atunci cnd variabilele sunt exprimate n uniti de msur indivizibile (numr de buci etc.). Problemele de optimizare cu restricii de discontinuitate aparin domeniului programrii discrete.
Cap.1. Programare liniar

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).

Cap.1. Programare liniar

CO - Cursul 2

48

6.2. Exemple de probleme economice


Exemplu. Problem de ncrcare Se consider cazul ncrcrii unui camion cu n tipuri de colete cu marf, de mas mi (i = 1,..., n) i valoare vi (i = 1,..., n). Camionul admite o ncrcare maxim C. S se stabileasc modul optim de alegere a ncrcturii camionului astfel nct valoarea total a coletelor transportate s fie maxim. Se noteaz cu xi numrul de colete de tipul i ce urmeaz a fi ncrcate n camion. Funcia obiectiv este valoarea total a coletelor
Cap.1. Programare liniar

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.

Se definesc variabilele bivalente: 1, dac proiectul i este ales xi = 0, altfel


Cap.1. Programare liniar

CO - Cursul 2

51

Modelul matematic al problemei are forma:


n [max] z = ci xi i =1 n ai xi S i =1 xi = 0 sau 1, i = 1, n

Modelul de problem de optimizare obinut poart numele de model de programare zero-unu.

Cap.1. Programare liniar

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

Restriciile privind cererea pieii:


Cap.1. Programare liniar

CO - Cursul 2

54

x j a j , j = 1, n

Restriciile privind capacitatea de producie: x j b j , j = 1, n Definiia variabilei yj se poate reformula:


xj yj b j , j = 1, n y {0, 1} j

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

n [min] z = c j x j + q j y j j =1 x j b j y j , j = 1, n x a , j = 1, n j j y j {0, 1}, j = 1, n

Cap.1. Programare liniar

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

n care intervin variabilele: ui 0, i = 2, n , ui Z


Cap.1. Programare liniar

CO - Cursul 2

59

Modelul matematic al problemei are forma:


n n [min] z = dij xij i =1 j =1 n xij = 1, j = 1, n i =1 n x = 1, i = 1, n ij j =1 ui u j + nxij n 1, i, j = 2, n, i j x {0, 1}, i, j = 1, n ij ui 0, ui Z , i = 2, n
Cap.1. Programare liniar

CO - Cursul 2

60

6.3. Metoda branch and bound


Procedeul acestei metode poate fi descris sub forma unei diagrame arborescente. Metoda genereaz nodurile arborelui pn cnd toate cile ajung n noduri terminale. Pentru fiecare nod exist dou ramuri de verificat. Dac nici una dintre ramuri nu ajunge ntr-un nod terminal, atunci metoda urmeaz cel mai favorabil nod, nodul de pe cealalt ramur, fiind considerat independent. Se consider problema de programare n numere ntregi mixte:
Cap.1. Programare liniar

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

Exemplu. S se rezolve problema de programare n numere ntregi:


max (7 x1 + 3x2 ) 2 x1 + 5 x2 30 8 x1 + 3x2 48 x1, x2 0 x , x Z 1 2

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

Cap.1. Programare liniar

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:

Cap.1. Programare liniar

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)

Cap.1. Programare liniar