=
=
1
1
1
0 1
,...,
,...,
(max)
Abordarea "clasic" presupunea transformarea condiiilor de limitare superioar n egaliti:
a x b i m
x x u j
x j n
f c x
ij j i
j
n
j n j j
j
j j
j
n
= =
+ = =
=
=
=
+
=
1
1
1
1
0 1 2
,...,
,...,
,...,
(max)
n
Rezulta un program cu m+n restricii i 2n variabile, ale crui baze erau matrici de ordinul m+n.
Totui forma particular a restriciilor de limitare superioar a putut fi exploatat eficient
ntr-o specializare a algoritmului simplex n care inversa bazei curente are dimensiunea egal cu
numrul m al restriciilor propriu zise.
metode indirecte, bazate pe descompunerea problemei mari n subprobleme mai mici,
interconectate. Subproblemele pot fi rezolvate independent (i dac este posibil chiar simultan)
dar faptul c ele interacioneaz implic existena unui mecanism (problem) de coordonare.
Astfel, rezolvarea problemei originale mari se face "la dou nivele":
la primul nivel - inferior - se rezolv subproblemele; rezultatele sunt
"comunicate":
la al doilea nivel - superior - care "analizeaz" aceste rezultate i transmite
nivelului inferior noi parametri.
La nivelul unu are loc o reluare a calculelor (reoptimizare); noile rezultate sunt
trimise nivelului superior care le analizeaz .a.m.d.
Important este faptul c acest proces iterativ este convergent n sensul c ntr-un numr finit de
pai ( dialoguri ntre cele dou nivele), nivelul coordonator "anun" gsirea soluiei optime.
3. Descompunere n programarea liniar. Principiu
Considerm un program liniar n form standard:
( )
(max)
P
Tx t
x
f cx
=
0 n care:
T matrice mn;
x coloana celor n variabile;
t coloana celor m termeni liberi;
c linia celor n coeficieni din funcia obiectiv.
Pentru moment, nu vom face nici o ipotez asupra "mrimii" programului (P) sau asupra structurii
sale. tim c (P) poate fi rezolvat "dintr-o dat" cu ajutorul algoritmului simplex. Ne propunem s
artm cum poate fi rezolvat (P) prin descompunerea sa n mai multe subprobleme mai mici,
intercorelate.
Vom mpri sistemul Tx=t al restriciilor n dou blocuri (partiionarea este deocamdat
arbitrar):
T
d
b
t
M
A
blocul Ax=b cu m
1
< m restricii;
blocul Mx=d cu m
2
=m - m
1
restricii
Considerm mulimea soluiilor admisibile ale sistemului liniar Ax=b:
A ={x R
n
, Ax = b , x 0}
Este bine cunoscut faptul c A este o mulime convex i chiar poliedral (adic o intersecie finit
de semispaii din R
n
). Ea are un numr finit de vrfuri v
1
,v
2
,...,v
s
care se identific cu soluiile
admisibile de baz ale sistemului Ax = b.
Pentru simplitatea expunerii, vom presupune n continuare c mulimea A este mrginit
(aceast ipotez este ndeplinit n mai toate cazurile practice).
Un rezultat clasic al analizei convexe arat c orice punct al mulimii poliedrale i mrginite A
se scrie ca o combinaie convex a vrfurilor ei:
( ) ... = + + + x x v v
s
s
A
1
1
2
2
v
unde:
1 2
0 0 , ,...,
s
0 i
1 2
1 + + + = ...
s
nlocuind n blocul Mx = d i n funcia obiectiv f = cx obinem: x
k
k
k
s
=
=
1
v
s
Mx d Mv d
f cx f cv
k
k
k
s
k
k
k
s
= =
= =
=
=
( )
( )
1
1
Cu notaiile:
Q Mv cv k
k k
k
k
= = = , , 1 ...,
)
programul (P) se scrie echivalent:
( )
,...,
(max)
PM
Q d
k s
f
k
k
s
k
k
k
s
k
k k
k
s
=
=
=
=
=
=
=
1
1
1
1
0 1
n care variabilele sunt scalarii
1 2
, ,...,
s
Dac ( , ,...,
k
k
0
x
n care u este un vector linie ale crui componente se stabilesc i se modific n funcie de stadiul
rezolvrii programului (PM).
n esen, rezolvarea programului original (P) s-a redus la:
rezolvarea programului coordonator (PM);
i la:
rezolvarea mai multor probleme de forma P(u)
toate de dimensiuni mai mici dect cele ale programului (P); vezi figura 3.1
Nivelul 1
Programul subordonat P(u)
Nivelul 2
Programul coordonator (PM)
transmite soluia optim
care este un vrf al mulimii
A
transmite vectorul de parametri u n caz
c nu s-a ajuns la soluia optim a
programului (PM)
Figura 3.1
Cele de mai sus constituie esena principiului de descompunere Dantzig - Wolfe. El poate
fi folosit atunci cnd programul (P) are un numr foarte mare de restricii. Descompunerea devine
i mai atractiv n cazul n care submatricea A are o structur diagonal
A
1
A
2
.
.
A
p
0
0
A =
Figura 3.2
n care A
1
,A
2
,...,A
p
sunt matrici de diferite dimensiuni.Pentru simplificarea expunerii s
presupunem c A are doar dou blocuri A
1
i A
2
. Elementele constitutive ale programului (P) pot fi
partiionate astfel:
A b
T
x t
M
{
A
1
x
2
x
1
c
2
c
1
d
b
2
b
1
M
2
M
1
A
2
0
0
Figura 3.3
Programul (P) are deci forma:
=
cx f
x
t Tx
P
(max)
0 ) (
+ =
= +
=
=
2 2 1 1
2 1
2 2 1 1
2 2 2
1 1 1
(max)
0 , 0
x c x c f
x x
d x M x M
b x A
b x A
Se observ uor c n aceast situaie, problema P(u) se sparge n dou subprobleme independente
(care pot fi rezolvate simultan!):
=
1 1 1
1
1
1 1 1
1
) (
~
(max)
0 ) (
x uM c f
x
b x A
u P
=
2 2 2
2
2
2 2 2
2
) (
~
(max)
0 ) (
x uM c f
x
b x A
u P
Schema de rezolvare la dou nivele a programului (P) din figura 3.1 devine:
Nivel 2
u x
2
soluii optime
x
1
u
Subproblema P
2
(u) Subproblema P
1
(u)
Programul coordonator (PM)
Nivel 1
Figura 3.4
4. O interpretare economic a principiului de descompunere
S considerm o economie cu mai muli ageni. Fiecare agent opereaz un numr de
activiti de pe urma crora obine un venit. Operarea activitilor implic utilizarea unor resurse
disponibile n cantiti limitate. Firete, obiectivul fiecrui agent este maximizarea venitului
propriu.
Este clar c dac fiecare agent ar deine controlul asupra tuturor resurselor necesare lui
atunci maximizarea venitului la scara ntregii economii s-ar reduce la maximizarea venitului
fiecrui agent n parte.
n realitate lucrurile stau altfel.
Fiecare agent deine controlul asupra anumitor resurse: capaciti proprii de producie, fora de
munc angajat, resurse financiare proprii, unele materii prime utilizate n exclusivitate.Acestea vor
fi numite resurse specifice.
Pe lng resursele specifice, fiecare agent utilizeaz i alte resurse care nu sunt la dispoziia
sa exclusiv; aceste resurse sunt procurate de pe pia, la concuren cu ceilali ageni, datorit
faptului c sunt disponibile n cantiti limitate. Acestea vor fi denumite resurse comune.
n acest context, problema principial care se pune este de a stabili cum vor fi repartizate
resursele comune ntre ageni astfel nct, la scara ntregii economii, venitul s fie maxim.
ntr-o economie centralizat, repartizarea resurselor comune este fcut de stat care indic
fiecrui agent ce i ct s produc.
Ne propunem s artm cum se face repartizarea comune ntr-o economie descentralizat
n care autoritatea central nu mai deine controlul asupra aciunilor agenilor.
Ne vom situa n cazul ideal al unei economii liniare, caracterizate prin urmtoarele ipoteze:
pentru fiecare activitate, consumurile de resurse i venitul sunt direct proporionale cu
nivelul la care este operat activitatea;
nivelul de operare al unei activiti poate fi reprezentat de orice numr real nenegativ;
veniturile agenilor nu se condiioneaz reciproc i sunt egale cu suma veniturilor
activitilor fiecruia. Venitul la scara ntregii economii este suma veniturilor agenilor.
Pentru simplitatea expunerii vom presupune c n economia studiat exist numai doi
ageni.
Introducem notaiile:
x
1
, x
2
vectorii (coloan) nivelelor de operare ale activitilor celor doi ageni;
b
1
, b
2
vectorii (coloan) cantitlor disponibile din resursele specifice;
A
1
, A
2
matricile consumurlor unitare de resurse specifice;
M
1
, M
2
matricile consumurilor unitare din resursele comune;
d vectorul (coloan) cantitilor disponibile de resurse comune;
c
1
, c
2
vectorii (linie) veniturilor unitare corespunztoare celor doi ageni.
Evident, nivelele de operare ale activitilor agenilor sunt condiionate de disponibilele de resurse
specifice:
A
1
x
1
b
1
A
2
x
2
b
2
(4.1)
i n plus:
x
1
0 x
2
0 (4.2)
Vectorii x
1
, x
2
care satisfac relaiile 4.1 - 4.2 se vor numi programe posibile de activitate.
Un cuplu de programe posibile (x
1
, x
2
) devine realizabil numai dac necesarul de resurse
comune se ncadreaz n disponibilul dat adic:
M
1
x
1
+ M
2
x
2
d (4.3)
Venitul total pe economie are expresia:
f = c
1
x
1
+c
2
x
2
(4.4)
Reunind (4.1 - 4.4) obinem programul liniar:
(4.5) ( )
,
(max)
P
A x b
A x b
M x M x d
x x
f c x c x
1 1 1
2 2 2
1 1 2 2
1 2
1 1 2 2
0 0
+
= +
care modeleaz problema repartizrii resurselor comune n vederea maximizrii venitului pe
ntreaga economie.
Observm c matricea programului (4.5) are structura bloc diagonal cu restricii de
cuplare, identic cu structura pe care s-a prezentat, n seciunea precedent, principiul de
descompunere Dantzig - Wolfe.
Din punct de vedere formal, problema repartizrii resurselor comune ntr-o economie
descentralizat nseamn rezolvarea programului (P) n condiiile n care nici agenii nici autoritatea
central nu au informaii complete asupra acestuia. Astfel:
agentul 1 controleaz (cunoate) b
1
, A
1
, M
1
, c
1
;
agentul 2 controleaz (cunoate) b
2
, A
2
, M
2
, c
2
;
autoritatea central controleaz (cunoate) d.
Maximizarea venitului fiecrui agent, innd seama numai de resursele sale specifice, revine formal
la rezolvarea programelor:
( )
(max)
P
A x b
x
f c x
1
1 1 1
1
1
1 1
0
( )
(max)
P
A x b
x
f c x
2
2 2 2
2
2
2 2
0
1 2
P u
A x b
x
f c uM x
2
2 2 2
2
2
2 2
0 ( )
(max)
~
( )
Agenii comunic autoritii centrale propunerile optimale i . n principiu,autoritatea
centrala analizeaz oportunitatea lurii n considerare a acestor propuneri pentru maximizarea
venitului pe economie i poate decide modificarea sistemului de preuri, mrind preurile resurselor
comune "intens" solicitate.
~
x
1
~
x
2
Noile preuri sunt comunicate agenilor; acetia vor cuta noi soluii care s le
maximizeze veniturile nete "corectate". Evident, prin creterea preurilor la anumite resurse
comune, cererile "excesive" din aceste resurse vor fi "temperate". Formal, cele spuse nseamn
reluarea programelor P
1
(u), P
2
(u) cu u modificat!
Important este c ntr-un numr finit de asemenea "dialoguri schimburi de informaii"
ntre ageni i autoritatea central, vor rezulta soluiile i care maximizeaz venitul total pe
economie. n general, i nu coincid cu una sau alta dintre propunerile agenilor ( propuneri
fcute n cadrul dialogului sus amintit) ci sunt combinaii convexe ale acestora. Tot odat va
rezulta i un sistem u
x
1
x
2
x
1
x
1
x
2
*
de preuri pe resursele comune n raport cu care i maximizeaz
veniturile nete individuale ale agenilor! Spuunem c tripletul ( , ,u
x
1
x
2
x
2 *
) reprezint un echilibru
pentru economia (liniar) considerat.
Dialogul dintre autoritatea central i ageni poate fi reprezentat astfel:
Nivel 2
Propuneri de programe
de activitate
Propuneri de
programe de activitate
Preuri pe
resursele comune
u
x
2
x
1
Agent 1 Agent 1
Autoritatea central
Nivel 1
Figura 4.1
Comparnd aceast schem cu cea din figura 3.4 se constat c cele spuse mai sus constituie o
interpretare economic a principiului de descompunere Dantzig - Wolfe.
5. Algoritmul de descompunere Dantzig - Wolfe
n aceast seciune vom arta cum se rezolv efectiv programul principal (PM) din seciunea
3.
S admitem pentru moment c am cunoate toate constantele programului (PM). Vom aplica
acestui program versiunea revizuit a algoritmului simplex.
S presupunem cunoscut o baz admisibil B; n raport cu aceast baz partiionm
vectorul al variabilelor:
(
(
B
S
unde
B
este vectorul variabilelor bazice iar
S
al celor nebazice.
Soluia asociat bazei B va avea forma:
=
(
=
(
=
0
1
cu
1
S
B
S
B
d
B
B fiind presupus admisibil,
B
0. Fie:
=
B
B
1
vectorul multiplicatorilor simplex asociai bazei B (
B
este vectorul format din coeficienii
k
ai
variabilelor bazice
k
din
B
)
Valoarea funciei obiectiv f n soluia de baz este:
f
d
=
1
Elementele numerice B
-1
,
B
f , i sunt reunite n urmtorul tabel simplex redus:
B
B
-1
f
f
Tabelul 5.1
Din necesiti care vor deveni evidente imediat, partiionm astfel: = (
0
,u)
0
fiind prima component din iar u reunind pe celelalte.
Testarea optimalitii soluiei necesit calcularea costurilor reduse:
k
df
k k k k
k
k
k k k
Q
u
Q
uQ
uMv cv c uM v k s
=
(
=
(
= +
= + = =
1 1
1
0 0
0 0
[ , ]
( ) ,...,
=
Dup cum este bine tiut, dac
k
k s = 0 1,..., atunci este o soluie optim a programului
(PM). Pentru a vedea dac se ntmpl acest lucru evalum:
min min [ ( ) ] max ( )
,.., ,.., ,.., k s
k
k s
k
k s
k
c uM v c uM v
= = =
= =
1 1
0 0
1
Se observ c este valoarea maxim a funciei liniare max ( )
,.., k s
k
c uM v
=
1
~
( f c uM = )x
x
pe vrfurile
mulimii poliedrale mrginite A .
Conform teoremei centrale a programrii liniare [9] , evaluarea acestui maxim nu
necesit cunoatera aprioric a vrfurilor v
1
,...,v
s
; este suficient s se rezolve programul liniar:
P u
Ax b
x
f c uM
( )
(max)
~
( )
=
0
Fie v
*
o soluie optim a programului P(u) i valoarea funciei obiectiv
~
f
~
f n v
*
. v
*
este unul din
vrfurile mulimii A i putem scrie:
~
( ) max ( )
,..,
f c uM v c uM v
k s
k
=
= =
1
astfel c:
min
~
,.., k s
k
f
=
=
1
0
Dac ( n fapt !) atunci soluia
0
0
~
f
0
0 =
~
f este optim.
~
Dac se calculeaz Q
0
0 <
f
(
(
*
= Mv
*
, i se introduce n baza curent
coloana .
= cv
1
Q
Dup evaluarea coloanei se determin coloana care prsete baza actual i se pivoteaz
tabelul simplex redus curent, intrndu-se ntr-o nou iteraie.
B
Q
(
1
1
Din descrierea fcut rezult clar c ameliorarea soluiei admisibile de baz - presupus
dat - nu a necesitat cunoaterea de la nceput a tuturor vrfurilor mulimii A ; vrful necesar n
procesul de optimizare s-a obinut rezolvnd un program liniar de forma P(u) cu un vector u
adecvat.
n ceeace privete obinerea unei soluii de baz iniiale pentru programul (PM), aceasta
se poate obine n maniera uzual. Se pleac de la o baz unitar ale crei coloane corespund:
(unele) unor (eventuale) variabile de abatere existente n blocul Mx = d;
(altele) unor variabile artificiale introduse n anumite ecuaii ale blocului Mx = d i/sau
n ecuaia de convexitate .
k
k
s
=
=
1
1
n cazul n care au fost efectiv folosite variabile artificiale, ntr-o prim faz se va minimiza suma w
a acestora. Coloanele care vor intra n baz se vor genera dup schema general de mai sus, funcia
f fiind nlocuit cu funcia w care se minimizeaz!!
Exemplu 5.1 Se consider o economie liniar descentralizat cu doi ageni, fiecare oprnd
cte o activitate. Fie x
1
i x
2
nivelele de operare ale celor dou activiti. Resursele specifice
controlate de ctre cei doi ageni limiteaz nivelele activitilor dup cum urmeaz:
x
1
4 , x
2
3
Susinerea activitilor necesit dou resurse comune R
1
i R
2
al cror disponibil este limitat i
controlat de o "autoritate central". La un nivel de operare egal cu unitatea, vectorii consumurilor
din resursele R
1
i R
2
sunt: pentru prima activitate i pentru a doua. Vectorul cantitilor
disponibile din resursele R
2
2
(
3
1
(
1
i R
2
este . n fine, veniturile unitare sunt de 7 u.m. (uniti
monetare) n prima activitate i de 6 u.m. n a doua.
9
7
(
Fiecare agent caut s obin un venit ct mai mare, dar ei nu dein controlul asupra
resurselor comune. Pe de alt parte, economia fiind descentralizat, autoritatea central nu poate
impune agenilor nivelele la care s opereze activitile proprii.
Obiectivul urmrit este maximizarea venitului total pe economie.
Formal, problema const n rezolvarea programului liniar:
( )
,
(max
P
x
x
x x
x x
x x
f x x
1
2
1 2
1 2
1 2
1 2
4
3
2 3 9
2 7
0 0
0 7 6
+
+
= +
n situaia ncare nici agenii, nici autoritatea central nu dein "informaii complete" asupra
programului (P).
Dup cum am vzut, rezolvarea este posibil prin cooperarea dintre ageni i autoritatea
central, pe baza algoritmului de descompunere Dantzig - Wolfe.
Partiionm sistemul restriciilor n dou blocuri:
x
x
Ax b
1
2
4
3
2 3 9
2 7
2 3
2 1
9
7
1 2
1 2
x x
x x
Mx d M d
+
+
(
=
(
unde ,
Principiul de descompunere propune rezolvarea programului:
k
k
s
k
k
k
s
k
k k
k
s
Q d
k s
f
=
=
=
=
(
=
=
=
1
1
1
1
9
7
0 1
`
,...,
(max)
n care:
Q Mv cv v k
k k
s
k
k k
= = = = [ , ] ,..., 7 6 1
unde v
1
,...,v
s
sunt vrfurile mulimii poliedrale:
A = x x x
Ax b
x
x x =
`
)
( , ) .
1 2 1 2
0
0 4 0 3
}
s
0
Este evident mrginirea mulimii A .
O dat obinut soluia optim a programului propus, soluia optim a
programului original (P) va rezulta din formula:
{
k
k
= , ,..., 1
x v
k
k
k
s
=
=
1
Aplicm algoritmul simplex revizuit formei standard:
( )
`
,..., ; ,
(max)
PM
Q
y
y
k s y y
f
k
k
s
k
k
k
s
k
k k
k
s
=
=
=
=
+
(
=
(
=
=
1
1
1
2
1 2
1
1
9
7
0 1
Variabilele de abatere y
1
, y
2
arat ce cantiti din resursele comune R
1
, R
2
rmn nefolosite.
Programul (PM) are trei restricii i se vede uor c matricea sa conine coloanele unitare
i corespunztoare variabilelor y
0
1
0
(
(
(
0
0
1
(
(
(
1
, y
2
. Pentru o baz unitar de start ne-ar trebui i
coloana care nu este tot aa de "vizibil". Am putea introduce o variabil artificial n restricia
de convexitate , dar putem proceda, mai simplu, i astfel:
1
0
0
(
(
(
( , , 0 0 0
k
k
s
=
=
1
1
Se observ c vectorul nul este unul din vrfurile v
0
0
1
,...,v
s
ale mulimii A (nu ntotdeauna este
aa!); putem presupune c v
1
= .Atunci Q
0
0
(
(
1
= Mv
1
= i .
0
0
(
1
1
0 = = cv
n concluzie, matricea programului (PM) conine coloana unitar .
1
0
0
1
1
(
(
(
=
(
Q
Astfel, pentru (PM) dispunem de baza unitar corespunztoare varibilelor
1
, y
1
i y
2
. Toate
aceste variabile au coeficieni nuli n funcia obiectiv aa c :
B
= ) . n consecin, vectorul multiplicatorilor simplex asociai bazei unitare indicate este:
= = =
B B
B
1
0 0 0 [ , , ]
din care rezult
0
= 0 , u = [0,0]. Vectorul valorilor variabilelor bazice are componentele:
B
B y
y
=
(
(
(
=
=
=
=
(
(
(
1
1
1
2
1
9
7
1
9
7
Valoarea funciei obiectiv este:
f
B B
= =
(
(
(
=
1
9
7
0
Toate aceste elemente formeaz tabelul simplex redus de start:
1
1 1 0 0
(T
1
) y
1
9 0 1 0
y
2
7 0 0 1
f 0 0 0 0
Tabelul 5.2
Considerarea vrfului v
1
= sugereaz c, la iniierea dialogului ntre ageni i autoritatea
central, se pleac de la situaia n care cele dou activiti nu sunt operate: x
(
0
0
1
= 0 , x
2
= 0.
y
1
= 9 , y
2
= 7 arat c resursele R
1
i R
2
nu sunt deocamdat solicitate.
Am vzut n seciunea 4 c vectorul u are semnificaia de sistem de preuri pe resursele
comune.Aceste preuri sunt anunate de ctre autoritatea central agenilor, care la rndul lor, i
vor maximiza veniturile pltind pentru resursele comune solicitate. Propunerile de programe de
activitate sunt comunicate de ageni autoritii centrale. Aceasta preia propunerile i ncearc, pe
baza lor i a propunerilor mai vechi, s construiasc o mixtur care s se ncadreze n
disponibilul limitat de resurse comune i s conduc la un venit total ct mai mare.
Iteraia 1 Autoritatea central anun sistemul de preuri u = (0,0) , altfel spus ofer
resursele comune pe gratis.
Agenii rezolv programul:
+ =
=
2 1
2 1
2
1
6 7
~
(max)
0 , 0
3
4
)) 0 , 0 ( (
x x f
x x
x
x
u P
cu soluia optim evident:
46 3 6 4 7
~
(max)
~
, 3 , 4
2 1
= + = = = =
f f x x
pe care o trimit ca propunere de program de activitate autoritii centrale. Deoarece:
0 46 0
~
0
< =
f
soluia din tabelul (T
1
) nu este optim; baza curent trebuie schimbat prin introducerea unei noi
coloane din matricea programului (PM). Aceast coloan se genereaz astfel:
Vectorul - notat n teoria premergtoare cu v
(
=
=
3
4
2
1
x
x
*
- este un alt vrf al mulimii A , s zicem v
2
.
Calculm:
46
3
4
] 6 , 7 [ ,
11
17
3
4
1 2
3 2
3
4
2
2
2 2 2
=
(
= =
(
=
(
= =
(
= cv Mv Q v
Coloana care intr n baz va fi: .
(
(
(
=
(
11
17
1
1
2
Q
Calculele uzuale ale unei iteraii din algoritmul simplex revizuit sunt indicate mai jos
1 17 11
B
-1
1
1 1 0 0 1
1
8/17 1 -1/17 0
y
1
9 0 1 0 17 (T
2
)
2
9/17 0 1/17 0
y
2
7 0 0 1 11 y
2
20/17 0 -11/17 1
f 0 0 0 0
-46
f 414/17 0 46/17 0
(
2
1
Q
(
2
1
Q
f
~
0
u
0
Tabelul 5.3
Iteraia 2 Autoritatea central anun noul sistem de preuri: u = (46/17 , 0).
Dup cum se vede, resursa R
2
este nc oferit pe gratis, deoarece y
2
= 20/17 arat c mixtura:
(
=
=
=
(
+
(
= + =
17 / 21
17 / 36
3
4
17
9
0
0
17
8
~
2
1 2
2
1
1
x
x
v v x
nu utilizeaz integral aceast resurs.
Calculm vectorul veniturilor unitare nete:
(
=
(
=
(
=
17
36
,
17
27
17
138
6 ,
17
92
7
1 2
3 2
0 ,
17
46
] 6 , 7 [ uM c
Agenii vor avea de rezolvat programul:
=
2 1
2 1
2
1
17
36
17
27 ~
(max)
0 , 0
3
4
)) 0 ,
17
46
( (
x x f
x x
x
x
u P
a crui soluie optim este:
17
108
4
17
27 ~
(max)
~
, 0 , 4
2 1
= = = = =
f f x x
( La preurile actuale agentul 1 are un venit net pozitiv; el i poate permite s procure resursele
R
1
i R
2
n cantitile necesare pentru operarea activitii sale la nivelul maxim posibil 4. Pentru
agentul 2, resursa R
1
este "prea scump": orict de mic ar fi nivelul de operare al activitii proprii,
costul resurselor R
1
i R
2
depete venitul su brut astfel c, pentru agentul 2, decizia va fi s
nu fac nimic.)
Deoarece :
0
17
108
0
~
0
< =
f
soluia din tabelul (T
2
) adic mixtura descris mai sus, nu este optim. x
~
Noua propunere a agenilor este un alt vrf, s zicem v
(
=
=
0
4
2
1
x
x
3
, al mulimii A , vrf care va
produce coloana ce mbuntete baza curent:
28
0
4
] 6 , 7 [ ,
8
8
0
4
1 2
3 2
0
4
3
3
3 3 3
=
(
= =
(
=
(
= =
(
= cv Mv Q v
Intr n baz coloana:
(
(
(
=
(
8
8
1
1
3
Q
Pivotm tabelul curent (T
2
):
1 8 8
B
-1
1
8/17 1 -1/17 0 9/17
1
1/4 1 1/16 -3/16
2
9/17 0 1/17 0 8/17
(T
3
)
2
1/3 0 1/6 -1/6
y
2
20/17 0 -11/17 1 48/17
3
5/12 0 -11/48 17/48
f 414/17 0 0 0 -108/17 f 27 0 5/4 9/4
(
3
1
Q
(
3
1
Q
f
~
0
u
0
Tabelul 5.4
Iteraia 3 Noul sistem de preuri pe resursele comune anunat de autoritatea central va fi:
u = (5/4 , 9/4)
Veniturile unitare nete ale agenilor devin:
] 0 , 0 [ ] 6 , 7 [ ] 6 , 7 [
1 2
3 2
4
9
,
4
5
] 6 , 7 [ = =
(
= uM c
Astfel, funcia obiectiv a programului P(u = (5/4 , 9/4)) este constant: i n
consecin valoarea ei maxim va fi . Deoarece
0 ) (
~
= = x uM c f
0 0
~
=
f 0 0
~
0
= =
f soluia din tabelul (T
3
)
este soluia optim a programului (PM). Soluia optim a programului original (P) este mixtura
convex a celor trei propuneri v
1
,v
2
,v
3
:
(
=
=
=
(
+
(
+
(
= + + =
1
3
0
4
12
5
3
4
3
1
0
0
4
1
2
1 3
3
2
2
1
1
x
x
v v v x
iar venitul maxim total are valoarea (max)f = 27.
6. Metoda generrii de coloane pentru problema croirii
Dup cum am vzut, principiul de descompunere Dantzig - Wolfe rezolv un program liniar
cu multe restricii nlocuindu-l cu un altul - numit program principal - cu mai puine restricii dar
cu foarte multe coloane (variabile) care nu sunt disponibile de la nceput! n orice faz a
rezolvrii programului principal, un numr relativ mic de coloane sunt cunoscute, coloanele
necesare mbuntirii soluiilor intermediare fiind generate la "cerere".
Scopul acestei seciuni este acela de a arta cum se aplic tehnica generrii de coloane n
rezolvarea altor probleme de optimizare similare cum este de exemplu problema croirii introdus
n capitolul II, 2. n continuare vom vedea c aceast tehnic necesit luarea n considerare a unei
probleme de optimizare foarte simple ca structur dar deosebit de important n optimizarea
combinatorial - problema rucsacului. Pentru aceast subproblem, n seciunea urmtoare, va fi
prezentat o metod specific de rezolvare bazat pe programarea dinamic.
6.1 Problema croirii unidimensionale. Enun i model matematic
Un numr de m repere cu lungimile l
1
,l
2
,...,l
m
trebuiesc croite din supori cu lungimea comun L n
cantitile b
1
,b
2
,...,b
m
.Obiectivul const n satisfacerea cererilor cu un consum minim de supori.
Presupunem c L i l
1
,l
2
,..., l
m
sunt exprimate prin numere ntregi , pozitive i c L > l
1
>l
2
>..>l
m
. Am numit reet de croire o modalitate de tiere a unui suport n repere cu lungimile
cerute. Formal, o reet de croire se identific cu un vector a = (a
1
,a
2
,...,a
m
) cu componente numere
ntregi nenegative n care a
i
reprezint numrul reperelor cu lungimea l
i
rezultate din tierea
suportului. Suma lungimilor reperelor astfel obinute nu depete lungimea suportului, astfel c:
l a l a l a L
m m 1 1 2 2
+ + + ...
Numrul acestor reete este finit i ordonndu-le ntr-un fel oarecare, de exemplu
lexicografic,obinem lista:
a a a a a a a
n j
j j mj
T 1 2
1 2
, ,..., ( , ,..., ) unde =
(pentru nevoi ulterioare reetele vor fi scrise n coloan). Dac notm cu x
j
numrul de supori tiai
dup reeta a
j
( x
j
se mai numete i multiplicitatea reetei a
j
) modelul matematic al problemei de
croire este:
( )
, , . . . ,
P
x x x
z x x x
a x a x a x b a x b i m
x x x
n
n
n
n ij j
j
n
i
n
Sa se determine , , ... , care minimizeaza functia:
...
cu restrictiile:
... , ... ,
si conditiile explicite impuse variabilelor:
intregi
1 2
1 2
1
1
2
2
1
1 2
1
0
= + + +
+ + = = =
=
Deoarece pritre reetele a
1
,a
2
,...,a
n
se numr i reetele unitare:
(1,0,0,...,0) , (0,1,0,...,0) , ..., (0,0,0,...,1)
problema (P) are soluii admisibile (cu componente) ntregi i chiar soluie optim.
n cazul - frecvent ntlnit n practic - n care ne limitm la utilizarea numai a aa numitelor reete
maximale - adic a acelor reete a = (a
1
,a
2
,...,a
m
) pentru care restul:
w a L l a l a l a
m m
( ) ( ... ) = + + +
1 1 2 2
este mai mic dect lungimea celui mai mic reper - problema de croire se formalizeaz astfel:
( ' )
, ,...,
. . .
...
, , . . . , ,
P
y y y
Z y y y
A y A y A y b
y y y
N
N
N
N
N
Sa se determine care minimizeaza functia:
cu restrictiile :
si conditiile explicite impuse variabilelor:
intregi
1 2
1 2
1
1
2
2
1 2
0
= + + +
+ + +
unde A
1
, A
2
, ..., A
N
este (sub)lista reetelor maximale, iar y
1
,y
2
,...,y
N
sunt multiplicitile acestora.
Observaie: Dac n modelul (P) toate restriciile erau egaliti (aceasta nsemnnd croirea
reperelor "exact" n cantitile cerute) n noul model (P') nu mai putem impune aceeai condiie
deoarece,prin restrngerea modalitilor de croire a unui suport, este posibil ca sistemul
s nu aibe soluii ntregi nenegative! Iat de ce, pentru a asigura compatibilitatea
noului model suntem nevoii s admitem c anumite repere pot fi croite "n exces".
A y b
j
j
j
N
=
=
1
Programele ntregi (P) i (P') sunt n esen echivalente n sensul c au acelai optim ntreg
iar soluia optim a programului (P) utilizeaz cu prioritate reete maximale; n conssecin, n cele
ce urmeaz vom studia programul "mai general" (P).
Exemplul 6.1 Considerm cazul croirii a trei repere cu lungimile l
1
= 11, l
2
=7 , l
3
=4 din
supori cu lungimea L = 19. n urmtorul tabel sunt indicate toate reetele de croire i sunt puse n
eviden reetele maximale.
Reeta
a
1
A
1
a
2
A
2
a
3
a
4
a
5
A
3
a
6
a
7
A
4
a
8
a
9
a
10
a
11
A
5
a
12
a
13
a
14
l
1
= 11 1 1 1 1 0 0 0 0 0 0 0 0 0 0
l
2
= 7 1 0 0 0 2 2 1 1 1 1 0 0 0 0
l
3
= 4 0 2 1 0 1 0 3 2 1 0 4 3 2 1
Rest 1 0 4 8 1 5 0 4 8 12 3 7 11 15
Tabelul 6.1
Pentru cererile b
1
=12 , b
2
=18 , b
3
=30 :
luarea n considerare a tuturor reetelor de croire - maximale i nemaximale - conduce la
modelul:
+ + + + =
= + + + + + + + + +
+ + + + + +
+ + +
14 3 2 1
14 13 12 11 9 8 7 5 3 2
10 9 8 7 6 5 1
4 3 2 1
... ) min (
intregi , 0
30 2 3 4 2 3 2
18 = 2 2
12 =
) (
x x x x z
x
x x x x x x x x x x
x x x x x x x
x x x x
P
j
avnd n vedere numai reetele maximale obinem modelul:
( ' )
,
(min)
P
y y
y y y
y y y y
y
Z y y y y y
k
1 2
1 3 4
2 3 4 5
1 2 3 4
2
2 3 4
0
+
+
+ + +
= + + + +
12
+ 18
intregi
5
30
Ca orice problem de programare n numere ntregi ,(P) este foarte greu de rezolvat. n
marea majoritate a aplicaiilor practice vom fi fericii s obinem - n timp util i cu un efort
computaional rezonabil - o soluie "bun" nu neaprat optimal. Aa cum s-a indicat n capitolul
I,1,o asemenea soluie s-ar putea obine rotunjind convenabil soluia optim a problemei relaxate
(PL) dedus din (P) prin eliminarea cerinei ca variabilele s ia numai valori ntregi. Aceast
tactic conduce la rezultate foarte bune n special n cazurile n care cererile b
1
,b
2
,...,b
m
sunt mari;
ntr-adevr n aceste cazuri, componentele soluiei optime fracionare vor fi suficient de mari astfel
c pierderile datorate rotunjirii vor fi mici i nesemnificative.
n continuare ne vom ocupa de rezolvarea relaxatei (PL) a problemei de croire (P):
( )
(min)
PL
z x
a x b
x
j
j
n
j
j
j
n
j
=
=
=
=
1
1
0
Dificultatea rezolvrii acestei probleme rezid n numrul foarte mare de coloane (reete) pe care le
poate avea (mai cu seam n situaile reale) i care - n cazul rezolvrii "obinuite" - ar trebui mai
nti generate. Vom vedea n continuare cum se poate evita acest impediment.
6.2 Teoria metodei generrii de coloane
Vom aplica problemei (PL) versiunea revizuit a algoritmului simplex.. La start, se poate pleca cu
baza format din cele m reete unitare:
T m T T
e e e ) 1 ,..., 0 , 0 ( , ... , ) 0 ,..., 1 , 0 ( , ) 0 ,..., 0 , 1 (
2 1
= = = cu tabelul redus:
e
1
b
1
1
e
2
b
2
1
M M
O
e
m
b
m
1
f b
i
1 1
K
1
Tabelul 6.2
Cel mai bine este s se plece cu baza format din cele m reete unicat:
T
m
m T T
r K r K r K ) ,..., 0 , 0 ( , ... , ) 0 ,..., , 0 ( , ) 0 ,..., 0 , (
2
2
1
1
= = = n care:
(
=
1
1
l
L
r ,
(
=
2
2
l
L
r , ,
(
=
m
m
l
L
r
i cu tabelul simplex redus:
K
1
b
1
/r
1
1/r
1
K
2
b
2
/r
2
1/r
2
M M
O
K
m
b
m
/r
m
1/r
m
f b
i
/r
i
1/r
1
1/r
2
1/r
m
Tabelul 6.3
Fie B baza admisibil curent,
S
B
x
x b
x
=
0
soluia asociat bazei B. Presupunem disponibil
tabelul simplex corespunztor; vezi tabelul 6.4
Reamintim c:
b b B c f
B B c
b B b
B
B
= =
= =
=
1
1 1
1
] 1 ,..., 1 , 1 [
Dup cum se tie, soluia x va fi optim dac, pentru toate coloanele avem:
n
a a a ,..., ,
2 1
n j a c a B c c
j
j
j B
j
,..., 1 0 1
1
= = =
Pentru a testa ndeplinirea condiiei de mai sus este suficient s calculm:
] ... [ max
2 2 1 1
,.., 1
j
m m
j j j
n j
a a a a + + + =
=
i cum fiecare a
j
este o soluie cu componente ntregi nenegative a inecuaiei
va fi suficient s rezolvm programul auxiliar: L a l a l a l
m m
+ + + ...
2 2 1 1
+ + +
+ + +
intregi 0 ,..., ,
...
... max
) (
2 1
2 2 1 1
2 2 1 1
m
m m
m m
a a a
L a l a l a l
a a a
R
Dac maximul funciei obiectiv din R() este 1 este clar c 0 1 =
j
j
a c pentru toi j =
1,,n i soluia x asociat bazei B este optim.
Dac maximul din R() este > 1 atunci soluia optim a
max
intregi
=
=
1
1
0 1
(vezi seciunea urmtoare n ceeace privete modul algoritmic de rezolvare al problemei R() .
Pasul 2 Dac maximul funciei obiectiv din R() este 1 stop: soluia curent a problemei
(PL) este optim. Altminteri:
Pasul 3 Fie a
(reindexat eventual cu numrul de ordine al iteraiei) urmnd instruciunile algoritmului simplex
revizuit. Se revine la pasul 1 n cadrul unei noi iteraii.
Exemplul 6.2 Vom rezolva relaxata (PL) a problemei de croire (P) din exemplul 6.1
(sftuim cititorul s ignore faptul c am generat deja toate reetele de croire ale problemei...De
altfel, diferitele reete folosite de algoritm vor avea o notare diferit de cea din tabelul 6.1)
Start. Plecm cu baza format din reetele unicat:
K K K
T T T 1 2 3
10 0 0 2 0 0 0 4 = = = ( , , ) , ( , , ) , ( , , )
B K K K = =
(
(
(
[ , , ]
1 2 3
1 0 0
0 2 0
0 0 4
este o matrice diagonal a crei invers este : B
(
(
(
1
1
2
1
4
1 0 0
0 0
0 0
.
Soluia asociat bazei B = [K
1
,K
2
,K
3
]:
B b
(
(
(
(
(
(
=
(
(
(
1
1
2
1
4
15
2
1 0 0
0 0
0 0
12
18
30
12
9
multiplicitatea retetei K
multiplcitatea retetei K
multiplicitatea retetei K
1
2
3
(celelalte reete - pe cqre de fapt nu le tim - nu se folosesc).
Multiplicatorii simplex asociai bazei [K
1
,K
2
,K
3
]sunt:
= =
(
(
(
=
c B
B 1
1
2
1
4
1 0 0
0 0
0 0
[1,1,1] [1, , ]
1
2
1
4
Valoarea funciei obiectiv n soluia construit este: f =b = 112 +
1
2
18 +
1
4
30 = 28
1
2
Tabelul simplex redus de start:
K
1
12 1 0 0
K
2
9 0 1/2 0
K
3
15/2 0 0 1/4
f 57/2 1 1/2 1/4
Tabelul 6.5
Iteraia 1 Se rezolv problema :
R
a a a a a a
a a a
a a a
( )
( )
, ,
(max)
intregi
= + + = + +
+ +
1 4
11 7 4 19
0
1
1
2 2
1
4 3
1
4 1 2 3
1 2 3
1 2 3
2
Prin simpl inspecie (n cazul de fa) sau aplicnd un algoritm adecvat dac numrul reperelor este
mare (vezi seciunea urmtoare) se gsete (max) = 3/2 > 1 i soluia optim a
: A
1
= (1,1,0)
T
i introducem A
1
n baza curent:
coloana B
-1
A
1
A
1
1 1 0
K
1
12 1 0 0 1 pivot A
1
12 1 0 0
K
2
9 0 1/2 0 1/2
K
2
3 -1/2 1/2 0
K
3
15/2 0 0 1/4 0 K
3
15/2 0 0 1/4
f 57/2 1 1/2 1/4 1/2
=(max)-1
f 45/2 1/2 1/2 1/4
Tabelul6.6a Tabelul 6.6b
Iteraia 2 Rezolvm problema:
R
a a a a a a
a a a
a a a
( )
( )
, ,
(max)
intregi
= + + = + +
+ +
1
2 1
1
2 2
1
4 3
1
4 1 2 3
1 2 3
1 2 3
2 2
11 7 4 19
0
al crei optim , (max) = 5/4 > 1 , se atinge pe reeta maximal a
= (0,2,1)
T
,renotat A
2
.
Introducem A
2
n baza curent:
coloana B
-1
A
2
A
2
0 2 1
A
1
12 1 0 0 0 A
1
12 1 0 0
K
2
3 -1/2 1/2 0 1 pivot
A
2
3 -1/2 1/2 0
K
3
15/2 0 0 1/4 1/4 K
3
27/4 1/8 -1/8 1/4
f 45/2 1/2 1/2 1/4 1/4
=(max)-1
f 87/4 5/8 3/8 1/4
Tabelul6.7a Tabelul 6.7b
Iteraia 3 Acum se rezolv problema:
R
a a a a a a
a a a
a a a
( )
( )
, ,
(max)
intregi
= + + = + +
+ +
5
8 1
3
8 2
1
4 3
1
8 1 2 3
1 2 3
1 2 3
5 3 2
11 7 4 19
0
Se gsete (max) = 9/8 > 1 i soluia optim a
= (1,0,2)
T
,renotat A
3
. Introducem A
3
n baza
curent:
A
3
1 0 2
A
1
12 1 0 0 1 A
1
6/5 4/5 1/5 -2/5
A
2
3 -1/2 1/2 0 -1/2
A
2
42/5 -2/5 2/5 1/5
K
3
27/4 1/8 -1/8 1/4 5/8 pivot A
3
54/5 1/5 -1/5 2/5
f 87/8 5/8 3/8 1/4 1/8
=(max)-1
f 102/5 3/5 2/5 1/5
coloana B
-1
A
3
Tabelul6.8a Tabelul 6.8b
Iteraia 4 Rezolvm problema:
R
a a a a a a
a a a
a a a
( )
( )
, ,
(max)
intregi
= + + = + +
+ +
3
5 1
2
5 2
1
5 3
1
5 1 2 3
1 2 3
1 2 3
3 2
11 7 4 19
0
De aceast dat (max) = 1 astfel c soluia curent,nscris n tabelul 6. , este optim.
n concluzie, soluia optim fracionar a problemei de croire date utilizeaz:
reeta maximal A
1
= (1,1,0)
T
cu multiplicitatea
6
5
1
1
5
= ;
reeta maximal A
2
= (0,2,1)
T
cu multiplicitatea
42
5
8
2
5
= ;
reeta maximal A
3
= (1,0,2)
T
cu multiplicitatea
54
5
10
4
5
= .
Numrul suporilor "consumai" este :
102
5
20
2
5
= .
Observaie: Rentorcndu-ne la problema de croire general (P) i la relaxata acesteia se
constat imediat c optimul ntreg este cel puin egal cu rotunjirea superioar a optimului
fracionar!
n cazul de fa rezult c soluia optim ntreag va utiliza cel puin 20
2
5
21
(
(
(
= supori.
S vedem acum cum se determin o soluie "bun" pentru problema de croire studiat.
Etapa 1 Se rotunjesc inferior multiplicitile reetelor din soluia optim a problemei
relaxate (PL):
6
5
1
42
5
8
54
5
10
(
=
(
=
(
= ; ;
Etapa 2 Se determin cantitile de repere ce pot fi croite cu reetele din soluia optim
fracionar dar cu multiplicitile rotunjite inferior:
b A A A = + + =
(
(
(
+
(
(
(
+
(
(
(
=
(
(
(
1 8 10
1
1
0
8
0
2
1
10
1
0
2
11
17
28
1 2 3
Etapa 3 Se determin cantitile de repere care mai sunt de croit:
= =
(
(
(
(
(
(
=
(
(
(
b b b
12
18
30
11
17
28
1
1
2
Etapa 4 Pentru "cererea rezidual" b' se aplic urmtoarea euristic, numit FFD (First
Fit Decreasing):
se determin prima reet n sens lexicografic care "ncape" n b';
se actualizeaz b' prin extragerea reetei gsite i se reia pasul precedent.
n cazul nostru prima reet cuprins n b' este (1,1,0)
T
= A
1
.Actualizm cererea rezidual:
(
(
(
(
(
(
=
(
(
(
b
1
1
2
1
1
0
0
0
2
Au mai rmas dou repere cu lungimea l
3
= 4 a cror croire necesit consumarea unui suport .
Recapitulnd, o soluie "bun" pentru croirea cantitilor de repere cerute ar fi urmtoarea:
se folosete reeta A
1
= (1,1,0) de 1 + 1 = 2 ori;
se folosete reeta A
2
= (0,2,1) de 8 ori;
se folosete reeta A
3
= (1,0,2) de 10 ori;
se mai taie dintr-un suport dou repere cu lungimea l
3
= 4 adic se folosete rea
nemaximal (0,0,2) .
n total se consum 2 + 8 + 10 + 1 =21 supori i n baza unei observaii anterioare soluia construit
este chiar optim!
Concluzii finale
1. n soluia optim a problemei relaxate se utilizeaz numai reete maximale;
2. Dup aplicarea euristicii FFD asupra cererii reziduale, pot apare i cteva reete
nemaximale - de regul una singur;
3. Numeroasele experimente numerice au artat c optimul ntreg al problemei de croire
unidimensionale este de regul egal cu rotunjirea ntreag superioar a optimului fracionar i numai
n rare cazuri este mai mare dect aceasta cu exact o unitate!
7 Programare dinamic
n aceast seciune ne vom opri asupra problemei :
+ + +
+ + + =
intregi , 0 ,..., ,
...
... max
) (
2 1
2 2 1 1
2 2 1 1
m
m m
m m
a a a
L a l a l a l
a a a
R
n care sunt ntregi pozitivi.
m
l l l L > > > > ...
2 1
n seciunea precedent, (R) a aprut ca subproblem n rezolvarea relaxatei problemei de croire
unidimensionale prin metoda generarii de coloane. Este clar c eficacitatea metodei amintite
depinde de performanele algoritmilor utilizai pentru rezolvarea problemei (R).
(R) este un progam liniar n numere ntregi foarte simplu, avnd o singur restricie. n
literatura de specialitate este cunoscut sub numele de problema rucsacului datorit urmtoarei
interpretri:
a
i
este numrul pieselor de echipament de greutate l
i
i utilitate
i
care trebuie luate ntr-o
excursie ntr- un rucsac ce suport o greutate maxim L. ntrebare: ce piese de echipament trebuie
alese i n cte exemplare vor fi acestea introduse n rucsac astfel nct utilitatea ncrcturii s fie
maxim?
Firete, (R) poate fi rezolvat prin metodele specifice programrii n numere ntregi (plane
de seciune, Branch & Bound etc). Faptul c (R) are o singur restricie permite abordarea ei prin
programare dinamic. Mai precis, pentru fiecare k = 1,,m i fiecare ntreg =0,1,,L
considerm problema:
+ + +
+ + +
intregi , 0 ,..., ,
...
... max
) (
2 1
2 2 1 1
2 2 1 1
k
k k
k k
k
a a a
a l a l a l
a a a
R
al crei optim l notm cu
k
(). Este clar c R = R
m
() i caximul funciei obiectiv din R este
m
(L).
Observm c, pentru k fixat
k
este o funcie de o singur variabil ale crei valori
admisibile sunt 0,1,,L.
Funciile
1
,
2
, ,
m-1
,
m
pot fi determinate astfel:
} max{ ) (
1 1 1 1 1
= a l a =
(
1
1
l
= 0,1,,L (7.1)
pentru k > 1 avem formula de recuren:
k k k k k k
a a l + =
) ( max{ ) (
1
} ,..., 1 , 0
(
=
k
k
l
a (7.2)
pentru k = m este suficient s gsim numai valoarea funciei
m
n L:
m m m m m m
a a l L L + =
) ( max{ ) (
1
} ,..., 1 , 0
(
=
m
m
l
a
Relaia (7.2) arat c funciile
2
,,
m-1
,
m
rezult din nite procese de optimizare
unidimensionale.
S presupunem cunoscute funciile
1
,
2
, ,
m-1
i valoarea
m
(L) i s notm cu
valoarea variabilei a
) (
k
a
k
care pentru dat realizeaz maximul din formula de recuren (7.2).
Pentru k = 1 avem
(
1
1
) (
l
a
. Atunci, o soluie optim a problemei (R) se gsete astfel:
+ +
+ + =
=
=
=
m m k k k
k k k
m m
a l a l S
S L a a
m k
L a a
...
: unde
) (
: 1 , 2 ,..., 1 Pentru
) (
1 1
Observaii: 1) n termenii problemei rucsacului
k
() este valoarea maxim a unei ncrcri
a rucsacului ce nu depete n greutate plafonul i care este format numai din primele k tipuri de
echipament.
2) Prin programarea dinamic rezolvarea problemei de optimizare multidimensional (R)
este nlocuit cu o secven de optimizri unidimensionale bazate pe formula de recuren (7.2).
3) Ecuaia funcional (7.2), prin care funciile
1
,
2
, ,
m-1
,
m
se deduc una din alta
formalizeaz n cazul problemei (R) principiul central al programrii dinamice datorat lui R.
BELLMAN : O strategie (secvenial) optim are proprietatea c oricare ar fi starea iniial
i decizia iniial, deciziile rmase constituie o strategie optim n raport cu starea care
rezult din prima decizie.
Demonstraia formulei (7.2)
Fie
k
a o valoare ntreag ,
(
k
k
l
a
0 , dat variabilei a
k
. Fie ) ,..., , (
1 2 1 k
a a a o soluie
optim a problemei ) (
1 k k k
a l R
. Prin urmare:
1 1 1 1 1
... ) (
+ + =
k k k k k
a a a l
k k k k
a l a l a l + +
1 1 1 1
...
Deoarece + + +
k k k k
a l a l a l
1 1 1 1
... rezult c ) , ,..., (
1 1 k k
a a a
este o soluie admisibil a
problemei ) (
k
R care d funciei obiectiv valoarea:
k k k k k k k k k
a a l a a a + = + + +
) ( ...
1 1 1 1 1
n consecin:
k k k k k k
a a l +
) ( ) (
1
i cum
k
a a fost arbitrar aleas (ntre 0 i
(
k
l
L
) urmeaz c:
k k k k k k
a a l +
) ( max{ ) (
1
} ,..., 1 , 0
(
=
k
k
l
a
Pe de alt parte fie ( ,..., , ) a a a
k k 1 1
o soluie optim a problemei R
k
( ) .Prin urmare:
k k k k k
a a ( ) ... = + + +
1 1 1 1
a
l a l a l a
k k k k 1 1 1 1
+ + + ...
Din l a l a l a
k k k k 1 1 1 1
+ + ...
rezult c ( ,..., ) a a
k 1
1
este o soluie admisibil a problemei
R l a
k k k 1
( ) i deci:
1 1 1 1 1
a a l a
k k k k k
+ + ... ( )
S artm c n ultima relaie avem egalitate. Presupunnd prin absurd contrariul fie ( ,..., ) a a
k 1 1
o soluie optim a problemei R l a
k k k
1
( )
a
. n consecin vom avea:
1 1 1 1 1 1 1 1 1
a a l a a
k k k k k k k
+ + ... l a l a l a
k k k k 1 1 1 1
+ + + ...
Prin urmare ( ,..., , ) a a a
k k 1 1
este o soluie admisibil a problemei R
k
( ) i deoarece
1 1 1 1 1 1 1 1
a a a a a a
k k k k k k k k k
+ + + > + + + = ... ... ( )
tragem concluzia c ( ,..., , ) a a a
k k 1 1
nu este soluie optim a problemei R
k
( ) contrar ipotezei.
n definitiv:
1 1 1 1 1
a a l a
k k k k k
+ + = ... ( )
astfel c:
k k k k k k k k k k
a a a l a ( ) ... ( ) = + + + = +
1 1 1 1 1
a
+
max{ ( )
k k k k k
l a a
1
a
L
l
k
k
=
(
0 1 , ,..., }
Egalitatea (7.2) este demonstrat.
Exemplul 7.1 Vom aplica procedura descris problemei:
( )
max
, ,
R
a a
a a a
a a a
= + +
+ +
16 12 5
5 4 2 11
0
1 2
1 2 3
1 2 3
intregi
a
3
Iteraia 1 Determinm valorile funciei
1 1
1
16
5
( ) =
(
=
(
l
pentru = 0,1,...,11
Ele sunt nscrise n tabelul 7.1
0 1 2 3 4 5 6 7 8 9 10 11
1
() 0 0 0 0 0 16 16 16 16 16 32 32
a
1
( )
0 0 0 0 0 1 1 1 1 1 2 2
Tabelul 7.1
Iteraia 2 n continuare calculm valorile funciei
2 1 2 2 2 2
( ) max{ ( ) = + l a a a }=
l
2
2
0 1 =
(
, ,...,
= + max{ ( )
1 2
4 12 a a
2
a
2
0 1
4
=
(
, ,...,
} unde = 0,1,...,11
Astfel, pentru = 0,1,2,3
2
() =
1
() ; pentru = 4,5,6,7 vom avea:
2 1 2
4 12 ( ) max{ ( ) = + a a
2
a
2
0 1 = , }=max{ ( ) , ( ) }
1 1
4 12 +
iar pentru =8,9,10,11
2 1 2
4 12 ( ) max{ ( ) = + a a
2 2
0 1 2 a = , , }=max{ ( ), ( ) , ( ) }
1 1 1
4 12 8 24 + +
Rezultatele sunt afiate n tabelul 7.2
0 1 2 3 4 5 6 7 8 9 10 11
2
() 0 0 0 0 12 16 16 16 24 28 32 32
a
2
( )
0 0 0 0 1 0 0 0 2 1 0 0
Tabelul 7.2
Iteraia 3 n final vom evalua numai:
3 3 2 3
11 11 2 5 ( ) ( ) max{ ( ) L a
3
a = = + a =
3
0 1 5
11
2
= =
(
, ,..., }
max{ ( ), ( ) , ( ) , ( ) , ( ) , ( ) }
2 2 2 2 2 2
11 9 5 7 10 5 15 3 20 1 25 + + + + + =
max{ , , , , } 32 28 5 16 10 0 20 0 25 33 1
3
+ + + + = =
a
Determinarea soluiei optime ("de la sfrit ctre nceput")
Pasul 1 ; a a
3 3
11 1
= = ( )
Pasul 2 ; S l a L S a a
2 3 3 2 2 2
2 1 2 11 2 9 9 1 = = = = = = =
( )
33
x
Pasul 3 S l a l a l a S L S
1 2 2 3 3 2 2 2 1
4 1 2 6 11 6 5 = + = + + = = =
. = =
a a
1 1
5 1 ( )
Soluia optim a problemei date este: a a a
1 2 3
1 1 1
= = = = , , (max)
8. ntrebri i probleme
1.Este cunoscut faptul c problemele practice de optimizare de dimensiuni "mari" au o structur
"special". Ce nseamn aceast structur special n programarea liniar?
2.Ce caracteristici are programul principal (P
m
) rezultat din aplicarea metodei de descompunere
Dantzig - Wolfe? Ce metod se utilizeaz pentru rezolvarea lui?
3.Se consider un program liniar n form canonic de maximizare a crui mulime de restricii a
fost partiionat n dou blocuri:
( )
(max)
P
Ax b
Mx d
x
f c
0
n notaiile matriciale ale seciunii 3.
S presupunem c x i u sunt doi vectori nenegativi de dimensiuni convenabile astfel nct:
x este soluia optim a programului
P u
Ax b
x
f c uM
( )
(max) ' ( )
0
x
Mx d
u d Mx ( ) = 0
S se arate c x este soluia optim a programului (P).
.4. [3] Utilizai algoritmul de descompunere Dantzig - Wolfe la rezolvarea urmtoarelor programe
liniare custructur bloc - diagonal i restricii de cuplare:
a
x x
x x
x x
x
x
x x x x
x j
f x x x x
j
)
,...,
(max)
2 3 6
5 5
3 4 12
4
3
4 5 2 7
0 1 4
8 5 6
1 2
1 2
3 4
3
4
1 2 3 4
1 2 3
+
+
+
+ + +
=
= + + +
4
0
0
0
a
3 4
b
x x
x x
x x
x
x
x x x x
x j
f x x x x
j
)
,...,
(max)
1 2
1 2
3 4
3
4
1 2 3 4
1 2 3 4
3 3
2 2
15
10
10
2 2 4
0 1 4
2
+
+
+
+ + +
=
= + + +
n rezolvarea subproblemelor de la nivelul 1 se poate folosi metoda grafic.
5. Pentru instalaia de ap a unui imobil n construcie sunt necesare 80 de evi de 2m, 40 de evi de
2,50m i 30 de evi cu lungimea de 3,50m. Aceste buci se taie din evi cu lungimea de 9m.
a) Alctuii lista reetelor maximale de croire;
b) Scriei un program liniar n numere ntregi pentru minimizarea numrului de evi de 9m
ce vor fi tiate;
c) Rezolvai programul relaxat prin metoda generrii de coloane;
d) Plecnd de la soluia optim fracionar construii o soluie "bun" a problemei date;ar
putea fi optim soluia construit de dvs.?
6.Problema rucsacului. Formulare i model matematic.Descriei algoritmul de ezolvare al problemei
rucsacului prin programare dinamic.
7. Rezolvai problemele de tip rucsac:
a
a a
a a a
)
(max) = + +
+ +
5 12 16
2 4 5 11
1 2
1 2 3
b
a a a a
a a a a
)
(max) = + + +
+ + +
1 2 3
1 2 3 4
3 5 9
2 3 4 7 10