UNITATEA DE NVARE 3
Cuprins
Rezolvarea unui program ntreg este o chestiune dificil mai cu seam n cazul n care
dimensiunile acestuia numr de restricii , numr de variabile sunt mari ca i atunci cnd
programul este puternic structurat.n unele contexte concrete este suficient rezolvarea
programului relaxat, operaie care de regul este mult mai uor de fcut, i rotunjirea rezultatului la
o soluie ntreag acceptabil (suboptimal). Exist totui destule situaii n care cunoaterea soluiei
optime ntregi este imperios necesar. Iat de ce n aceast unitate de nvare se propun
urmtoarele obiective:
- prezentarea la nivel de principiu a unor clase de metode de rezolvare exact a programelor
ntregi;
- descrierea efectiv a metodei Branch and Bound, des utilizat n programele de calculator;
- ilustrarea numeric a aplicrii metodei B&B.
Din punctul de vedere al teoriei complexitii, programele ntregi fac parte din clasa
problemelor grele.Aceasta nu nseamn c ele sunt cu totul intractabile. n dimensiune relativ
moderat, aceste probleme pot fi rezolvate exact i n timp rezonabil. Folosind metode de cutare
din ce n ce mai sofisticate au putut fi rezolvate cu succes i probleme de dimensiuni apreciabile.
Totui nu se poate spune c metodele exacte orict de sofisticate ar fi ele sunt n stare s fac
fa oricrei probleme i mai mult pot avea comportamente radical diferite pe probleme
asemntoare i de aceeai talie!
Faptul c un program ntreg are (sau poate fi fcut s aibe) un numr finit de soluii sugereaz i
cel mai simplu mod de rezolvare bazat pe enumerarea total sau parial a acestor soluii.
Enumerarea total a fost evocat doar ca posibilitate pentru c, dei este finit, numrul soluiilor
ntregi ce trebuie generate i verificate poate fi ( mai cu seam n aplicaiile practice) excesiv de
mare.
Schemele de enumerare parial determin soluia optim ntreag genernd efectiv doar o
parte a mulimii soluiilor ntregi de dorit ct mai mic - soluiile negenerate fiind recunoscute
implicit ca neoptimale. Domeniul predilect al metodelor de enumerare l constituie programarea
bivalent i un exemplu reprezentativ (n fapt, primul) este algoritmul aditiv al lui BALA (1965).
Exceptnd enumerarea, metodele exacte clasice reduc rezolvarea unui program ntreg (P)
la rezolvarea mai multor programe liniare uzuale cu ajutorul procedurii simplex primal sau
dual.
Astfel, metodele de tip plane de seciune genereaz o secven finit de programe liniare
PL PL0 , PL1 , PL2 , ... , PLt primul fiind relaxatul programului (P) i ultimul avnd drept
soluie optim chiar soluia optim ntreag cutat. Pentru fiecare k 1,2,..., t programul (PLk) se
obine din programul anterior (PLk-1) prin adugarea unei tieturi a crei construcie difer de la
metod la metod. Elementul comun al acestor proceduri este observaia potrivit creia soluia
optim ntreag va fi recunoscut de algoritmul simplex dac i numai dac ea va fi ntr-o
problem extins o soluie de baz cu trei proprieti: s fie primal admisibil ( s aibe
Branch and Bound, abreviat B&B (LAND, DOIG, 1960; DAKIN, DRIEBECK, 1964;
BALA, 1965) este o metod alternativ de rezolvare a programelor ntregi totale sau mixte bazat
pe un principiu ce amintete vechiul adagiu latin divide et impera. Deoarece problema original
este n general greu de rezolvat direct, ea este ramificat, adic divizat n subprobleme mai
mici, cu mai puine soluii ntregi. Fiecare subproblem rezultat din ramificare este mrginit,
aceasta nsemnnd calcularea unei valori (margini) care arat ct de bune sunt soluiile
subproblemei respective pentru procesul de optimizare. n principiu, fiecare subproblem este la
rndul ei ramificat n subprobleme i mai mici, afar de cazul n care marginea ataat arat c,
printre soluiile ei ntregi, nu se gsete cu siguran soluia optim ntreag cutat.
Pentru prezentarea metodei vom fixa un program liniar ntreg (P) n care funcia obiectiv se
maximizeaz. Putem presupune c toi coeficienii funciei obiectiv sunt numere ntregi astfel c
evaluarea ei n orice soluie ntreag a programului (P) va fi un numr ntreg. Admitem c mulimea
soluiilor admisibile ale programului relaxat (PL) este mrginit; de aici va rezulta c (P) are un
numr finit de soluii ntregi. Aceast ipotez nu este deloc restrictiv fiind asigurat n toate
aplicaiile practice.
Metoda utilizeaz o list L n care vor fi nscrise toate programele ntregi rezultate din
procesul de ramificare. Dup cum se va vedea, toate programele din lista L sunt extinderi ale
programului original (P) cu limitri impuse unora dintre variabile. Lista este dinamic n sensul c,
pe parcurs, n ea se vor opera tergeri i/sau adugiri de programe. La start L = {P}.
ntr-o locaie notat xCMB se va pstra Cea Mai Bun soluie admisibil ntreg gsit n
timpul derulrii procedurii. ntr-o alt locaie, zCMB , se va nscrie valoarea funciei obiectiv n
soluia din xCMB. La start:
Locaia xCMB se poate iniializa i cu o soluie ntreag particular, n caz c o asemenea soluie se
cunoate! Evident z CMB se va iniializa cu valoarea corespunztoare a funciei obiectv.
Vom arta acum cum lucreaz metoda.
Pasul 1 Dac lista L este vid procedura se oprete. Dac locaia xCMB este ocupat acolo se va
gsi soluia optim ntreag a programului (P). Valoarea optim a funciei obiectiv se va lua din
zCMB. n caz c locaia xCMB este vid, programul (P) nu are soluii admisibile ntregi.
Dac lista L este nevid se trece la:
Pasul 2 Se selecteaz unul dintre programele nscrise n L, de obicei primul. Programul selectat,
notat P , se terge din list ( atenie, lista L este ordonat aa c de la bun nceput trebuie convenit
locul n care vor fi operate tergerile i adugirile de programe, de exemplu n capul listei).
Not: la prima iteraie , P P ns pe parcurs indicele va fi dup cum se va vedea o
succesiune de 1 i 2.
Pasul 3 Se trece la rezolvarea programului relaxat (PL) folosind algoritmul simplex. Sunt
posibile urmtoarele situaii:
I) (PL) este un program incompatibil, adic nu are soluii admisibile; evident nici P nu
va avea soluii ntregi. Se revine la pasul 1.
II) ( PL) este un program compatibil i cu siguran va avea un optim finit notat z. Este
uor de vzut c numrul ntreg z este o margine superioar a funciei obiectiv din (P) pe
soluiile ntregi ale programului P . Dou cazuri sunt posibile n continuare:
II1) z z CMB
n aceast situaie nici o soluie ntreag a lui P nu va fi mai bun dect soluia ntreag
depozitat n xCMB ! Ca urmare, este inutil s mai cercetm soluiile ntregi ale programului P (vom
spune c programul (P) este abandonat). Se revine la pasul 1.
II2) z z CMB
(n acest caz s-ar putea ca (P) s aibe soluii ntregi mai bune dect soluia din locaia xCMB !) Fie
x* soluia optim a programului (PL).Sunt posibile dou continuri:
II21) Toate variabilele ntregi din programul original au valori ntregi n x* ; evident,
x* va fi o soluie ntreag mai bun dect cea existent n xCMB, drept care se fac actualizrile:
x CMB x ; z CMB f ( x )
II22) Una sau mai multe variabile ntregi din programul original au n x* valori
fracionare. Fie xk una din aceste variabile. Este clar c orice soluie ntreag a programului P va
verifica una din inegalitile mutual exclusive:
x k x k sau x k x k x k 1
P P
P1 P2
xk xk xk xk
i
x x1 , x2
APL 1
APL 2
x1
x1 x1 x1 x1
Figura 1
(comentariu: prin urmare, cercetarea soluiilor ntregi ale lui P se va realiza prin cercetarea
separat, n etape ulterioare diferite, a soluiilor ntregi ale programelor P 1 i P2. Cercetarea va fi
oarecum uurat prin faptul c programele succesoare P1 i P2 au fiecare mai puine soluii
ntregi dect programul printe P)
Noile programe (P1) i (P2) se adaug in capul listei L , n locul lui P deja ters:
L = { P1 , P2, ....}
Se revine la pasul 2.
Pentru nelegerea metodei vom vizualiza procesul de ramificare printr-un graf arbore T ale
crui noduri sunt relaxatele diferitelor programe rezultate din ramificare vezi figura 2. Un nod
din T , identificat cu programul liniar (PL) va fi un nod terminal dac i numai dac programul
(P) nu a mai fost ramificat i aceasta se ntmpl n trei situaii:
- (PL) este un program incompatibil;
sau
- (PL) este compatibil dar marginea ataat arat c nu are soluii ntregi mai bune dect
soluia existent n xCMB;
sau
- (PL) are soluie optim ntreag mai bun dect cea din xCMB.
Cu excepia rdcinii (PL) fiecare nod din T are un unic predecesor. Orice nod care nu este nod
terminal are doi succesori.
PL
PL1 PL2
... ....
Figura 2
Aceasta ar fi o descriere de principiu a metodei B&B. Desigur, sunt necesare precizri privind
modul de alegere al subproblemei ce urmeaz a fi ramificat sau al variabilei dup care se face
ramificarea. La fel, manipularea i stocarea datelor condiioneaz nemijlocit performanele metodei.
Nu mai puin important s-a dovedit etapa de pregtire a programului de rezolvat n care acesta este
simplificat i reformulat prin eliminarea eventualelor restricii redundante i a variabilelor a cror
valoare optim poate fi dedus direct din structura problemei (preprocesare). Metoda B&B este
astzi implementat n mai toate programele comerciale destinate rezolvrii programelor ntregi.
Principalele dezavantaje ale metodei descrise sunt:
Branch and Cut este o procedur i mai performant, rezultat din combinarea metodei B&B cu
metoda planelor de seciune. Versiunea hibrid a fost utilizat cu succes la rezolvarea unor probleme
de tip comisvoiajor de dimensiuni impresionante.
(max) f 2 x1 5x2
2x 2x 9
1 2
( P) x1 3x2 1
x ,x 0
1 2
x1 , x2 intregi
folosind metoda B&B descris mai sus. Convenim ca n lista L toate adugirile i tergerile s se
opereze n capul listei iar variabila dup care se face ramificarea unui program (P) s fie prima
variabil ntreag cu valoare fracionar n soluia optim a relaxatei (PL).
Start Iniializm:
Iteraia 1 Operaii:
(max) f 2 x1 5x2
2x 2x 9
1 2
( PL)
x1 3x2 1
x1 , x2 0
1 1 3
x1 1 , x 2 3 ; z f ( x ) 18
4 4 4
3
Optimul ntreg nu depete marginea superioar z 18 18 .Condiia de ramificare
4
z z CMB 18 este banal satisfcut (suntem abia la nceput i nc nu a fost gsit nici o
soluie ntreag a programului (P)). Ramificm (P) dup variabila x1, prima variabil ntreag cu
valoare fracionar n x*. Aceasta nseamn nlocuirea programului (P) cu programele ntregi:
L = { P1 , P2 }
Iteraia 2 Operaii:
1 2
x1 1 , x 2 3 ; z1 f ( x ) 18
3 3
P1 P1
(P11 ) i (P12 )
x2 3 x2 4
vor fi nscrise n capul listei L :
L = { P11 , P12 , P2}
L = { P12 , P2}
dup care rezolvm programul relaxat (PL11) ; obinem soluia optim ntreag:
x1 1 , x 2 3 ; f ( x ) 17
n acest stadiu al derulrii algoritmului B&B nu putem ti dac aceast soluie este i soluia optim
a programului original (P). O vom reine ca fiind Cea Mai Bun soluie ntreag gsit pn acum:
Iteraia 4 Acum se va rezolva relaxata programului (P12). Lista programelor ntregi de studiat se
reduce la:
L = { P2}
Iteraia 5 Se selecteaz programul (P2); lista L devine vid. Programul relaxat (PL2) are soluia
optim fracionar:
1 1
x1 2 , x2 3 ; z2 f ( x ) 16
2 2
Deoarece z 2 16 17 z CMB nici o soluie ntreag a programului (P2) nu este mai bun dect
soluia existent n xCMB; abandonm (P2) i revenim la consultarea listei L .
Iteraia 6 n acest moment L = : aceasta nseamn c toate soluiile ntregi ale programului
original (P) au fost cercetate i c soluia depozitat n xCMB este cea mai bun. n concluzie, soluia
optim ntreag cutat este :
x10 1 x 20 3 f ( x 0 ) 17
Consideraiile precedente sunt sintetizate n graful arbore T din figura 3 ; nodurile lui T sunt
cele cinci programe liniare efectiv rezolvate cu algoritmul simplex n ordinea PL , PL 1, PL11 , PL12 i
PL2.
Iniializare
xCMB = zCMB =-
PL
x1 1 x1 2
PL1 PL2
Figura 3
Dup cum s-a mai spus, arborele T se construiete progresiv pe msura derulrii algoritmului.La
start el se reduce la rdcina (PL) i n continuare primete noi noduri i arce corespunztoare
programelor rezultate din ramificare.
Un nod (PL) unde este o succesiune de 1 i 2 corespunztor unui program ntreg (P )
ramificat, are doi succesori (PL1) i (PL2) ce corespund relaxatelor programelor ntregi:
(P ) (P )
(P1 ) i (P 2 )
x j x j x j x j
rezultate din ramificarea dup variabila xj (reamintim c x* este soluia optim a programului relaxat
(PL) n care x j este prima component fracionar!)
Am putea spune c, o dat stabilit oportunitatea ramificrii programului (P ) sau, altfel spus, a
nodului (PL), exist dou direcii de naintare n arborele T: una spre stnga ctre nodul
(PL1), i cealalt spre dreapta ctre nodul (PL2). Ca regul de naintare, ntotdeauna se va
merge mai nti spre stnga, ctre (PL1) i apoi, ntr-o etap ulterioar i nu neaprat imediat, pe
cealalt direcie catre (PL2).
Examinarea direciilor de naintare spre dreapta sugereaz ntoarceri dintr-un nod (PL)
ctre unicul predecesor. Pasul napoi se face atunci cnd din nodul (PL ) nu se mai poate
nainta i aceasta se ntmpl numai dac:
- noduri active noduri din care se poate face o naintare n T pe una din cele dou
direcii posibile;
- noduri moarte noduri din care naintarea nu mai este posibil fiind necesar ntoarcerea
n nodul predecesor.
-
Cu aceste precizri de terminologie procedura B&B se oprete cnd rdcina (PL) a arborelui T este
declarat nod mort.
Utilizarea limbajului introdus permite o descriere foarte sugestiv a modului n care a acionat
metoda B&B n ilustrarea numeric prezentat.
Astfel, n iteraia 1, din nodul ramificat (PL) am naintat spre stnga ctre succesorul (PL 1)
micarea 1. La iteraia 2 am mai fcut o naintare spre stnga ctre succesorul (PL 11)
micarea 2. Nodul (PL11) nu a mai fost ramificat deoarece a produs o soluie ntreag (ca urmare a
fost declarat nod mort). Atunci ne-am ntors n unicul predecesor (PL 1) micarea 3 i am
naintat spre dreapta ctre al doilea succesor (PL 12) micarea 4. Din nou ramificarea nu a mai
fost posibila din cauza incompatibilitii programului (PL12); nodul (PL12) a fost declarat mort .
Ne-am ntors iari n (PL1) micarea 5 i constatnd c ambele direcii de naintare din (PL 1)
au fost examinate am mai fcut un pas napoi micarea 6 ctre predecesorul (PL), nodul (PL 1)
fiind i el declarat mort . Abia acum am cercetat a doua direcie de naintare din (PL), cea care duce
la succesorul (PL2) micarea 7. Aici am realizat c este inutil continuarea ramificrii (declarnd
nodul (PL2) mort), drept care ne-am ntors din nou n rdcina (PL) micarea 8 cu concluzia
c am cercetat toate soluiile ntregi ale programului dat. Cele cinci noduri au fost declarate moarte
n ordinea (PL11), (PL12), (PL1), (PL2), (PL). Problemele de programare liniar au fost rezolvate n
ordinea (PL), (PL1), (PL11), (PL12), (PL2).
PL , PL1 , PL11 , PL12 , PL121 , PL1211 , PL1212 , PL12121 , PL12122 , PL122 , PL2
Iniializare
xCMB = ; zCMB = -
PL
x1 = 2.9 ; x2 = 0 ; f = 58
x1 2 x1 3
PL1 PL2
x1 = 2 ; x2 = 1.49 ; f = 56.39 incompatibil
x2 1 x2 2
PL11 PL12
x1 = 2 ; x2 = 1 ; f = 51 x1 = 1.692 ; x2 = 2 ; f = 55.833
Prima actualizare
xCMB (2,1) ; zCMB 51 x1 1 x1 2
PL121 PL122
x1 = 1 ; x2 = 3.145 ; f = 54.595 incompatibil
x2 3 x2 4
PL1211 PL1212
x1 = 1 ; x2 = 3 ; f = 53 x1 = 0.483 ; x2 = 4 ; f = 55.367
A doua actualizare
xCMB (1,3) ; zCMB 53 x1 0 x1 1
PL12121 PL12122
x1 = 0 ; x2 = 4.8 ; f = 52.8 incompatibil
Stop ramificare
deoarece marginea
este mai mic dect zCMB =53
Figura 4
Exemplul 3 Aa cum s-a specificat deja n finalul seciunii 3.1 ,combinarea metodei B&B
cu generarea de tieturi conduce, n general, la accelerarea rezolvrii programelor ntregi. Pentru
ilustrare relum programul (P) din exemplul 2, pe care, mai nti, l vom extinde cu cteva
tieturi uor de construit. Reamintim c o tietur este o restricie suplimentar care elimin o parte
dintre soluiile nentregi conservndu-le ns pe cele ntregi.(vezi indicaiile date n seciunea 2.2 a
unitii de nvare 2!)
1 240 696 95 116
nmulim unica restricie din (P) cu scalarul : x1 x 2 1 x1 x 2 4 .
145 145 145 145 145
Rotunjind inferior coeficienii fracionari rezult tietura x1 x 2 4 ( de ce?).
1 145 696 216
nmulim acum restricia original cu scalarul : x1 x2 2 .Din nou rotunjim
240 240 240 240
inferior coeficienii nentregi; obinem o alt tietur x1 2 .
(max) f 20 x1 11x2
240 x 145x 696
1 2
( P) x1 x2 4
x 2
1
x1 , x2 0, intregi
va avea aceleai soluii ntregi ca i (P) i n particular aceeai soluie optim ntreag. Aplicarea
metodei B&B la programul (P) conduce mai repede la optim : din arborele dat n figura 5, rezult
c a fost nevoie s fie rezolvate numai 5 programe liniare fa de 11 cte sunt n arborele
programului original (P), vizualizat n figura 4!
Iniializare
xCMB = ; zCMB = -
PL
x1 = 2 ; x2 =1.49 ; f = 56.39
x2 1 x2 2
PL1 PL2
x1 = 2 ; x2 =1 ; f = 51 x1 = 1.692 ; x2 = 2 ; f = 55.833
Prima actualizare
x1 1 x1 2
xCMB (2,1) ; zCMB 51
PL21 PL22
x1 = 1 ; x2 =3 ; f = 53 incompatibil
A doua actualizare
xCMB (1,3) ; zCMB 53
Figura 5
2. Ce modificri trebuie aduse procedurii B&B pentru a obine toate soluiile optime ntregi (n
caz c sunt mai multe)
4. Rezolvarea unui program ntreg prin metoda B&B a necesitat aplicarea algoritmului simplex
programelor liniare indicate n arborele din figura 6. n ce ordine au fost rezolvate aceste programe
dac, de fiecare dat cnd un program (P) din lista L a fost ramificat, cele dou noi programe (P 1)
i (P2) au fost nscrise:
i) ambele n capul listei L n ordinea P1 , P2 (regula uzual);
ii) ambele n coada listei L n ordinea P1 , P2;
iii) P1 n capul listei L iar P2 n coada acesteia.
Se reamintete c, n ceeace privete consultarea listei L (care are loc la nceputul fiecrei iteraii),
programul care se selecteaz i se terge din list este cel situat n capul listei!
PL
PL1 PL2
Figura 6
5. Rezolvarea cu metoda B&B a unui program liniar n numere ntregi (P), n care funcia
obiectiv se maximizeaz , a necesitat rezolvarea programelor liniare indicate n arborele din figura
7.
a) Precizai soluia optim fracionar x* i optimul fracionar f(x*) precum i soluia optim
ntreag x0 i optimul ntreg f(x0);
b) Indicai pe arcele arborelui restriciile dup care s-a fcut ramificarea;
c) n ce ordine au fost rezolvate cele cinci probleme? Se va presupune c toate actualizrile
listei L s-au operat n capul acesteia!
d) De ce nu s-a continuat ramificarea din nodul (PL2) ?
x1 2 x 2 2
2 x1 2 x 2 9 x x 2 3 x1 8 x2 19
3x x 11 1 2 6 x 3 x 17
1 2 1 2
a) b) 2 x1 2 x 2 7 c )
x1 , x2 0 intregi x , x 0 intregi x1 , x2 0 intregi
(max)f 5x 1 2 x 2 1 2
(max) f 3x1 5x 2 (max) f 3 x1 2 x2
PL
f = 41.43
x1 = 1.43 ; x2 = 4.24
PL1 PL2
f = 41 f = 38.8
x1 = 1 ; x2 = 4.5 x1 = 2 ; x2 = 3.6
PL11 PL12
f = 37 f = 40
x1 = 1 ; x2 = 4 x1 = 1 ; x2 = 5
Figura 7
Rezolvai prin metoda Branch & Bound programele date (n rezolvarea programelor liniare generate
de metod putei folosi metoda grafic). Pentru fiecare caz, construii arborele T al programelor
liniare efectiv rezolvate.
(max) x 4
8 x 5 x 3x 100
1 2 3
6 x1 9 x 2 8 x3 200
7 x1 6 x 2 8 x3 4 x 4 0
5x1 9 x 2 4 x3 3x 4 0
x1 , x 2 , x3 , x 4 0 intregi