Sunteți pe pagina 1din 30

C A P I T O L U L III

PROBLEME DE OPTIMIZARE DE DIMENSIUNI MARI




1. Problema dimensiunii n rezolvarea efectiv a problemelor de optimizare practice

Principala cauz generatoare de dificulti n rezolvarea problemelor de optimizare reale este
dimensiunea: o asemenea problem este pur i simplu "prea mare". n programarea matematic,
mrimea unei probleme este o chestiune relativ, depinznd de muli parametri cum ar fi:
numrul de variabile i numrul de restricii;
complexitatea expresiilor funciei obiectiv i a restriciilor;
performanele echipamentului de calcul: hardware i software.

Utilizarea modelelor matematice n studiul unor situaii reale - n special din domeniul economic - a
condus la programe matematice care suprasolicit i cele mai puternice calculatoare.Din fericire,
marea majoritate a problemelor de optimizare "mari" au o "structur special" care, n programarea
liniar de exemplu, nseamn:

densitate mic a constantelor numerice nenule;
gruparea elementelor nenule n blocuri aezate "pe diagonal";
numr foarte mare de variabile i relativ puine restricii sau invers, multe restricii i
puine variabile.

Trebuie spus c dac un program liniar mare nu are o structur special, sarcina colectrii datelor
este practic aproape imposibil de realizat; astfel pentru un program cu 10
4
restricii i 10
6
variabile,
matricea coeficienilor ar avea 10
10
intrri i n cazul unei densiti de 100% ar necesita 10
10
date
numerice de adunat, sortat i prelucrat!!
Pentru programele neliniare, complexitatea i structura special se caracterizeaz mult mai
greu.

2. Clasificarea metodelor de rezolvare a programelor liniare mari

n principiu metodele de rezolvare a programelor mari se mpart n dou categorii:

metode directe: acestea specializeaz o procedur general adaptnd-o la specificul unei
anumite clase de probleme de optimizare.
Exemplul tipic l constituie algoritmul simplex; este tiut c principala problem de calcul
care apare n aplicarea lui o constituie modul de manipulare a inversei bazei curente. n cazul
unei "structuri speciale" este posibil ca dimensiunea acestei matrici s se reduc semnificativ.
S considerm cazul unui program liniar cu variabile superior mrginite:

a x b i m
x u j n
f c x
ij j i
j
n
j j
j j
j
n
= =
=
=

=
=
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

= 1 s este o soluie optim a programului (PM) atunci este o soluie


optim a programului original (P).
x v
k
k
k
s

=
=
1
Programul (PM) se numete program coordonator (master program) i are urmtoarele
proprieti:

are mai puine restricii dect (P): doar 1+m
2
fa de m
1
+ m
2
;
are n general un numr foarte mare de variabile, cte una pentru fiecare vrf al mulimii A
i, dup cum se tie numrul acestor vrfuri estte de obicei "impresionant";
rezolvarea programului (PM) necesit - cel puin la prima vedere - cunoaterea vrfurilor
v
1
,v
2
,...,v
s
fr de care nu se pot evalua colanele Q
k
i scalarii . Or, cunoaterea
aprioric a vrfurilor v

1 2
, ,...,
s
1
,v
2
,...,v
s
este o sarcin extrem de grea i practic imposibil de fcut n mai
toate cazurile!

Din fericire, rezolvarea programului (PM) nu necesit cunoaterea aprioric a vrfurilor
v
1
,v
2
,...,v
s
. Dup cum vom vedea n seciunea 5, pe parcursul aplicrii algoritmului simplex acestui
program, vrfurile mulimii A absolut necesare n optimizare vor fi generate (calculate) "la cerere"
prin rezolvarea unor programe liniare de forma:

P u
Ax b
x
f c uM
( )
(max)
~
( )
=

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

dar nu rezolv problema repartizrii resurselor comune deoarece, dac x


1
i x
2
sunt soluiile
optime ale programelor din (4.6), este posibil ca:
M x M x
1 1 2 2
+ d

n continuare vom arta - n principiu - cum poate fi rezolvat programul (P) din (4.5) n
situaia n care nici autoritatea central i nici agenii nu dein informaii complete asupra
programului!
Vom presupune c:

ntre autoritatea central i ageni exist o cooperare n sensul unui schimb de
informaii privind "inteniile"de aciune;
autoritatea central i asum rolul de arbitru n urmtorul sens: ea "anun" un sistem
de preuri pe resursele comune iar agenii iau aceste peuri ca date i i diminueaz veniturile cu
valoarea resurselor comune solicitate.Fie u vectorul (linie) al acestor preuri.Atunci:
agentul 1, pentru susinerea unui program posibil x
1
(posibil A
1
x
1
b
1
, x
1
0),va
trebui s "plteasc" valoarea uM
1
x
1
astfel c venitul su "net" va fi:

~
( ) f c x uM x c uM x
1
1 1 1 1 1 1 1
= =

analog, venitul agentului 2, rezultat din programul posibil x
2
(A
2
x
2
b
2
, x
2
0), va fi:
~
( ) f c x uM x c uM x
2
2 2 2 2 2 2 2
= =

Maximizarea acestor venituri nete nseamn rezolvarea programelor modificate:

P u
A x b
x
f c uM x
1
1 1 1
1
1
1 1
0 ( )
(max)
~
( )

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

a programului R() este o reet, fie ea a


k
,
din lista a tuturor reetelor, cu proprietatea:
n
a a a ,..., ,
2 1
0 1 > =
k
k
a c .

Introducem n baza curent coloana a
k
urmnd instruciunile algoritmului simplex revzuit. Obinem
o nou baz admisibil B, o nou soluie x a problemei (PL) n general mai bun dect soluia
veche x i un nou tabel simplex redus n care aopare un nou vector de multiplicatori
simplex.Pentru a testa optimalitatea noii soliuii rezolvm programul R() etc.
Procesul iterativ se ncheie ntr-un numr finit de pai cu gsirea soluiei optime a problemei (PL).

valoarea funciei obiectiv n soluia curent
f
f


b


B
valorile variabilelor bazice curente
baza curent
inversa bazei curente
multiplicatorii simplex asociai bazei B


B
-1











Tabelul 6.4



m
6.3 Rezumatul procedurii Generare de Coloane pentru rezolvarea relaxatei problemei
de croire

Start Se pleac cu baza format din reetele unicat(6.1) i cu tabelul simplex redus 6.3. Fie
B baza curent i = c
B
B
-1
vectorul multiplicatorilor simplex corespunztori.
Coninutul unei iteraii:

Pasul 1 Se rezolv problema auxiliar:

R
a
l a L
a i
i i
i
m
i i
i
m
i
( )
, . . . ,

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

soluia optim a problemei R() . Se introduce n baza curent B coloana 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

= (1,1,0) care este


o reet maximal. Renotm 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



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

S-ar putea să vă placă și