Sunteți pe pagina 1din 8

3.

Programare Convexa

3.1 Mulțimi si funcții convexe


Exemple: mulțimea formată dintr-un singur punct, o dreaptă, un segment de dreaptă, un
hiperplan (adică {x ∈ ℝ𝑛 ∑𝑛𝑖=1 𝑎𝑖 𝑥𝑖 = 𝑏}), un semiplan (adică { x ∈ ℝ𝑛 ∑𝑛𝑖=1 𝑎𝑖 𝑥𝑖 ≥ 𝑏}), o
bila închisă de centru a si raza r,
𝐵𝑟 (𝑎) = {x ∈ ℝ𝑛 ‖x − a‖2 ≤ r} = x ∈ ℝ𝑛 √∑𝑛𝑖=1(𝑥𝑖 − 𝑎𝑖 )2 ≤ 𝑟}, un con (C= {𝑥 ∈
ℝ𝑛 A(x − 𝑥 ∗ ) ≥ 0 , 𝐴 ∈ Mm,n (ℝ)}, 𝑥 ∗ 𝑣𝑎𝑟𝑓𝑢𝑙 𝑐𝑜𝑛𝑢𝑙𝑢𝑖), etc.

3.2 Extreme condiționate


Problema minimizării unei funcții convexe f pe o mulțime convexa K s.n. problema de
programare convexa si se poate scrie sub forma

Unde f si 𝑔𝑖 sunt funcții convexe pe ℝ𝑛 .

4. Programare Liniara

4.1 Exemple de probleme de programare liniara


Utilizarea optimă a resurselor
Resursele pe care le are la dispoziție (materie primă, forță de muncă, mașini unelte,
resurse financiare etc.) sunt în cantități limitate.
Cu aceasta noțiune se pot determina:
- Cantitatea din resursa I folosita pentru producerea cantității 𝑥j care este a𝑖𝑗 𝑥𝑗
- Cantitatea totala din resursa i folosita pentru producția totala formata din n produse:
∑nj=1 a𝑖𝑗 𝑥𝑗 ≤ b𝑖 , i∈{1, 2,..., m}
Adoptarea unei variante de plan (luarea unei decizii) se face pe baza unui criteriu
economic, ca de ex venitul sau profitul sa fie maxim.
Dacă se notează cu cj prețul de vânzare al unei unități din produsul j și cu dj
costul unitar pentru același produs (se presupune, pentru simplificarea problemei,
că atât prețul de vânzare cât și costul nu depind de cantitatea produsă, ceea ce nu
prea este în concordanță cu realitatea), atunci venitul total va fi: ∑nj=1 c𝑗 𝑥𝑗 , iar
cheltuielile de productie ∑nj=1 d𝑗 𝑥𝑗 , deci profitul obținut va fi:
n n n

∑ c𝑗 𝑥𝑗 - ∑ d𝑗 𝑥𝑗 = ∑(c𝑗 -d𝑗 ) x𝑗
j=1 j=1 j=1

Problema de transport
Se considera m centre de aprovizionare (depozite) si n centre de consum (puncte de
lucru, magazine, etc). Se pune problema sa se determine un plan de transport pentru un
produs omogen care se afla in cantitatea 𝑎𝑖 la depozitul i (1≤ i ≤ m) si este cerut in cantitatea
𝑏𝑗 la centrul j (1≤ j ≤ m). Se notează cu 𝑥𝑖𝑗 cantitatea necunoscută ce va fi transportata de la
depozitul i la centrul de consum j si cu 𝑐𝑖𝑗 costul transportului unei unități din produsul
considerat de la depozitul i la centrul j (pentru simplificare se presupune că acest cost unitar
nu depinde de cantitatea transportată pe ruta respective).
- Cantitatea ceruta de la depozitul i la toate cele n centre de consum
𝑎𝑖 = 𝑥𝑖1 + 𝑥𝑖2 +. . . + 𝑥𝑖𝑛 = 𝑐𝑎𝑛𝑡𝑖𝑡𝑎𝑡𝑒𝑎 𝑎𝑓𝑙𝑎𝑡𝑎 𝑙𝑎 𝑑𝑒𝑝𝑜𝑧𝑖𝑡𝑢𝑙 𝑖,
- Cantitatea transportata de la toate cele m depozite la centru de consum j
𝑏𝑗 = 𝑥𝑗1 + 𝑥𝑗2 +. . . + 𝑥𝑗𝑚 = 𝑛𝑒𝑐𝑒𝑠𝑎𝑟𝑢𝑙 𝑙𝑎 𝑐𝑒𝑛𝑡𝑟𝑢𝑙 𝑑𝑒 𝑐𝑜𝑛𝑠𝑢𝑚 𝑗
- Costul transportului de la depozitul i la centrul de consum j este 𝑐𝑖𝑗 𝑥𝑖𝑗
Costul total ∑𝑚 𝑛
𝑖=1 ∑𝑗=1
Pentru efectuarea transportului:
∑𝑚 𝑛
𝑖=1 𝑎𝑖 = ∑𝑗=1 𝑏𝑗 , egalitate numita si condiția de balansare sau de echilibru.
Se obține astfel un program liniar numit si program de transport:
m n

∑ ∑ 𝑐𝑖𝑗 𝑥𝑖𝑗
i=1 j=1
∑nj=1 𝑥𝑖𝑗 = 𝑎𝑖 , 1 ≤ i ≤ m

∑ni=1 𝑥𝑖𝑗 = bj , 1 ≤ j ≤ n

𝑥𝑖𝑗 ≥ 0, 1 ≤ i ≤ m, 1 ≤ j ≤ n

Alocarea optima a fondurilor financiare


Având la dispoziție o suma totala S care poate fi investita in diverse activități j, 1 ≤ j ≤
n, fiecare producător are un anumit profit unitar 𝑎j , 1 ≤ j ≤ n, se pune problema
determinării sumei 𝑥j , 1 ≤ j ≤ n, investita pentru activitatea j, a.i. sa se obțină un profit
maxim:
max∑nj=1 a𝑗 𝑥𝑗
in condițiile:
n

∑ 𝑥𝑗 = S
j=1

𝑥𝑗 ≥ 0, 1 ≤ j ≤ n
Gestionarea optima a unui depozit
Scopul maximizării profitului pe o anumita durata de timp.
Fie:
− xi stocul din depozit la începutul perioadei i,
− di cantitatea achiziționată în perioada i,
− bi cantitatea vândută în perioada i și
− pi prețul pe perioada i.
Daca sunt n intervale de timp avem:
max ∑ni=1 pi bi - h 𝑥i
𝑥i+1 = 𝑥i + di -bi , i = ̅̅̅̅̅̅̅̅̅̅
1, 𝑛 − 1
𝑥𝑛 + 𝑑𝑛 − 𝑏𝑛 = 0
{
𝑥i + 𝑑i ≤ 𝑆
𝑥i = 0, 𝑥i , 𝑑i , 𝑏i ≥ 0

Problema dietei
Sa se determine cea mai economica dieta care satisface minimul nutrițional cerut.
Modelarea problemei
Notam:
-xi numărul de unități din alimentului i conținut in dieta
Minimul: min {𝑐1 𝑥1 + 𝑐2 𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 }

𝑎11 𝑥1 + 𝑎12 𝑥1 + ⋯ + 𝑎1𝑛 𝑥𝑛 ≥ 𝑏1


𝑎21 𝑥1 + 𝑎22 𝑥1 + ⋯ + 𝑎2𝑛 𝑥𝑛 ≥ 𝑏2
Restricții: ⋮
𝑎𝑚1 𝑥1 + 𝑎𝑚2 𝑥1 + ⋯ + 𝑎𝑚𝑛 𝑥𝑛 ≥ 𝑏𝑚
{ 𝑥𝑖 ≥ 0, 𝑖 = ̅̅̅̅̅
1, 𝑛

4.3 Algoritmul simplex


Acest algoritm se aplica problemelor de programare liniara sub forma standard.
S.n. soluție nedegenerata o soluție de baza care are exact m componente nenule.
S.n. soluție degenerata o soluție care are si componente nule.
S.n. soluție admisibila sau program o soluție a sistemului de ecuații si inecuații ce verifica si
condiția de ne negativitate.
Notăm R = {x∈𝑅 𝑛 x program}, z* = min{c'xx∈𝑅 𝑛 }
Convenim să punem z* = +∞ dacă R = φ.
Dacă z* = −−∞, spunem că problema are optim infinit.
Dacă z* este finit, atunci x*∈ R cu proprietatea că z* = c' x* se numește soluție optima sau
program optim.

4.4 Fundamentele algoritmului simplex


Algoritmul simplex dă o metodă de explorare sistematică și economică a programelor de
baza, mai precis de trecere de la un program la altul care da funcției obiectiv o valoare mai
mare sau mai mica. De asemenea, algoritmul furniză criterii pentru cazurile în care problema
de programare liniară nu are programe sau are optim infinit.

4.5 Enunțul algoritmului simplex


Pas 0. Se determina o baza B in matricea A, se calculează ,

Pas 1. a) Criteriul de intrare in baza


1.

2.
b) Criteriul de ieșire din baza
1.

2.
Pas 2. Se înlocuiește in baza B vectorul 𝑎𝑙 cu vectorul 𝑎𝑘 , obținând-se baza
apoi se trece la pasul 1,
înlocuind baza B cu baza

EXEMPLE:
Rezolvare:
4.11 Metoda celor doua faze
Metoda celor două faze permite obținerea unui program de bază de plecare în
rezolvarea problemei de programare inițială sub forma standard, adică (Zidăroiu, 1983):
min 𝑐′𝑥
{ 𝐴𝑥 = 𝑏
𝑥≥0
Se poate presupune că bi ≥ 0, 1≤ i ≤ m ; dacă nu, se înmulțește linia respectivă cu −1. Se
adăugă la fiecare ecuație câte o variabilă artificială 𝑥𝑖𝑎 și se obține:
𝐴𝑥 + 𝐼𝑥 𝑎 = 𝑏
{ 𝑥≥0
𝑥𝑎 ≥ 0
În faza I pentru a obține un program de bază al sistemului se rezolvă problema de
programare liniară
min ∑ 𝑥𝑖𝑎 = 𝑊
𝐴𝑥 + 𝐼𝑥 𝑎 = 𝑏
𝑥𝑖 ≥ 0, 1 ≤ i ≤ n
𝑎
{𝑥𝑗 ≥ 0, 1 ≤ j ≤ m
Faza II
min 𝑐′𝑥
{ 𝐴𝑥 = 𝑏
𝑥≥0

4.12 Dualitatea in programarea liniara


Oricărei probleme de programare liniară (numită problemă primară) i se asociază o
problemă de programare liniară duală pornind de la aceleași costuri și coeficienți ai
restricțiilor, dar în timp ce o problemă este de minim, cealaltă este de maxim. Vom
demonstra că dacă valorile optime ale funcțiilor obiectiv sunt finite, atunci ele sunt egale.
Variabilele problemei duale pot fi interpretate ca preturi asociate cu restricțiile problemei
primare și această asociere permite o interpretare economică a problemei duale.

4.13 Teorema fundamentala a dualității

4.14 Algoritmul simplex dual


Algoritmul simplex primal explorează bazele primal admisibile ale problemei (4.45)
până la obținerea unei baze primal admisibile care să fie și dual admisibilă
, sau până la punerea în evidentă a faptului că problema primală are
optim infinit.
In algoritmul simplex primal se obține o succesiune de soluții de baza ( 𝐵 −1 𝑏 ≥ 0), iar in
algoritmul simplex dual se obtine o succesiune de solutii de baza care nu sunt programe
(𝐵 −1 𝑏 𝑛𝑢 𝑎𝑟𝑒 𝑡𝑜𝑎𝑡𝑒 𝑐𝑜𝑚𝑝𝑜𝑛𝑒𝑛𝑡𝑒𝑙𝑒 𝑛𝑒𝑔𝑎𝑡𝑖𝑣𝑒)

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