Sunteți pe pagina 1din 175

Ex.

de regula privind rata de reducere a “temperaturii” in Simulated annealing:


O grindă trebuie sudată astfel încât să poată suporta la capătul liber o anumită forţă
de încărcare, dar costul asociat să fie minim.

În aceste condiţii, se cere determinarea valorilor a patru parametri de proiectare:

h - grosimea sudurii
b - grosimea grindei
l - lungimea sudurii
t - înălţimea grindei
care să satisfacă simultan două obiective:

cost minim, dat prin funcţia f1(x):


f1(x)=1.10471h2l + 0.04811tb(14.0+l)
îndoire minimă a grindei la capătul liber, dată prin funcţia f2(x);
f2(x)=2.1952/(t3b)
şi să respecte restricţiile:
0.125 ≤ h, b ≤ 5.0
0.1 ≤ l, t ≤ 10.0
h≤b

1
PROBLEME UZUALE DE OPTIMIZARE - categorii, ierahizari, exemple

Probleme de drum minim(The shortest path problems)


Problema rutelor optime în grafuri / problema dirijarii vehiculelor
(Vehicle routing problem - VRP)
Problema celui mai lung ciclu elementar
Drumuri minime de sursă unică
Drumuri minime între toate perechile de vârfuri
Problema arborilor de acoperire minima (Minimum spanning tree problem-MST)
Problema ciclului eulerian (Eulerian cycle / Chinese postman)

Problema acoperirii mulţimii (The set cover problem)


Problema acoperirii ponderate a mulţimii (The weighted set cover problem)
Problema acoperirii exacte a mulţimii (The exact set cover problem)
Problema Sudoku
Problema celor n regine
Set packing
Problema acoperirii cu vârfuri(vertex cover problem)

Problema clicii (The clique problem)


Problema mulţimii independente

Probleme de flux maxim în reţele de transport (Maximum flow problems)


Problema cuplajului maxim in grafuri bipartite (Maximum bipartite matching)
Problema fluxului maxim cu cost minim (The minimum cost flow problem)
Probleme de transport (Transportation problem)

1
Problema fluxului maxim cu capacităţi inferioare şi superioare
Problema fluxului maxim cu constrângeri de timp

Probleme de transport (Transportation problem)


Probleme de transbordare (Transshipment problems)
Probleme de alocare (The assignment problems)
Problema Sudoku
Problema rucsacului (Knapsack problem)
Problema decupării optimale (Cutting stock problem)
Problema colorării grafurilor (Graph coloring problem)
Problema colorării fracţionale a grafurilor (Fractional coloring problem)
Probleme de planificare (Scheduling problems)
Problema orarelor şcolare (Timetabling problem)
Probleme de repartiţie a investiţiilor

Probleme de stablire locaţii (Location problems)

Probleme de timp minim


Executarea lucrărilor cu termen limita

Probleme de satisfacere a restricţiilor modelate ca probleme de optimizare


Problema damelor, Problema reginelor şi a regilor
Problema Sudoku, Colorarea grafurilor
Probleme de programare operativă (Scheduling problems)

Optimization art

2
PROBLEME DE DRUM MINIM

Sunt probleme de optimizare combinatorială care caută drumuri de lungime minimă în


grafuri (orientate sau neorientate) cu costuri.
G=(V,E) la care se asociază o funcţie cost de forma c:E→R.
𝑘𝑘
Costul unui drum p = (v0,v1,...,vk) este 𝑐𝑐(𝑝𝑝) = �𝑖𝑖=1 𝑐𝑐(𝑣𝑣𝑖𝑖−1 , 𝑣𝑣𝑖𝑖 )
Costul optimde la nodul u la nodul v este
min{𝑐𝑐(𝑝𝑝)| 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒}, 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑
δ(u,v)=�
∞, 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎

Un drum minim de la u la v este orice drum p’ a.î. c(p’)= δ(u,v).

Funcții distanță folosite în problemele de drumuri in grafuri:

3
Obs. Pentru determinarea celui mai ieftin traseu intre doua puncte pentru un avion
comercial inegalitatea triunghiului nu se respecta, de aceea este dificil sa gasim solutia
optima.

Problema rutelor optime în grafuri(problema dirijarii vehiculelor,VRP –Vehicle routing


problem). Propusă de DantzigşiRamserîn 1959.

Găseşte rutele optime ale unor vehicule intr-un graf.

4
The VRP web: http://www.bernabe.dorronsoro.es/vrp/
Aplicatii: design retele metrou, instalare retele de apa subterane, curierat, organizare
excursii in care ruta la dus difera de ruta de intoarcere, stabilirea unei agende optime de
zbor in vederea asigurarii unor conexiuni optime.

5
Particularizări:
• Problema comis-voiajorului(Traveling salesman problem– TSP)
• Problema ordonării secvenţiale(Sequential Ordering Problem - SOP)
• Probleme de programare operativă (scheduling problems)
• Problema rutelor optime în grafuri cu restricţii de capacitate (Capacitated VRP
– CVRP)
• VRP cu intervale de livrare (VRP with Time Windows - VRPTW)
• CVRP cu intervale de livrare (CVRPTW)
• VRP curidicare si livrare (VRP with Pickup and Delivery – VRPPD)
• VRP cu depozite multiple(Multiple Depot VRP – MDVRP)
• VRP periodic (Periodic VRP – PVRP)

• Problema comis-voiajorului- VRP cu un vehicul (k=1). Hamilton, Kirkman, 1832.


Problema a fost prima dată formulată ca problemă matematică în 1930 de către
Karl Menger.
http://algorist.com/problems/Traveling_Salesman_Problem.html

TSPLIB:http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/

6
Variante:
- TSP simetrică (STSP): c(u,v)= c(v,u), oricare u și v
- TSP asimetrică (ATSP): c(u,v) poate diferi de c(v,u).
- Problema comis-voiajorului strâmtorat: determinarea unui ciclu
hamiltonian a.î. lungimea celei mai mari muchii din ciclu să fie minimizată.
Generalizări ale TSP:
- Se permite vizitarea varfurilor de mai multe ori
- Traveling politician problem(TPP): în locul orașelor apar regiuni formate din
mai multe orașe și trebuie vizitat câte un oraș din fiecare regiune
- Multiple traveling salesmans problem (MTSP –problema comis voiajorilor)
= VRP

Aplicaţii ale TSP:planificare (un brat de robot care trebuie sa


sudezetoateconexiunilepe o placa de baza), logistică, producţia de microchip-
uri, drumuriminimeînreţele, servireaclienţilor, aranjare a fragmentelor de
ADN, astronomie, generarea de trasee de catre GPS, publicitate, agricultura,
afaceri, inginerie, medicina, telecomunicatii, chiararta (TSP Art-
http://www2.oberlin.edu/math/faculty/bosch/tspart-page.html,
http://www.cgl.uwaterloo.ca/csk/projects/tsp/)

7
TSP este NP-completă. Durata de executie în cel mai defavorabil caz depinde
exponenţial de numărul de oraşe, deci chiar şi instanţe încărcate cu numai
câteva zeci de oraşe nu pot fi rezolvate exact. Pentru rezolvare se prefera
folosirea euristicilor (vezi Laborator 2).
Implementari: aici

• Problema ordonării secvenţiale: problema comis-voiajorului asimetrica fără


cerinţa de întoarcere la vârful iniţial + restricţii de precedenţă între noduri (de
forma: un nod i trebuie vizitat înaintea nodului j). Fiind dat un graf ponderat cu
restricții de precedență, se cere un drum hamiltonian de la nodul 1 la nodul n, de
lungime minimă, care respectă restricțiile de precedență. Caz particular:
problemele de programare operativa.
http://algorist.com/problems/Job_Scheduling.html

• Problema rutelor optime în grafuri cu restricţii de capacitate


(CVRP)http://www.bernabe.dorronsoro.es/vrp/
Sunt disponibile vehicule identice pentru transportul la noduri, de capacitate
dată. Se cere găsirea rutelor vehiculelor de lungime totală minimă care satisfac
cererile nodurilor fără a viola restricția de capacitate a vehiculelor. Numărul de
vehicule nu se specifică.

8
• VRP cu intervale de livrare (VRPTW): pentru fiecare client trebuie respectat un
interval de livrare dat; http://www.bernabe.dorronsoro.es/vrp/

• CVRP cu intervale de livrare (CVRPTW)


• VRP curidicare si livrare (VRP with Pickup and Delivery –
VRPPD);vehiculeletrebuiesaaibacapacitatea de a livra, darsi de a ridica de la
clientibunuri. http://www.bernabe.dorronsoro.es/vrp/ )
• VRP cu depozite multiple(MDVRP, http://www.bernabe.dorronsoro.es/vrp/ )
• VRP periodic (PVRP); planificarea este extinsa la M
zile;http://www.bernabe.dorronsoro.es/vrp/ )
• Problema ambalării optimale(bin packing problem – BPP): 1D, 2D, 3D
http://algorist.com/problems/Bin_Packing.html

9
10
Există instanţe pentru care nu se cunosc soluţiile optime.

Problema celui mai lung ciclu elementar

Găsește cel mai lung ciclu dintr-un graf, format din noduri distincte.
Aplicatii

Drumuri minime de sursă unică

Fie un graf oarecare G=(V,E). Pentru un vârf sursă s∈ V dat, se cere drumul minim de la
s la fiecare alt vârf v∈ V.

• Dacă G este graf cu costuri nenegative, problema se poate rezolva cu algoritmul


Dijkstra(de tip greedy)
• Dacă G este graf orientat cu costuri oarecare, problema se poate rezolva cu
algoritmul Bellman-Ford. Acesta decide dacă există un ciclu de cost negativ
accesibil din sursă:
o în caz afirmativ, problema nu are soluţie;
o dacă nu există un ciclu de cost negativ accesibil din sursă, algoritmul produce
drumurile minime şi costurile corespunzătoare.

11
Variante de probleme reductibile la aceasta:
• Problema drumurilor minime de destinaţie unică
• Problema drumurilor minime de sursă şi destinaţie unică
• Problema drumurilor minime pentru surse şi destinaţii multiple: pentru fiecare
pereche de vârfuri (u,v) să se determine un drum minim de la u la v.

Problema drumurilor minime de sursă unică în grafuri orientate aciclice


Arcele sunt lucrări/sarcini de efectuat, costurile exprimă timpii necesari efectuării
lucrărilor. Se dă o listă de precedenţe. Un drum în acest graf orientat aciclic reprezintă o
secvenţă de lucrări, cu ordinea asociată. Un drum critic este un cel mai lung drum în acest
graf orientat aciclic reprezentând timpul maxim necesar efectuării unei secveţe de lucrări
într-o anumită ordine.

Drumuri minime între toate perechile de vârfuri

Se dă un graf orientat cu costuri. Să se creeze tabelul distanţelor minime dintre toate


perechile de noduri.
Dacă toate costurile sunt nenegative, se pot aplica:
o Iterativ algoritmul Dijkstra, însă timpul de rulare este O(n3) pentru un graf dens;
o Iterativ algoritmul Bellman-Ford, însă timpul de rulare este O(n4) pentru un graf
dens;
o algoritmul Floyd- Warshall (Roy-Floyd) cu timpul de rulare O(n3) - programare
dinamică;
o algoritmul Johnson pentru grafuri rare. Acesta foloseşte algoritmii Dijkstra şi
Bellman-Ford ca subrutine.

12
Problema arborilor de acoperire minima(minimum spanning tree - MST)
Arborele de acoperire minima (arborele partial de cost minim) intr-un grafesteun
arbore parţial in graf,avand costul total al muchiilor minim.
Fiind dat un graf neorientat conex cu costuri, G=(V,E), să se găsească acea submulţime
aciclică de muchii, T ⊆ E, care formeaza un arbore (deci conectează toate vârfurile) şi are
cost total minim.

Aplicatii:conectarea oraşelor cu cost minim, determinarea schemei de cablare de


lungime minima (pentru companiile de telefonie) care sa conecteze toate locatiile dintr-o
arie.
Problema se afla labaza tuturor problemelor de design retele.

Avantajele arborilor de acoperire minima:


- pastreaza graful intr-o singura componenta conexa
- pot fi determinati rapid si usor si creeaza un subgraf al grafului initial care
reflecta informatia principala despre acesta
- da o modalitate de a identifica clustere in seturi de puncte. Stergerea
muchiilor lungi dintr-un arbore de acoperire minima pastreaza conectate
componentele care definesc clusterele in reteaua de date.

13
- Se pot folosi ca adjuvanti pentru rezolvarea instantelor dificile ale altor
tipuri de probleme (ex. problema comis-voiajorului)
- Algoritmii de determinare arata, dpdv educativ, ca algoritmii greedy pot
conduce si la solutii optime.

Algoritmi clasici de rezolvare:


- algoritmul lui Kruskal, 1956
- algoritmul lui Prim, 1957 (similar alg. Dijkstra pentru drumuri de lungime minimă)
Ambii sunt cazuri particulare ale algoritmului generic de determinare a unui arbore
de acoperire minima (algoritmul lui Boruvka, 1926)şi ambii folosesc tehnica Greedy, deşi o
implementează diferit.
Pentru detalii, vezi Skiena si Cormen. Implementari: aici.

14
Problema ciclului eulerian (problema postasului)
Se cauta cel mai scurt tur care vizitează fiecare muchie a unui graf cel puțin o dată.

Aplicatii:
- avand harta unui oras, care sunt rutele cele mai eficiente pentru postas, pentru
masina de salubritate sau plugurile de deszapezire? Se cauta durata minima de
deplasare / distanta totala parcursa.
- in activitatea de validare umana din sistemele de meniuri telefonice, testerul cauta
cel mai eficient mod de a vizita fiecare link din sistem cel putin o data (fiecare
optiune „Apasa x pentru informatii” este o muchie).
Se cunosc rezultate matematice care usureaza mult problema existentei unui ciclu
eulerian intr-un graf:
- un graf neorientat contine un ciclu eulerian daca si numai daca 1) este conex si 2)
fiecare varf are grad par
- un graf orientat contine un ciclu eulerian daca si numai daca 1) este tare-conex si 2)
fiecare varf are gradul intern egal cu gradul extern

Algoritm de rezolvare: ciclul eulerian de construieste adaugand iterativ muchii


adecvate la ciclul curent pentru a-l face eulerian. Se gaseste drumul cel mai scurt intre
fiecare pereche de varfuri cu grad impar din graf. Facand asta, cele doua varfuri capata grad
par. Pentru implementari, vezi aici.

15
PROBLEMA ACOPERIRII MULŢIMII

Aplicaţii:
- selecţie resurse. Ex1: la o conferinta se vorbesc mai multe limbi straine si sunt
disponibili n traducatori, fiecare cunoscand una sau mai multe limbi straine. Care
este grupul minim de traducatori care ar putea fi selectat pentru conferinta a.i. sa fie
acoprite toate limbile vorbite? Ex2. Intr-o companie sunt disponibile n persoane
pentru care se cunosc abilitatile detinute. Care este echipa de dimenisune minima,
suficienta pentru un proiect pentru care se cunosc abilitatile necesare?

16
- stabilirea locaţiilor facilităţilor de urgenţă. Ex. fie m locaţii potenţiale cu risc crescut
şi n locaţii potenţiale pentru facilităţi de urgenţă, având asociate costurile de
construcţie. Scopul este selectarea unui număr suficient de locaţii pentru
construirea facilităţilor de urgenţă care să acopere toate riscurile şi al căror cost
total să fie minim

Problema acoperirii ponderate a mulţimii

Fiecare submulțime are asociată o pondere și se caută o acoperire a mulțimii cu


pondere minimă.

Problema acoperirii exacte a mulţimii

Se cere ca fiecare element să fie acoperit o singură dată.


Aplicații:
- planificarea optimală a echipajelor de zbor (pilot – copilot - navigator) pe fiecare navă
- problema Sudoku
- problema celor n regine
http://www.nada.kth.se/~viggo/wwwcompendium/node147.html

Set packing
Se cere numarul maxim de submultimi disjuncte.

17
Analiza: aici
http://www.nada.kth.se/~viggo/wwwcompendium/node144.html

Problema acoperirii cu vârfuri (vertex cover)

Se da un graf neorientat. O acoperire a sa cu varfuri este o submultime a multimii


varfurilor sale a.i. daca (u,v) este muchie atunci fie u, fie v, fie ambele face/fac parte din
acea submultime (adica fiecare varf isi acopera muchiile incidente).O acoperire cu varfuri a
grafului este deci o multime de varfuri care acopera toate muchiile.Dimensiunea unei
acoperiri cu varfuri este numarul de varfuri pe care le contine.
Se cere o acoperire cu varfuri de dimensiune minima a grafului.

Aplicatii:
- numarul minim de supervizori pentru un job
- numarul minim de persoane dintr-o retea de socializare care, daca primesc un anunt,
il fac cunoscut in toata reteaua cu numar minim de apeluri
- numarul minim de locatii pentru hub-uri in retea

18
PROBLEMA CLICII

Fie G=(V,E) un graf neorientat. O clicăeste un subgrafcomplet al lui G, adică o


submulţime V’⊆V a.î. oricare două vârfuri din V’ sunt unite printr-o muchie din E.
Dimensiunea unei clici este dată de numărul de vârfuri pe care le conţine. Se
ceregăsireauneiclici de dimensiune maximă în graful G.

19
Analiza: aici
Aplicații:
- intr-o rețea de socializare se caută cel mai mare grup în care toți se cunosc între ei
- chimie
- bioinformatică

Problema mulţimii independente

Intr-un graf, care este cea mai mare submultime a varfurilor astfel incat nici o pereche
de varfuri de aici nu formeaza muchie in graf?

Aplicatii:
- care este cea mai vasta multime de persoane dintr-un grup care nu se cunosc intre
ele?

20
PROBLEME DE FLUX MAXIM ÎN REŢELE DE TRANSPORT

Reţea de transport. Flux. Flux optim.


Enunt. Se cere fluxul maxim ce se poate transporta de la sursă la destinaţie
respecatând restricţiile de capacitate.

Maximum flow problems

Varianta: Flux maxim in reţele cu mai multe surse şi mai multe destinaţii

21
Problema cuplajului maxim in graf bipartit

Enunt si analiza
Intr-un graf G=(V,E) se cere cea mai mare submultime de muchii E’ din E, a.i. fiecare
varf este incident la cel mult o muchie din E’.

Analiza . Aplicații:
- conectarea unei mulțimi de mașini la o mulțime de sarcini care trebuie executate
simultan
- cuplarea intr-o aplicatie software de dating

22
Problema fluxului maxim cu cost minim

Arcele au asociate o capacitate și un cost unitar (costul plătit pentru fiecare unitate de
flux ce trece prin arcul respectiv). Se cere un flux maxim astfel încât
∑(𝑢𝑢 ,𝑣𝑣)∈𝐸𝐸 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓(𝑢𝑢, 𝑣𝑣) ∗ 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐(𝑢𝑢, 𝑣𝑣) sa fie minim.
Caz particular: probleme de transport

Problema fluxului maxim cu capacităţi inferioare şi superioare

Pentru fiecare arc există capacități minime și maxime impuse, care trebuie respectate.

Fluxuri maxime cu constrângeri de timp

Fiind data o retea dinamica de flux, sa se determine fluxul maxim care poate fi transmis
de la sursa la destinatie intr-un timp T dat.

PROBLEME DE TRANSPORT

Sunt particularizari ale problemei fluxului maxim cu cost minim.

Enunt: Se dau pentru n surse (depozite de marfuri) si m destinatii costurile unitare de


transport de la fiecare sursa la fiecare destinatie (daca un anumit transport nu se poate
efectua intre o sursa si o destinatie, costul se stabileste la o valoare foarte mare). La
surse se gasesc marfuri disponibile fie in orice cantitate, fie in cantitate limitata, dar
cunoscuta. Pentru destinatii se cunoaste canitatea necesara (cererea). Se cere
structura de transport (cantitatile de transportat de la surse la destinatii) care asigura
satisfacerea necesarului si se realizeaza cu cost total minim.

23
Exemplu:

Probleme de transbordare

Se accepta si transporturi intre surse sau transporturi intre destinatii si pot exista
puncte care sa fie escale pe trasee de transport (puncte care se pot considera atat
surse cat si destinatii).
Exemplu

Probleme de alocare

O problemă de alocare este o problema de transport pentru care capacitățile surselor


și destinațiilor sunt egale cu 1.
Se dau m agenți și n sarcini. Fiecare agent poate îndeplini orice sarcină, cu un cost
dependent de sarcină, și fiecare sarcină este executată de un singur agent. Se cere
alocarea cu cost minim a tuturor sarcinilor la agenți.

24
Exemplu:

Variante:
- dacă m=n, problema se numeste problemă echilibrată de alocare
- dacă m>n, fiecare agent este alocat la maxim o sarcină
- fiecare agent poate primi maxim k sarcini
- fiecare sarcină necesită k agenti

Particularizari:
• Problema rucsacului
• Problema Sudoku
• Problema decupării optimale

25
• Problema colorării grafurilor
• Problema colorării fracţionale a grafurilor
• Probleme de planificare
• Problema orarelor şcolare
• Probleme de repartiţie a investiţiilor

Problema rucsacului: problema de alocare cu un singur agent (rucsacul) și restricții


suplimentare (greutati si valori ale obiectelor – „sarcini”).
Intr-un rucsac de capacitate data, sa se incarce n obiecte (pentru care se cunosc
greutatile si valorile), a.i. valoarea totala a incaracturii sa fie maxima.
Solutia se poate reprezenta ca sir de forma (x1, x2, ..., xn).
Enunt si analiza

Varianta discretă a rucsacului (0/1): xi ∈ {0,1}


Varianta continuă a rucsacului (fracționară): xi∈[0,1]

26
Generalizări:
- Problema mărginită a rucsacului (bounded knapsack problem): xi∈{0,1,…, bi}.
Din fiecare obiect se pot incarca mai multe bucati, dar de dimensiune limitata.
- Problema rucsacului cu opțiuni multiple (multiple-choice knapsack problem):
există k clase de obiecte și trebuie încărcat un singur obiect din fiecare clasă
- Problema rucsacilor (multiple knapsack problem): n obiecte, m rucsaci cu
capacitate Gi. Identica cu problema de transport.

Problema decuparii optimale


A aparut in industria de hartie, insa are aplicatii si in multe alte domenii (industria
lemnului, construcţia navelor, croirea textilelor, poligrafie etc.)
Se dau un numar de role de hartie de latime cunoscuta, din care se cere o taiere
optima, care sa acopere un set de comenzi (numar de role de latimi mai mici decat latimea
rolei initiale). O combinatie de latimi din cele cerute formeaza un pattern. Se cere asadar
numarul de aplicari ale pattern-urilor care sa acopere toate comenzile si sa implice pierdere
minima de material.

27
Exemplu:
(1D) Se lucreaza cu rola de hartie de latime de 100 cm. Exista comenzi de latimile 14
cm, 31 cm, 36 cm si 45 cm. Numarul de bucati din fiecare tip se da in tabelul urmator:

.
Latimea de 100 cm se poate taia fie in 2*45, cu o pierdere de 10 cm, fie in 45+31+14
cu pierdere 0, fie orice alta combinatie a latimilor cerute. O astfel de combinatie care nu
depaseste 100 cm se numeste pattern. Pentru acest exemplu exista 37 de pattern-uri
diferite. Se cauta sa se determine de cate ori sa se aplice fiecare pattern pentru o pierdere
totala minima.

Generalizări: problema ambalării unor colete cu dimensiuni date în lăzi de


dimensiuni date sau în depozite (2D, 3D).

Problema colorării grafurilor

O colorare a unui graf simplu este asignarea unei culori fiecărui vârf al grafului a.î.
oricare două vârfuri vecine să fie colorate diferit. În general, un graf planar poate fi
colorat folosind maxim 4 culori. Aceasta este binecunoscuta “teoremă a celor 4 culori”,
demonstrată pentru prima dată de K. Appel şi W. Haken în 1977.
Se cere o colorare cu numar minim de culori.
Vezi si aici.

28
Problema colorării muchiilor

Se cere colorarea muchiilor grafului cu numar minim de culori a.i. oricare doua
muchii care au in comun un varf au culori diferite.

Vezi si aici.

29
Probleme de planificare calendaristică

Se da un set de maşini si o mulţime de job-uri (formate dintr-o sarcina sau mai


multe); pentru fiecare job (sau sarcina din fiecare job) se cunoaste masina care trebuie sa-l
proceseze si durata de procesare. Se cere o planificare temporala a tuturor job-urilor pe
masini a.i. acestea sa se finalizeze in timp minim (adica o alocare optima a job-
urilor/sarcinilor la masini).

Problema orarelor (şcolare, de trasnport, pentru evenimente etc.)

Spre exemplu, pentru orarele de transport se cauta o alocare a soferilor la autobuze si


la intervale orare a.i. un numar maxim de curse sa se poata efectua sau un numar dat de
curse cu pierderi minime.

In orarele universitare se cauta o alocare optima a grupelor de studiu si profesorilor la


sali şi module de timp care sa satisfaca toate restricţiile, cum ar fi:
- Fiecare profesor participă la cel mult un curs într-un modul
- Fiecare grupă de studenţi participă la cel mult un curs într-un modul
- Fiecare sală este alocată la cel mult un eveniment într-un modu

30
- Anumite evenimente nu pot fi planificate într-un anumit modul sau într-o
anumită sală
- Un curs sa fie plasat în orar înaintea seminarului (laboratorului)

PROBLEME DE STABILIRE LOCAŢII

Obiectivul este găsirea unor locații într-un spațiu a.î. să fie optimizate anumite
distanțe. Ex. amplasarea optimă a unui oficiu poștal intr-o regiune.

31
Probleme de stabilire locaţii planare – mulţimea admisibilă este o submulţime a
planului euclidian.
Probleme discrete de stabilire locaţii – locaţiile trebuie să aparţină unei mulţimi
discrete date (optimizare mixtă).
Probleme de stabilire locaţii în reţele – locaţiile trebuie să aparţină vârfurilor sau
arcelor unei reţele (graf).

PROBLEME DE SATISFACERE A RESTRICŢIILOR


(modelate ca probleme de optimizare)

Se cauta minimizarea numarului de restrictii nesatisfacute.

OPTIMIZATION ART

Folosirea optimizarii pentru a crea portrete, imagini si alte opere de arta.


- crearea de fotomozaicuri care sa semene cat mai mult cu o pictura data: aici

32
- plasarea unei sfori pe o plansa astfel incat sa semene cu un simbol sau o pictura
(determinarea de cicluri cu anumite proprietati): exemplu1, exemplu2

Aceasta a primit numele de TSP art: cum sa fie plasate orasele pe harta a.i. solutia
problemei TSP sa semene, atunci cand este privita de la distanta, cu o imagine data
(densitatea oraselor ~ colorarea imaginii): exemplu.

Vezi si https://www.oberlin.edu/bob-bosch

33
Pentru ca problema sa aiba solutie ai=1. Algoritmul functioneaza pentru acest caz.
j X1,j =1

2
Caracterizarea problemelor de optimizare

Diversele proprietăţi matematice specifice ale funcţiei obiectiv, ale variabilelor, ale restricţiilor
şi/sau ale relaţiilor funcţiei obiectiv cu variabilele permit caracterizarea unei probleme de optimizare
din multiple perspective, caracterizare care indică de cele mai multe ori abordarea adecvată a
problemei în cauză.
Principalele perspective de caracterizare ale problemelor de optimizare împreună cu tipurile
asociate de probleme sunt următoarele, cu precizarea că o problemă de optimizare poate fi (şi de
regulă este) caracterizată simultan din mai multe perspective.

 optimizare matematică / optimizare experimentală


 optimizare statică / optimizare dinamică
 optimizare parametrică / optimizare de funcţionale
 optimizare fără restricţii / optimizare cu restricţii
 programare discretă / programare continuă
 programare liniară / programare neliniară
 programare în numere întregi, programare mixtă
 programare convexă / programare neconvexă
 programare deterministă / programare stochastică
 optimizare uniobiectiv / optimizare multiobiectiv

Optimizare matematică /optimizare experimentală


mathematical optimization / experimental optimization

Optimizarea se numeşte matematică dacă se cunoaşte relaţia funcţională dintre obiectiv şi


variabile, cel puţin aproximativ, adică există un model matematic mai mult sau mai puţin simplificat al
obiectului, procesului sau sistemului.
Optimizarea este experimentală în lipsa acestei relaţii funcţionale. În acest caz, metoda de
rezolvare este experimentarea pe un obiect real sau pe un model simulat / scalat al acestuia. Se vor
varia variabilele independente şi se vor măsura variabilele dependente.
Intr-un experiment trebuie tinut seama de efectul inevitabil al perturbaţiilor stochastice asupra
rezultatelor măsurate. O strategie bună de optimizare experimentală trebuie să ţină cont de acesta şi
să abordeze extremul dorit cu un cost minim dpdv al erorilor. Sunt două metode principale:
 metoda EVOP (evolutionary operation) propusă de G. Box (1957), care este o dezvoltare a
metodei gradient experimentale (Box şi Wilson, 1951). Se modifică 2 sau 3 parametri o

1
dată, dacă este posibil cei care au cea mai mare influenţă, si se analizeaza rezultatele. O
aplicatie frecventa este optimizarea dinamică a proceselor chimice.
 strategii evoluţioniste (Rechenberg, 1964).

Chiar dacă este disponibilă o relaţie funcţională adecvată între obiectiv şi variabile, uneori este
preferabil experimentul optimizării matematice. In ce contexte?

Optimizare statică / dinamică


static optimization / dynamic optimization

Optimizarea este statică (predictivă) dacă optimul este invariant în timp (staţionar) ca pozitie in
spatiul de cautare/spatiul obiectiv. Odată cunoscută poziţia şi valoarea optimului, căutarea se opreşte.

Dacă optimul se deplasează in timp (de la inceperea rezolvarii problemei pana la identificarea
optimului), optimizarea este catalogată drept dinamică (reactivă).
Exemplu 1: mergi intr-o excursie de trei zile pe munte, avand n unitati de hrana. Cum ar trebui sa
consumi hrana in fiecare zi pentru o utilitate maxima a consumului?
Exemplu 2: misiunea unui avion auto-pilotat presupune trecerea printr-un set dat de locatii a.i. sa
se descurce si cu conditiile meteo, cu alte avioane care traverseaza zona, cu situatiile problematice
tehnice care pot aparea. Ce traiectorie optimala sa urmeze acesta (consum minim de carburant, timp
minim al indeplinirii misiunii)?
Optimizarea dinamică are în vedere sistemele sau reprezentările lor matematice în care se
operează pe faze sau secvenţe, adica se alege o secventa de decizii pentru maximizarea sau
minimizarea unei functii obiectiv. O decizie afecteaza posibilitatile ulterioare si se doreste considerarea
acestui efect la luarea urmatoarei decizii. La fiecare pas se ia o decizie, iar secvenţa de decizii formează
o politică.
Intuitia fundamentala a optimizarii dinamice este aceea ca optimalitatea necesita ca resursele sa
fie alocate in timp a.i. sa nu mai existe oportunitati favorabile in momentul de decizie intertemporala
(dintre faze). Scopul optimizării dinamice este menţinerea unei condiţii optime în ciuda condiţiilor
variabile ale mediului. Căutarea devine astfel un proces continuu.

2
Conceptul cheie in optimizarea dinamica este principiul de optimalitate (al lui Bellman), enunţat
pentru problemele care implică variabile discrete sau pentru formele discrete de optimizare de
funcţionale în care traiectoria apare ca o funcţie pas. Principiul afirma ca:

o politică optimă nu poate fi formată decât din subpolitici optime


sau: orice portiune a traiectoriei optimale prin spatiul de cautare este optima intre
starile/punctele pe care le uneste (ex. daca drumul cel mai scurt intre Paris si Ploiesti trece prin
Timisoara, atunci drumul Paris-Timisoara si drumul Timisoara-Ploiesti sunt cele mai scurte).

Aşadar, rezolvarea începe prin optimizarea deciziei finale luate la tranziţia dintre penultimul şi
ultimul pas şi se continuă analog până se ajunge la pasul iniţial.

Obs. Principiul optimizării generale în paşi se poate aplica problemelor de optimizare


parametrică dacă funcţia obiectiv este separabilă (Hadley, 1969).

Dacă starea pentru o anumita secventa depinde numai de decizia luata in acea secventa şi de
starea anterioară (deci nu există feedback) se poate aplica programarea dinamică.
Multe metode de căutare sunt foarte costisitoare deoarece nu sunt disponibile informaţii
anterioare despre procesul de controlat. De aceea se construiesc sisteme de control adaptiv care
folosesc informaţii memorate despre comportamentul anterior al sistemului.
Dacă poziţia optimului se schimbă cu viteză mare, se stabileşte un model dinamic în care se
specifică toate variabilele, inclusiv cele controlabile, ca funcţii de timp. Astfel, optimizarea iniţială (care
este parametrică) devine optimizare de funcţionale.
Aplicatii frecvente: fenomene economice, ingineresti (control optimal), sociale, chiar estimarea
parametrilor pentru modelele dinamice.

Optimizare parametrică /optimizare de funcţionale


parameter optimization / functional optimization

Dacă nu numai funcţia obiectiv, dar şi variabilele independente sunt scalari, optimizarea se
numeşte parametrică. Valorile numerice ale variabilelor sau parametrilor sunt gândite pentru o

3
valoare a funcţiei obiectiv care este un optim, iar numărul de parametri care descriu o stare a
sistemului este finit.
Reprezentare grafică:
 cu un parametru – xOy

 cu doi parametri – xOyz; planuri orizontale, vârfuri, platouri, văi, creste, linii de contur

 cu n parametri

În optimizarea parametrică variabilelor li se poate impune un domeniu discret sau domeniul


numerelor întregi sau alte domenii particulare.
Baza matematică pentru optimizarea parametrică o constituie teoria maximelor şi minimelor din
calculul diferenţial elementar. În practică, însă, pentru rezolvarea problemelor asistata de calculator se

4
folosesc metode iterative de determinare a minimului sau maximului. Un exemplu este programarea
dinamică (sau optimizarea în paşi) a lui Bellman.

În optimizarea de funcţionale, în loc de puncte optime în spaţiul euclidian tridimensional, se


caută traiectorii optime în spaţii de funcţii. Astfel apar termenii optimizare parametrică finit
dimensională şi optimizare parametrica infinit dimensională.
Din moment ce variabilele de determinat sunt ele însele funcţii cu unul sau mai multe
argumente, funcţia obiectiv este o funcţie de funcţie, numită funcţională. Aşadar, în optimizarea de
funcţionale, soluţia optimă necunoscută nu este un număr sau vector, ci mai degrabă o „cantitate”
continuă – o funcţie.

Exemple de probleme de optimizare de funcţionale:


- Să se determine curba netedă pe care va aluneca un punct cu masă printre alte două puncte
în cel mai scurt timp, supus fiind gravitaţiei, dar fără a fi supus frecării. Funcţia obiectiv este o
integrală;
- Să se determine cea mai scurtă cale între două puncte-popas aflate intr-un teren montan
(variabilele sunt curbele care conectează cele două puncte);
- Date fiind două cercuri care constituie partea superioară şi inferioară a unei cupe de înălţime
dată, să se determine forma peretelui cupei cu arie minimă (soluţia nu este cilindru sau con,
ci un catenoid);

5
- Să se determine forma optimă a unui pod care să poată susţine o anumită “cantitate” de
trafic folosind o cantitate minimă de material;
- Să se determine forma optimă a unui avion care să ricoşeze majoritatea undelor radio de la
un radar inamic.

Baza matematică pentru optimizarea de funcţionale o constituie calculul variaţional şi extensiile


sale. O alta solutie, aplicabila uneori, este parametrizarea (sau discretizarea) optimizării funcţionalelor
care presupune:
- reducerea funcţiilor la vectori şi a funcţionalelor la funcţii şi apoi
- aplicarea optimizării standard a funcţiilor.

Principiul de optimalitate al lui Bellman poate fi formulat şi pentru contextul diferenţial, pentru a
a fi aplicat optimizării funcţionale continue.

Optimizare fără restricţii / cu restricţii


unconstrained optimization / constrained optimization

Dacă nu se impun nici un fel de restricţii asupra variabilelor, atunci optimizarea se numeşte fără
restricţii.
Exemple:

sau
Optimizarea cu restricţii - restricţiile pot fi de tip egalitate sau de tip inegalitate, definite pe
domeniu finit sau infinit.

6
Ex. general:
minimizează f(x)
cu hi(x) = 0, i = 1, 2, ..., m;
gj(x) ≤ 0, j = 1, 2, ..., r;
x  S.
f este funcţia obiectiv
hi, gj şi apartenenta la S sunt restricţiile.

Punctele care satisfac restricţiile formează setul fezabil (mulţimea soluţiilor admisibile), notat Xf.

Exemplu 1:

Setul fezabil este aici cercul de rază 2 cu centrul în origine (0,0).

Exemplu 2:

Soluţie (-2,1).

Obs. Dacă Xf =  problema este nefezabilă (nu are solutii).

În optimizarea parametrică sunt două modalităţi de tratare a restricţiilor:

7
1. folosirea funcţiilor de penalizare
2. considerarea restrictiilor ca aspect principal al problemei de rezolvat – programarea
matematică, CSP (constraint satisfaction problems).

Penalizarile constau în modificarea funcţiei obiectiv f, a.î.

o în regiunea interzisă, f() = ∞ (pentru probleme de minimizare); ex. metoda barieră,


strategii evoluţioniste;
o în regiunea permisă, aproape de frontieră, funcţia este modificata pentru a ţine
căutarea la distanţă (funcţii de penalizare parţială);
o funcţia este modificată pe întreg spaţiul baleiat de variabile (funcţii de penalizare
globală) - tratarea restricţiilor ca inegalităţi.

Considerarea restrictiilor ca aspect principal al problemei de rezolvat a fost propusă de Dantzig


(1966) prin metoda simplex destinată programării liniare. Restricţiile (care aici sunt liniare), împreună
cu condiţia de semn a variabilelor, baleiază regiunea fezabilă sub forma unui poligon sau poliedru,
adesea numit simplex. Din moment ce şi funcţia obiectiv este liniară, extremul dorit trebuie că se află
într-unul din colţurile poliedrului. Aşadar este suficientă examinarea colţurilor acestuia pentru
identificarea soluţiei. Metoda realizează aceasta într-un mod eficient, deoarece sunt considerate
numai colţurile în care funcţia obiectiv are valori din ce în ce mai bune. Metoda poate fi văzută ca o
metodă gradient de-a lungul muchiilor poliedrului.
Metoda se poate aplica direct chiar şi pentru sute sau mii de de variabile şi restricţii.

Programare discretă / programare continuă


discrete optimization / continuous optimization

Programarea discretă tratează problemele pentru care spaţiul de căutare este finit sau
numărabil. Cu alte cuvinte, soluţiile admisibile sunt discrete sau pot fi reduse la soluţii discrete.
O variabilă este discretă atunci când este definită numai pentru anumite valori numerice, care nu
sunt infinit vecine.

8
Dacă mulţimea variabilelor este nenumărabilă infinită, atunci optimizarea se numeşte
programare continuă.
În acest caz, optimizarea este de regulă mai facilă, deoarece putem folosi informaţii din valorile
funcţiei obiectiv şi restricţii într-un punct anume pentru a deduce comportamentul funcţiei obiectiv în
toate punctele vecine lui.
Acest lucru nu se poate afirma despre problemele discrete, unde punctele “vecine” pot avea
valori ale funcţiilor mult diferite. Mai mult, mulţimea soluţiilor posibile este prea mare pentru a face o
căutare exhaustivă.
Un spatiu discontinuu nu este obligatoriu un spatiu discret!

Calculatoarele digitale sunt puţin adecvate rezolvării problemelor de programare continua


deoarece acestea nu pot opera direct cu funcţii. Sunt posibile proceduri de integrare numerică, dar
sunt costisitoare.
Calculatoarele analogice sunt mai adecvate deoarece ele pot imita direct procesele dinamice.
Comparativ cu cele digitale, acestea dispun de un interval numeric redus şi de o acurateţe redusă şi nu
sunt uşor de programat. De aceea adeseori se cuplează calculatoare digitale cu analogice în
calculatoare hibride. Calculatorul digital preia sarcina de control iterativ, iar cel analogic de diferenţiere

9
şi integrare pe baza parametrilor furnizaţi de cel digital. Korn şi Korn descriu pentru prima dată (1964)
operaţii de optimizare a traiectoriilor prin intermediul calculatoarelor hibride.
Adesea se folosesc pentru optimizarea continuă metode aleatoare din cauza impreciziei
computaţionale a părţii analogice. Însă dacă se impune o acurateţe maximă, trebuie folosite
calculatoarele digitale, chiar dacă timpul de rezolvare este mai mare.

Optimizarea combinatorială face parte din programarea discreta. In acest caz se caută un
„obiect” optim într-o colecție finită de obiecte. În general, colecția are o reprezentare concisă (ex. este
un graf), însă numărul de obiecte este imens (de fapt crește exponențial cu mărimea reprezentării - ex.
toate ciclurile hamiltoniene din graf). De aceea, verificarea rând pe rând a tuturor obiectelor pentru a-l
selecta pe cel optim nu se pune în discuție.

Probleme consacrate de optimizare combinatorială:


 problema rucsacului (knapsack problem),
 problema dirijării vehiculelor (vehicle routing problem),
 problema comis-voiajorului (travelling salesman problem, TSP) si in general problemele de tip
“cel mai scurt drum într-un graf”,
 arbori de acoperire minimi (minimum spanning tree problem) – folosiţi de exemplu în design-
ul reţelelor.

 problema decupării optimale (cutting stock problem). Generalizare: problema ambalării unor
colete cu dimensiuni date în lăzi de dimensiuni date sau în depozite. Poligrafie, industria
lemnului, construcţia navelor etc.

10
 probleme generale de ordonare,
 problema damelor (eight queens puzzle),
 problema colorării grafurilor (graph coloring problem).

Problemele de optimizare combinatorială sunt în general probleme de alocare.

Programare liniară / programare neliniară


linear programming / nonlinear programming

În domeniul optimizării, primul termen consacrat a fost cel de programare liniară, propus de
George Dantzig în anii 1940.

În cadrul programării liniare funcţia obiectiv şi restricţiile sunt combinaţii liniare ale
necunoscutelor (variabilelor), adică funcţii liniare.

Forma generală a unei funcţii liniare este:

f(x) = c1x1 + c2x2 + ... + cnxn + d.

O problemă elementară de programare liniară este maximizarea profitului total.

Exemplu: Într-un centru farmaceutic se fabrică 3 tipuri de produse (aspirină, paracetamol,


algocalmin). Se caută o structură optimă a producţiei într-un ciclu de fabricaţie, adică numărul de
colete de fabricat din cele 3 tipuri de produse a.î. profitul total obţinut să fie maxim.

maximizează w1 x1  w2 x2  w3 x3

respectând restrictiile 0  xi  Bi , i  {1,2,3} ,

unde wi , i  {1,2,3} este profitul unitar adus de fabricarea produsului de tip i . Aceste valori se cunosc.

Alte exemple: adaptarea producţiei la cerere, probleme de transport, de alocare, de itinerare


ciclice, problema dietei economice, flux maxim în reţele.

Programarea neliniară studiază cazurile când funcţia obiectiv sau restricţiile sunt specificate prin
egalităţi sau inegalităţi neliniare.
Exemplu 1:
maximizează f(x) = x1 + x2

cu x1 ≥ 0
x2 ≥ 0

11
x12 + x22 ≥ 1
x12 + x22 ≤ 2

unde x = (x1, x2).

Soluţia se află la intersecţia dreptei cu spaţiul haşurat care reprezintă spaţiul soluţiilor admisibile.

Exemplu 2:
maximizează f(x) = x1x2 + x2x3

cu x12 − x22 + x32 ≤ 2


x12 + x22 + x32 ≤ 10

unde x = (x1, x2, x3,).

Soluţia se află la intersecţia suprafeţei superioare cu spaţiul haşurat care reprezintă spaţiul
soluţiilor admisibile.

Majoritatea strategiilor de programare neliniară sunt similare metodei simplex sau o folosesc ca
subprogram. Acesta este cazul în special al programării pătratice, concepute pentru funcţii obiectiv
pătratice şi restricţii liniare.

Un caz particular al programării neliniare este programarea pătratică, unde funcţia obiectiv este
o funcţie pătratică, iar restricţiile sunt egalităţi sau inegalităţi liniare.

12
O funcţie pătratică este o funcţie polinomială de forma , unde .
Graficul unei funcţii pătratice este o parabolă ale cărei axe majore sunt paralele cu axa Oy.

Programare în numere întregi, programare mixtă


integer programming / mixed-integer programming

Programarea în numere întregi este acel tip de optimizare în care se impune restricţia ca toate
variabilele să ia valori întregi. Aparţine clasei de optimizare discretă.
Exemplu: max y  4 x1  x2

 3
 7 x1  x 2  1

 1
respectând  x1  x 2 
 3
 x1 , x 2 intregi nenegativi


Un caz particular al programării în numere întregi este programarea binară (bivalentă), unde
variabilele pot lua numai două valori (să spunem 0 şi 1).

13
Exemple: problema discretă a rucsacului, obţinerea unui plan de cultură agricolă, alegerea
măştilor pentru circuite integrate, construirea orarelor şcolare.

Obs. Soluţia optimă a unei probleme de programare în întregi poate diferi foarte mult de soluţia
aceleiaşi probleme când se renunţă la condiţia de numere intregi.
Exemplu:
max y  4 x1  x2

 3
 7 x1  x 2  1

 1
respectând  x1  x 2 
 3
 x1 , x 2 intregi nenegativi


Geometric, problema se reprezintă astfel:

Pentru x1 şi x2 întregi, soluţia este x1= x2=1, pentru care valoarea obiectiv este y = 5.
Dacă renunţăm la condiţia de integritate, soluţia este x1=7/3, x2=2, cu valoarea obiectiv y = 34/3
= 11.33. Deci optimul problemei de programare liniară este de 2.26 ori mai mare decât optimul
problemei de programare în numere întregi.

Programare mixtă (MIP)


O problemă de programare mixtă conţine variabile cărora li se permite să varieze continuu şi
variabile care pot avea numai valori întregi.

14
Exemple: probleme de amplasare optimă, de planificare a lucrului pe maşini, probleme de
sinteză în reţele şi procese.

Problemele de programare liniară se pot rezolva eficient dacă au dimensiune rezonabilă, însă
problemele de optimizare în întregi sau de optimizare mixtă (când se impun restricţii de integritate
pentru variabile) sunt NP-complete.

-----------------------------------------------------------------------------------------------------------------------------
Programare convexă / programare neconvexă
convex optimization /non-convex optimization

Dificultatea frecventă în optimizare nu se referă la liniaritatea sau neliniaritatea optimizării, ci la


convexitate sau neconvexitatea sa [Rockefellar, SIAM Review, 1993].

O mulţime X este convexă dacă:


pentru orice x1, x2  X, x1 + (1-)x2  X, 0 ≤  ≤ 1.

Mulţimi convexe Mulţimi neconvexe

O funcţie f definită pe o mulţime convexă X este numită convexă dacă pentru orice x1, x2  X şi
orice , 0 ≤  ≤ 1 are loc:
f(x1 + (1-)x2)) ≤ f(x1) + (1-)f(x2).

15
Programarea convexă studiază cazurile în care funcţia obiectiv f (care se cere minimizată) este
funcţie convexă, iar restricţiile, dacă există, sunt:
- cele egalitate liniare,
- cele inegalitate concave.

Pentru probleme de minimizare, funcţia obiectiv şi regiunea fezabilă sunt convexe, iar
restricţiile sunt concave.
Pentru probleme de maximizare, funcţia obiectiv şi regiunea fezabilă sunt concave, iar
restricţiile sunt convexe.
Problemele de optimizare conică sunt convexe.
Se pot distinge cel puţin 7 tipuri de convexitate (Ponstein, 1967).

Programarea convexă poate fi vazută ca un caz particular al programării liniare deoarece funcţiile
liniare sunt funcţii convexe.
Problemele de optimizare convexă sunt mai generale decât problemele de programare liniară,
dar împrumută proprietăţile favorabile ale acestora din urmă: pot fi rezolvate rapid şi robust chiar şi la
dimensiuni mari (sute sau mii de variabile şi restricţii).
Dificultatea constă adeseori, dacă funcţia obiectiv şi restricţiile nu sunt liniare, să determinăm
dacă ele sunt convexe.

Pentru problemele de programare convexă:


- dacă există un punct de minim local, atunci acesta este minimul global.
- mulţimea tuturor minimelor (globale) este convexă.
- dacă funcţia f este strict convexă, atunci există cel mult un minim.

16
Având o funcţie obiectiv strict convexă şi o regiune fezabilă convexă, nu poate exista decât o
soluţie, care este optimul global.

Teoria programării neliniare se bazează pe condiţiile de optimalitate dezvoltate de Kuhn şi Tucker


(1951) - o extensie a teoriei minimelor şi maximelor pe probleme cu restricţii sub forma de inegalităţi.
Aceste condiţii sunt:
- condiţii necesare de optim, traduse geometric astfel: în punctele de optim (în colţurile
regiunii permise) gradientul funcţiei obiectiv se află în conul format de gradienţii restricţiilor
active;
- condiţii suficiente de optim - dacă funcţia obiectiv este convexă şi restricţiile sunt concave.

Metode de tratare a problemelor de optimizare convexă:


- Metoda celor mai mici pătrate;
- Programarea geometrică;
- Programarea semidefinită (în care variabilele sunt matrici semidefinite);
- Maximizarea entropiei.

O funcţie f este concavă dacă –f este funcţie convexă.


Adică orice dreaptă care uneşte doua puncte ale graficului functiei se situează pe graficul funcţiei
sau dedesubtul graficului funcţiei.

O funcţie liniară (care se reprezintă grafic printr-o dreaptă) este atât convexă cat şi concavă.
O funcţie neconvexă nu este nici convexă, nici concavă. Ex: functia sinus.

17
Programare neconvexă

Mulţimi neconvexe

O astfel de problemă poate avea regiuni fezabile multiple şi puncte optime locale multiple.
Poate dura timp exponenţial (relativ la numărul variabilelor şi restricţiilor) pentru a
determina dacă o problemă neconvexă are soluţii sau dacă o soluţie este optim global.

Probleme de optimizare neconvexă:


• orientarea radiatiilor in terapia prin radiaţii
• design ingineresc
• economie, finanţe (preţuri de ofertă)

Programare deterministă /programare stochastică


deterministic optimization / stochastic optimization

Un model pentru programarea deterministă este specificat în întregime, adică toate datele
necesare determinarii solutiei sunt cunoscute a priori.
Problemele din lumea reală sunt însă adesea afectate de incertitudine, din cauza:
- indisponibilităţii datelor (din cauza de exemplu a costului prea mare al obţinerii datelor)
- erorilor de citire a datelor de intrare
- riscului prezent în dinamica fenomenelor
- erorilor de modelare a incertitudinii.

18
Programarea stochastică studiază cazurile în care parametrii (în totalitate sau parţial) sau
restricţiile sau funcţia obiectiv depind de variabile aleatoare. Scopul este de a găsi politici fezabile
pentru (aproape) toate instanţele posibile de date şi care minimizează media unei funcţii cu variabile
de decizie şi variabile aleatoare.
Se poate încerca reducerea unei probleme stochastice la o problemă deterministă (prin folosirea
valorilor medii), dar sunt cazuri când distribuţiile de probabilitate influenţează dramatic optimul.
Exemplu: o problemă de optimizare stochastică dinamică este acumularea de capital în condiţii
de incertitudine.
Alte exemple:
• meteorologie
• logistică, stocuri
• comportamente biologice
• modele de transport
• instrumente financiare
• design al reţelelor
• planificare a producţiei

Optimizare uniobiectiv (unidimensionala) /


optimizare multiobiectiv (multidimensională)
uniobjective optimization / multiobjective optimization

O problemă de optimizare uniobiectiv constă în căutarea unei soluţii x  X, astfel încât funcţia
obiectiv, f(x), să aibă valoare maximă sau minimă. În acest caz, a compara două soluţii-candidat, x(1) şi
x(2), înseamnă a compara valorile lor obiectiv, f(x(1)) şi f(x(2)).

Multe probleme reale implică însă optimizarea simultană a mai multor obiective, adesea
conflictuale, şi un spaţiu de căutare complex şi, de regulă, foarte dificil de explorat prin metode exacte,
enumerative, deoarece conţine foarte multe posibile soluţii, plasate în regiuni greu accesibile sau
având proprietăţi care încetinesc găsirea soluţiilor. În aceste cazuri, se caută mai multe soluţii de
compromis.

19
O problemă de optimizare multiobiectiv se defineşte printr-o mulţime de n variabile, o mulţime
de k funcţii obiectiv şi o mulţime de m restricţii. Funcţiile obiectiv şi restricţiile sunt funcţii de variabile
de decizie. Scopul optimizării este de a

minimiza y = f(x) = (f1(x),f2(x),…,fk(x)),


respectând restricţiile e(x) = (e1(x),e2(x),…,em(x))  0,
unde x = (x1,x2,…,xn)  X, y = (y1,y2,…,yk)  Y.

În cazul obiectivelor multiple conflictuale nici o soluţie nu este cea mai bună ţinând seama de
toate obiectivele. Deci se vor alege soluţii de compromis.

Optimizarea multiobiectiv se mai numeşte şi optimizare multicriterială, vectorială,


polioptimizare sau luarea deciziilor cu criterii multiple.
În problemele de optimizare uniobiectiv, mulţimea fezabilă este total ordonată în raport cu
funcţia obiectiv f, pe când în problemele de optimizare multiobiectiv, Xf este, în general,
parţial ordonată în raport cu funcţiile obiectiv f.

------------------------------------------------------------------------------------------------------------------------------
O problemă, atunci când se caracterizează, se poate încadra în categorii multiple, evident
necontradictorii, corespunzand perspectivelor de analiza.
Exemplu: o problemă poate fi problemă de optimizare combinatorială statică, deterministă,
continua.

20
Tehnici avansate de programare 2017-2018
Cap. 2

2.6. Tehnica Branch and Bound (“Ramifică şi mărgineşte”)

Caracteristici principale:
 Tehnica Branch and Bound este înrudită cu tehnica Backtracking (adică face parte din
categoria tehnicilor de parcurgere a spaţiului soluţiilor unei probleme), dar se aplică în
general problemelor de optimizare;
 Diferenţe între Branch and Bound şi Backtracking:
o Backtracking se aplică în general problemelor de satisfacere a restricţiilor, Branch
and Bound se aplică problemelor de optimizare, cu restricţii;
o Backtracking: abandonarea unei ramuri din arborele de parcurgere a spaţiului
soluţiilor se face doar atunci când nu sunt îndeplinite condiţiile de continuare
(restricţiile);
o Branch and Bound: abandonarea unei ramuri se face ori de câte ori se ajunge la o
configuraţie care nu este promiţătoare. La fiecare moment, se cunoaşte soluţia
optimă curentă. O nouă ramură din arborele de parcurgere a spaţiului soluţiilor se
abandonează dacă se descoperă că pe acea ramură nu este posibil să se ajungă la o
configuraţie care să optimizeze funcţia obiectiv (valoarea funcţiei obiectiv să fie
mai bună decât cea corespunzătoare soluţiei optime curente).
 Asemănări între Branch and Bound şi Backtracking:
o Soluţia este de forma unui vector x=(x1,x2,x3,...,xn);
o Soluţia se construieşte succesiv; elementul xk se adaugă în soluţia parţială
x(k-1)=(x1,x2,x3,...,xk-1);
o În ambele cazuri, o soluţie parţială se abandonează dacă nu satisface restricţiile
(condiţii de continuare).
Forma generală a unei probleme care se rezolvă cu Branch and Bound
Să se determine o configuraţie x=(x1,x2,x3,...,xn)S care satisface anumite
restricţii şi care optimizează o funcţie obiectiv f:SR.
Soluţia x se construieşte succesiv, prin completarea elementelor pas cu pas, la fiecare pas
k verificându-se dacă soluţia parţială x(k)=(x1,x2,x3,...,xk) este promiţătoare. O soluţie
parţială x(k)=(x1,x2,x3,...,xk) este considerată promitătoare dacă:
1. satisface restricţiile problemei (comun cu Backtracking);

57
Tehnici avansate de programare 2017-2018
Cap. 2
2. există şansa ca prin completarea celorlalte componente xk+1,...,xn să se ajungă la o
soluţie mai bună decât ce s-a obţinut până acum (soluţia optimă curentă).
La fel ca în cazul tehnicii Backtracking, strategia de construire a soluţiilor este similară
construirii unui arbore în care fiecare nod reprezintă o soluţie parţială validă (noduri
intermediare) sau o soluţie finală (noduri frunză). Rădăcina arborelui corespunde stării iniţiale
(până să se înceapă completarea elementelor în soluţie).
Nivelul k din arbore corespunde completării componentei xk din soluţie. După obţinerea
soluţiei parţiale x(k)=(x1,x2,x3,...,xk), la nivelul următor k+1, se execută operaţiile de
ramificare şi mărginire, adică se parcurg următorii paşi:
1. Ramificare: se construiesc toate soluţiile parţiale x(k+1)=(x1,x2,x3,...,xk+1), prin
completarea (pe rând) a componentei xk+1 cu toate valorile posibile;
2. Mărginire: se verifică satisfacerea restricţiilor pentru fiecare soluţie parţială
x(k+1)obţinută la etapa de ramificare. Pentru soluţiile care satisfac restricţiile se
estimează margini (superioare sau inferioare) corespunzătoare valorii funcţiei obiectiv.
Aceste margini sunt folosite pentru a estima şansa ca o soluţie parţială să conducă la o
soluţie mai bună decât soluţia optimă curentă (construită până la momentul curent).
Calculul marginilor depinde de problema care se rezolvă.
Pentru o problemă de maximizare, se estimează marginea superioară a funcţiei
obiectiv şi se urmăreşte ca aceasta să nu fie mai mică decât valoarea asociată celei mai
bune soluţii descoperite până la momentul curent. Marginea superioară a funcţiei obiectiv
a unei configuraţii cu primele k componente egale cu cele din x(k)se defineşte astfel:
f*(x(k))=max(f(x1,x2,...,xk,yk+1,...,yn)).
Pentru o problemă de minimizare, se estimează marginea inferioară a funcţiei obiectiv
şi se urmăreşte ca aceasta să nu fie mai mare decât valoarea asociată celei mai bune
soluţii descoperite până la momentul curent. Marginea inferioară a funcţiei obiectiv a
unei configuraţii cu primele k componente egale cu cele din x(k)se defineşte astfel:
f*(x(k))=min(f(x1,x2,...,xk,yk+1,...,yn)).
O soluţie parţială este abandonată fie dacă nu satisface restricţiile (comun cu
Backtracking), fie (specific Branch and Bound) dacă marginea superioară a funcţiei
obiectiv este mai mică decât cea mai bună valoare a unei soluţii obţinute deja (pentru

58
Tehnici avansate de programare 2017-2018
Cap. 2
probleme de maximizare) sau dacă marginea inferioară a funcţiei obiectiv este mai mare
decât cea mai bună valoare a unei soluţii obţinute deja (pentru probleme de minimizare).

Aplicaţie. Problema discretă a rucsacului cu tehnica Branch and Bound


Se consideră un rucsac care se poate umple cu o greutate maximă G. Având la dispoziţie
un set de n obiecte pentru care se cunosc greutatea (gi, i=1,n) şi valoarea (vi, i=1,n), să se
selecteze un subset de obiecte astfel încât greutatea totală a obiectelor selectate să nu depăşească
greutatea maximă admisă G, iar valoarea totală a obiectelor selectate să fie maximă.
Problema discretă a rucsacului presupune că obiectele nu pot fi fracţionate (un obiect se
selectează doar în întregime).

Formularea problemei de optimizare:


Se caută (s1,s2,...,sn) cu si{0,1} astfel încât:
𝑓(𝑠1 , … , 𝑠𝑛 ) = 𝑓(𝑠(𝑛) ) = ∑𝑛𝑖=1(𝑠𝑖 ∙ 𝑣𝑖 ) – 𝑚𝑎𝑥𝑖𝑚ă (maximizarea funcţiei obiectiv)

şi ∑𝑛𝑖=1(𝑠𝑖 ∙ 𝑔𝑖 ) ≤ 𝐺 (restricţie)

Fiecărei soluţii parţiale s(k)=(s1,s2,s3,...,sk) i se asociază o margine superioară


(fiind vorba de o problemă de maximizare) reprezentând valoarea care s-ar obţine dacă zona
liberă din rucsac ar fi ocupată cu cel mai avantajos obiect neselectat încă.
𝑘 𝑘

𝑣𝑖
𝑓 (𝑠(𝑘) ) = ∑(𝑠𝑖 ∙ 𝑣𝑖 ) + (𝐺 − ∑(𝑠𝑖 ∙ 𝑔𝑖 )) ∙ 𝑚𝑎𝑥𝑖=𝑘+1,..𝑛 ( )
𝑔𝑖
𝑖=1 𝑖=1

Exemplu. n=4, G=4


g v
1 8
2 14
3 15
2 10

Observaţii:
- Tehnica Greedy ar conduce la soluţia: (1,1,0,0), adică se selectează obiectele 1 şi 2,
obţinându-se o valoare de 22.

59
Tehnici avansate de programare 2017-2018
Cap. 2
- Raportul valoare/greutate pentru cele 4 obiecte: (8, 7, 5, 5). În cazul tehnicii Branch
and Bound, ordonarea obiectelor descrescător în funcţie de raportul valoare/greutate
nu este obligatorie, dar poate facilita identificarea mai rapidă a unei prime soluţii
considerate apoi de referinţă (optim curent).
Arborele de decizie corespunzător parcurgerii spaţiului soluţiilor este cel de mai jos, cu
observaţiile:
- Fiecare nod conţine mulţimea de obiecte selectate deja, spaţiul disponibil din rucsac Gr şi
marginea superioară a valorii totale f*;
- Alte notaţii:
fmax - valoarea corespunzătoare celei mai bune soluţii descoperite deja. fmax se
actualizează de fiecare dată când se găseşte o soluţie mai bună;
X – configuraţie abandonată din cauză că nu satisface restricţia (obiectul nu încape în
rucsac);
o linie roşie - configuraţie abandonată din cauză că marginea superioară este mai
mică decât valoarea corespunzătoare celei mai bune soluţii descoperite deja.

s1=1 s1=0

{o1} Ø
Gr=3,f*=29 Gr=4, f*=28
s2=1 s2=0 s2=1 s2=0

{o1,o2} {o1} {o2} Ø


Gr=1,f*=27 Gr=3, f*=23 Gr=2,f*=24 Gr=4,f*=20

s3=1 s3=0 s3=1 s3=0 s3=1 s3=0

X {o1,o2} {o1,o3} {o1} X {o2}


Gr=1,f*=27 Gr=0, Gr=3,f*=23 Gr=2,f*=24
fmax =23
s4=1 s4=0 s4=1 s4=0
X {o1,o2} {o2,o4} {o2}
Gr=1, fmax =22 Gr=0, fmax =24 Gr=2,f*=14

60
Tehnici avansate de programare 2017-2018
Cap. 2
Algoritmul general Branch and Bound (BB) recursiv
Notaţii:
- k – nivel;
- s(k) – soluţia parţială (s1,s2,s3,...,sk);
- f(s(k)) – valoarea funcţiei obiectiv corespunzătoare soluţiei s(k);
- fmax – valoarea funcţiei obiectiv pentru soluţia optimă curentă;
- 𝑓 ∗ (𝑠(𝑘) ) – margine (superioară sau inferioară) pentru funcţia obiectiv;
- Ak – mulţimea de valori corespunzătoare componentelor soluţiei;
- mk – cardinalul mulţimii Ak.

BB(k)
daca s(k-1)=(s1,s2,...,sk-1) este solutie atunci
daca f(s(k-1))>fmax atunci
sol ←(s1,s2,s3,...,sk-1)
fmax ← f(s(k-1))
altfel
pentru j←1,mk executa
sk←Ajk
daca valid(s1,s2,...,sk) atunci //conditii de continuare

calculeaza limita 𝑓 ∗ (𝑠(𝑘) )


ordonare solutii in functie de valorile limita
pentru fiecare solutie fezabila executa
daca 𝑓 ∗ (𝑠(𝑘) ) > fmax atunci
BB(k+1)

Observaţii:
 algoritmul BB este descris pentru o problemă de maximizare;
 se presupune că sol şi fmax sunt variabile globale, fmax fiind iniţializat cu o valoare cât
mai mică;
 algoritmul BB se apelează pentru primul nivel k=1.

61
OPTIMIZARE MULTIOBIECTIV (MULTICRITERIALĂ)

Un exemplu de problemă uniobiectiv: O grindă trebuie sudată de altă grindă astfel


încât să poată suporta la capătul liber o anumită forţă de încărcare conform figurii.

Se cere determinarea valorilor a doi parametri de


proiectare:
b - grosimea grindei
t - înălţimea grindei
astfel încât îndoirea grindei la capătul liber, dată prin
funcţia f(x):
f(x)=2.1952/(t3b)
să fie minimă şi să respecte restricţiile:
0.125 ≤ b ≤ 5.0, 0.1 ≤ t ≤ 10.0 (adaptare după [8]).
Aici, x=(b,t).

O problemă de optimizare uniobiectiv constă în căutarea unei soluţii x∈ X pentru


care funcţia obiectiv, f(x), are valoare extremă (maximă sau minimă).

În acest caz, a compara două soluţii-candidat, x(1) şi x(2), înseamnă a compara


valorile lor obiectiv, f(x(1)) şi f(x(2)).

Multe probleme reale implică însă optimizarea simultană a mai multor obiective,
adesea conflictuale, şi un spaţiu de căutare complex şi, de regulă, foarte dificil de
explorat prin metode exacte, enumerative, deoarece conţine foarte multe posibile
soluţii:

- plasate în regiuni greu accesibile sau

- având proprietăţi care încetinesc găsirea soluţiilor.

În aceste cazuri, se caută mai multe soluţii-compromis.

1
1. Probleme de optimizare multiobiectiv (POM)

Un exemplu de problemă multiobiectiv: Aceeaşi grindă trebuie sudată astfel încât să


poată suporta la capătul liber o anumită forţă de încărcare, dar costul asociat să fie
minim. În aceste condiţii, se cere determinarea valorilor a patru parametri de proiectare:

h - grosimea sudurii
b - grosimea grindei
l - lungimea sudurii
t - înălţimea grindei
care să satisfacă simultan două obiective:
cost minim, dat prin funcţia f1(x):
f1(x)=1.10471h2l + 0.04811tb(14.0+l)
îndoire minimă a grindei la capătul liber, dată prin funcţia f2(x);
f2(x)=2.1952/(t3b)
şi să respecte restricţiile:
0.125 ≤ h, b ≤ 5.0
0.1 ≤ l, t ≤ 10.0
h ≤ b. [8]

Un alt exemplu de problemă multiobiectiv de design ingineresc care ilustrează


dificultatea acestor probleme găsiţi in Deb, K., Tiwari, S., Multi-Objective optimization of
a leg Mechanism using Genetic Algorithms, KanGAL Report no. 2004005, 2005,
http://www.iitk.ac.in/kangal/papers/k2004005.pdf.

2
O problemă de optimizare multiobiectiv se defineşte printr-o mulţime de n
parametri (variabile de decizie, variabile de optimizat), o mulţime de k funcţii obiectiv şi
o mulţime de m restricţii. Funcţiile obiectiv şi restricţiile sunt funcţii de variabile. Scopul
optimizării este de a

minimiza y = f(x) = (f1(x),f2(x),…,fk(x)),

respectând restricţiile e(x) = (e1(x),e2(x),…,em(x)) ≤ 0,

unde x = (x1,x2,…,xn) ∈X, y = (y1,y2,…,yk) ∈Y.

Mulţimea fezabilă Xf este, evident, mulţimea soluţiilor-candidat x care satisfac


restricţiile e(x) ≤ 0.

În exemplul anterior sunt 4 parametri sau variabile de optimizat (x=(h,b,l,t)), doua


funcţii obiectiv (f1(x) şi f2(x)) şi 7 restricţii.

 În problemele de optimizare uniobiectiv, mulţimea fezabilă este total ordonată


în raport cu funcţia obiectiv f, pe când în problemele de optimizare
multiobiectiv, Xf este, în general, parţial ordonată în raport cu funcţiile obiectiv f.

Elemente definitorii pentru POM:

• Existenţa mai multor criterii, adesea conflictuale şi incomensurabile, care trebuie


îndeplinite simultan

• Înţelegerea parţială teoretică a spaţiului soluţiilor

• existenţa variabilelor de decizie multiple care interacţionează între ele, având


valori întregi sau/şi reale

• Lipsa cunoştinţelor apriori referitoare la spaţiul de căutare

3
• Existenţa adeseori a restricţiilor dure

• Un spaţiu de căutare care creşte exponenţial o dată cu creşterea dimensiunii


problemei

• Existenţa mai multor soluţii optimale

• Complexitatea dezvoltării modeluluide optimizare

• Pentru instaţele mari se dovedesc mai practice metodele euristice de rezolvare

Cum să evaluăm soluţiile care implică obiective multiple?

În optimizarea multiobiectiv, una dintre cele mai dificile probleme este chiar
evaluarea calităţii soluţiilor, din cauza naturii incomensurabile sau/şi conflictuale a
anumitor obiective (criterii).

Alternativele abordate de-a lungul timpului

(1) Cel mai natural (deşi nu simplu) mod de tratare a obiectivelor multiple este
agregarea(combinarea) acestora într-unul singur şi considerarea problemei
drept problemă uniobiectiv.

Agregarea presupune combinarea obiectivelor într-un scalar, folosind fie o funcţie


de agregare pe baza unor ponderi care semnifică preferinţele, fie pe baza unei relaţii
matematice pe care inginerul de cunoştinţe din domeniu o recomandă, conform
experienţei.

Pentru exemplul grinzii, câteva posibilităţi de agregare pot fi următoarele:

f(x)=f1(x) + f2(x)*10000 care se cere minimizată

f(x)=4f1(x) + f2(x)*1000 care se cere minimizată

f(x)=0.3*f1(x) +0.7*f2(x)*10000 care se cere minimizată

4
Dezavantajele acestei abordări sunt:

- obiectivele parţiale sunt adesea incomensurabile sau greu cuantificabile, iar


agregarea eficientă şi realistă a reprezentărilor matematice ale acestora este
imposibilă sau dificilăsoluţiilor le lipseşte diversitatea.

- anumite tehnici de rezolvare care tratează separat obiectivele au demonstrat


performanţa mai bună a soluţiilor identificate, comparativ cu cazul agregării
obiectivelor.

- problemele de optimizare multiobiectiv complexe impun tratarea separată a


obiectivelor.

(2) Alternarea obiectivelor(metoda restricţiilor), prin care se optimizează alternativ


câte un criteriu, celelalte devenind restricţii. Dificultatea acestei abordări constă
în stabilirea ordinii adecvate de optimizare a criteriilor;

(3) Evaluarea prin dominanţă Pareto. Pentru fiecare soluţie se determină, pe baza
dominanţei, rangul care determină performanţa relativă la calitatea întregii
populaţii de soluţii.

(4) Variante relaxate ale evaluării prin dominanţă Pareto, similare evaluării prin
dominanţă Pareto, dar care permit detrimentul unuia sau mai multor obiective.
5
Un exemplu de mecanism de acest tip este determinarea utilităţii marginale a
soluţiilor-candidat (în contextul identificării regiunilor de tip „cot” de pe
frontiera optimă Pareto).

2. Dominanţă şi optim Pareto

Vilfredo Pareto, 1896

În contextul bunăstării sociale, o decizie este de tip Pareto daca ea conduce la


îmbunătăţirea situaţiei unui individ fără ca acest lucru să implice înrăutăţirea situaţiei
altor indivizi. La nivel ideal, un sistem economic este Pareto optimal dacă toţi indivizii au
o bunăstare maximă (nu există nici un individ care poate avea o stare mai bună, dar
aceasta implicând degradarea stării altuia).

Analiza contextului economico-social din aceasta perspectiva se poate extinde si


asupra domeniului optimizarii.

Definiţiile următoare se dau pentru cazul minimizării tuturor funcţiilor obiectiv.

Definiţia 1. x(1) domină x(2) dacă sunt adevărate următoarele două condiţii:

x(1) nu este mai slabă decât x(2) în nici un obiectiv, adică x(1)i ≤ x(2)i, ∀i∈{1,2,…,k};

x(1) este strict mai bună decât x(2) în cel puţin un obiectiv, adică

∃i∈{1,2,…,k} a.î. x(1)i <x(2)i. (1)

Dacă x(1) domină x(2) se spune şi că x(2) este dominată de x(1).

În consecinţă, pentru oricare două soluţii-candidat considerate,

6
• fie una domină pe cealaltă (este mai bună decât cealaltă considerând toate
obiectivele),

• fie cele două nu se pot compara (nu există o relaţie de dominanţă între ele).

Exemplu. Să considerăm două soluţii candidat ale unei probleme cu treiobiective


care se cer minimizate, ale căror valori obiectiv sunt:
f0(x(1)) = y(1)0 = 48.05 f0(x(2)) = y(2)0 =49.25
f1(x(1)) = y(1)1 = 9 f1(x(2)) = y(2)1 = 11
f2(x(1)) = y(1)2 =15.2 f2(x(2)) = y(2)2 =15.2

Prin compararea bazată pe dominanţă Pareto a primei soluţii, x(1), cu a doua, x(2),
rezultă că prima o domină pe a doua, deoarece toate valorile sale obiectiv nu sunt mai
slabe decât cele ale celei de a doua soluţii şi în cel puţin un obiectiv (primul şi al doilea)
prima soluţie este mai bună (are valori obiectiv mai mici).

În schimb, soluţiile candidat:


f0(x(1)) = y(1)0 = 48.05 f0(x(2)) = y(2)0 =49.25
f1(x(1)) = y(1)1 = 9 f1(x(2)) = y(2)1 = 10
f2(x(1)) = y(1)2 =16.2 f2(x(2)) = y(2)2 =15.8

nu se află în relaţie de dominanţă, nu se pot compara, deoarece în primele două


obiective prima soluţie este mai bună, dar în al treilea obiectiv a doua este mai bună. În
lipsa unei informaţii despre preferinţa pentru un obiectiv anume, ambele soluţii vor fi la
fel de „bune”.

Definiţia 2. O soluţie-candidat x∈Xse numeşte nedominată relativ la o mulţime


A⊆X dacă şi numai dacă !∃ a∈A a.î. a domină x.

7
Definiţia 3.Fie A⊆ Xf. Mulţimea

p(A) = {a ∈ A a este nedominată relativ la A}


este mulţimea nedominată relativ la A.

Definiţia 4. Soluţia-candidat x este optimă Pareto dnd este nedominată relativ la X.

*******************************************************************

Altfel spus, o soluţie-candidat este optimă Pareto dacă nu poate fi îmbunătăţită în


nici un obiectiv fără a cauza o degradare în cel puţin un alt obiectiv.

O îmbunătăţire Pareto are loc atunci când o modificare a unei soluţii-candidat are
drept consecinţă îmbunătăţirea a cel puţin unui obiectiv fără a produce degradarea
niciunui alt obiectiv. Când nu se pot face astfel de îmbunătăţiri asupra unei soluţii-
candidat (teoretic vorbind) înseamnă că aceasta este soluţie optimă Pareto.

******************************************************************

Definiţia 5. Xp = p(Xf) se numeşte mulţimea optimă Pareto(MOP).

Adica punctele (soluţiile-candidat) din MOP sunt acele puncte care nu sunt
dominate de nici un alt punct din mulţimea fezabilă.

 În general nu există o singură soluţie optimă Pareto a unei probleme, ci o


mulţime de soluţii optime Pareto. Nici una dintre ele nu poate fi identificată ca
fiind mai bună decât altele din această mulţime, în lipsa unei informaţii de
preferinţă pentru un anume obiectiv.

8
Definiţia 6. Fie A ⊆ Xf . f(p(A)) este frontiera nedominată relativ la A.

Definiţia 7. Mulţimea Yp = f(Xp) se numeşte frontiera optimă Pareto(FOP).

Altfel spus, soluţiile optime Pareto formează mulţimea optimă Pareto(MOP), iar
vectorii obiectiv corespunzători formează frontiera optimă Pareto(FOP).

Exemplu. Considerăm 8 soluţii-candidat ale unei probleme biobiectiv care se cer


minimizate, soluţii ale căror valori obiectiv sunt:
punct
(x) f1(x) f2(x)

0 4 14

1 7 8

2 14 10

3 9 11

4 16 18

5 12 25
MOP = {0,1,6}
6 10 5

7 23 12

Frontiera optimă Pareto este marcată pe desen.Celelalte mulţimi de puncte


reprezintă valorile obiectiv ale punctelor care sunt dominate, impărţite în cele două
frontiere de dominanţă.

Exemplu. Considerăm 8 soluţii-candidat ale unei probleme cu 6 obiective care se cer


minimizate, soluţii ale căror valori obiectiv sunt:

9
punct
(x) f1(x) f2(x) f3(x) f4(x) f5(x) f6(x)

0 4 14 130 21 14 130

1 7 8 122 15 13 85

2 14 10 100 22 14 95 MOP = {0,1,2,5,6}

3 9 11 160 35 24 112

4 16 18 230 43 13 125

5 12 25 96 28 20 200

6 10 5 88 32 17 120

7 23 12 235 33 17 250

(a) (b)

Fig. 1. Exemplu ilustrativ al optimalităţii Pareto şi al relaţiei de dominanţă pentru un spaţiu obiectiv
bidimensional, pentru o problemă de minimizare
optimalitate Pareto în spaţiul obiectiv; (b) relaţia de dominanţă faţă de punctul C

În fig. 1(a), soluţia reprezentată de punctul C este mai bună decât soluţia
reprezentată de punctul D deoarece ambele valori obiectiv asociate lui C sunt mai mici
decât cele asociate lui D. Punctul E reprezintă o îmbunătăţire comparativ cu C numai

10
într-un obiectiv (f1). Soluţia reprezentată de A este mai bună decât cea reprezentată de
C, cea reprezentată de C mai bună decât cea reprezentată de D, deci punctul A
reprezintă o soluţie mai bună decât punctul D (proprietatea de tranzitivitate a relaţiei de
dominanţă).

În fig. 1 (b), dreptunghiul din stânga jos reprezintă regiunea din spaţiul obiectiv care
domină soluţia-candidat reprezentată de C. Dreptunghiul din dreapta sus include vectorii
obiectiv ale căror soluţii-candidat sunt dominate de soluţia asociată lui C. Toate soluţiile
pentru care vectorul obiectiv rezultat nu se află în nici una dintre aceste regiuni sunt
indiferente faţă de soluţiile reprezentate de C – nu se pot compara.

Punctul A este unic prin aceea că soluţia-candidat corespondent, a, nu este


dominată de nici o altăsoluţie-candidat.

Definiţia 8. Fie o mulţime soluţii-candidat A⊆X. Mulţimea A se numeşte mulţime


optimă Pareto locală dacă şi numai dacă:

∀a∈A , !∃x∈X a.î. x domină a∧x−a<ε şi f(x) – f(a)<δ,

unde . este o metrică, iar ε> 0, δ> 0 valori foarte reduse.

Cu alte cuvinte, A conţine acele soluţii-candidatcare nu sunt dominate de soluţiile-


candidatdintr-o vecinătate redusă, în spaţiul obiectiv.

Fig. 2. Ilustrarea unei FOP şi a unei FOP locale într-un spaţiu obiectiv bidimensional,
pentru o problemă de minimizare

11
Definiţia 9. Mulţimea A⊆Xse numeşte mulţime optimă Pareto globală dacă şi
numai dacă:

∀a∈A, !∃x∈X a.î. x domină a.

 Mulţimea soluţiilor nedominate se defineşte în contextul unei mostre a spaţiului


de căutare (prin compararea unui set de puncte), iar mulţimea optimă Pareto
(globală) este formată din soluţiile-candidat nedominate considerând întreg
spaţiul de căutare.
 Fiecare mulţime optimă Pareto globală este şi o mulţime optimă Pareto locală.
 Pentru un decident, rezultatul ideal al unei optimizări multiobiectiv este o
caracterizare a tuturor regiunilor interesante ale modelului. Fiecare regiune
reprezintă o alegere anume, cu performanţe diferite în fiecare dintre obiective şi
conţine un număr de soluţii, fiecare reprezentând un compromis particular între
acele obiective.
 Pe baza dominanţei Pareto se poate introduce şi criteriul de optimalitateal
problemei de rezolvat.

3. Tehnici de optimizare pentru rezolvarea problemelor de optimizare


multiobiectiv

O tehnică de optimizare multiobiectiv este o metodă de generare a frontierei


optime Pareto pentru o clasă de probleme multiobiectiv.
La momentul actual, există peste 30 de metode pentru optimizarea multiobiectiv.
Majoritatea tind să genereze elemente ale frontierei optime Pareto pe rând, una câte
una. În plus, multe dintre ele sunt foarte sensibile la forma (caracteristicile) frontierei

12
Pareto; spre exemplu, pot să nu funcţioneze dacă frontiera optimă Pareto este
discontinuă sau multimodală.
Deoarece dimensiunea spaţiului de căutare creşte odată cu numărul de obiective,
metodele de optimizare multiobiectiv sunt majoritatea metode aproximative (metode de
aproximare).

Tehnicile de aproximare clasice, tradiţionale de regulă agregă obiectivele într-o


singură funcţie obiectiv parametrizată, iar parametrii nu sunt stabiliţi de decidentul
uman, ci sunt variaţi sistematic de către optimizor. Se rulează câteva optimizări cu diferiţi
parametri pentru a obţine o mulţime de soluţii care aproximează mulţimea optimă
Pareto. Această procedură este independentă de algoritmul de optimizare aflat la bază.
Asemenea metode sunt:
• metoda sumelor ponderate (Cohon, 1978) sau agregarea obiectivelor într-
unul singur,
• metoda restricţiilor (Cohon, 1978) sau alternarea obiectivelor,
• programarea scopurilor (goal programming, Steuer, 1986)
• abordarea minimax (Koski, 1984)

Metodele tradiţionale de aproximare prezintă numeroase dezavantaje:


• convergenţa la o soluţie optimă depinde de soluţia iniţială aleasă
• majoritatea problemelor tind să se oprească la o soluţie suboptimală
• un algoritm eficient într-o problemă poate să nu fie eficient în rezolvarea altei
probleme
• metodele sunt ineficiente în problemele cu variabile discrete
• algoritmii nu pot fi eficient folosiţi pe o maşină paralelă

13
• multe probleme reale necesită simularea cu ajutorul unui produs software
pentru determinarea funcţiei obiectiv şi a restricţiilor, fapt care consumă
timp
• sunt sensibile la convexitatea şi continuitatea regiunilor optime Pareto
• este necesară aplicarea algoritmului de mai multe ori pentru a găsi soluţii
optimale Pareto multiple
• majoritatea algoritmilor necesită informaţii suplimentare despre problemă
• distribuirea soluţiilor optime Pareto depinde de eficienţa optimizorului cu un
singur obiectiv
• sunt inadecvate problemelor cu incertitudini sau informaţii stocastice şi celor
cu spaţiu de căutare discret.

Pentru multe aplicaţii nu este posibilă generarea de soluţii nedominate, cu atât mai
mult a întregii mulţimi optime Pareto. Aşadar, scopul optimizării multiobiectiv poate fi
reformulat într-un mod mai general, având două obiective:
- minimizarea distanţei dintre frontiera nedominată rezultată şi frontiera optimă
Pareto
- realizarea unei distribuţii bune (ideal uniformă) a soluţiilor găsite: maximizarea
împrăştierii punctelor pe frontiera nedominată obţinută, adică pentru fiecare obiectiv
trebuie acoperit un interval larg de valori de către soluţiile nedominate.

În contextul optimizării multiobiectiv, restricţiile pot cauza obstacole unei tehnici de


optimizare în converegerea la regiunea optimală Pareto reală, şi dificultăţi menţinerii
unei mulţimi diverse de soluţii optimale Pareto.
Metodele clasice necesită rulări repetate pentru a obţine o aproximare a mulţimii
optime Pareto, rulări care sunt efectuate separat, neputând fi exploatată sinergia. În
schimb, tehnicile aleatoare ghidate (euristicile şi metaeuristicile), pot manipula la

14
fiecare iteraţie câte o soluţie unică (completă sau incompletă) sau chiar câte o colecţie
de soluţii.
Tehnici de optimizare (de aproximare) aplicabile în cazurile multiobiectiv:
- căutare locală iterativă
- Simulated annealing
- Tabu search
- ACO (Ant Colony Optimization)
- algoritmi evoluţionişti, algoritmi genetici
- Particle Swarm Optimization
- alte metode bazate pe model

15
TEHNICI DE OPTIMIZARE. CLASIFICARE

O tehnică de optimizare se defineşte ca fiind o metodă de identificare a celui mai bun


element (disponibil) dintr-o mulţime.
PERSPECTIVE

TEHNICI EXACTE TEHNICI NUMERICE


TEHNICI DE
TEHNICI APROXIMATIVE OPTIMIZARE TEHNICI ANALITICE

TEHNICI CONVENȚIONALE

TEHNICI NECONVENȚIONALE

Edelbaum (1962) a pus accentul pe distincţia dintre optimizarea directă (numerică) şi


optimizarea indirectă (analitică).
Tehnicile directe de optimizare, numite şi metode numerice de optimizare, ajung la
soluţie într-o manieră iterativă, la fiecare pas sperându-se îmbunătăţirea valorii funcţiei
obiectiv. Dacă acest lucru nu se poate garanta, procesul devine unul de tip încercare -
eroare. Strategia folosită pentru deplasarea prin spaţiul de căutare de la o iteraţie la
următoarea distinge algoritmii iterativi între ei. Majoritatea folosesc valorile funcţiei
obiectiv şi restricţiile; alţii folosesc în plus şi derivatele acestora, alţii acumulează informaţii
din iteraţiile anterioare, iar alţii folosesc numai informaţii locale relative la punctul curent.
În special pentru funcţiile obiectiv statice, nestocastice, nediscrete, fără restricţii se
pretează metodele directe de optimizare parametrică matematică.
O procedură indirectă (analitică) se bazează pe analiza proprietăţilor speciale ale
funcţiei obiectiv la poziţia extremului şi de obicei se folosesc derivatele acesteia. Spre
deosebire de optimizarea numerică, optimul se atinge într-un singur pas, fără teste sau
1
încercări, însă nu întotdeauna funcţia obiectiv are o formă analitică (cunoscută) care, în
plus, să fie şi derivabilă.
Se știe că extremul unei funcții se atinge în puncte în care valoarea derivatei sale este
zero. Numai că astfel de valori se ating și în alte puncte, care nu sunt puncte de extrem,
lucru care face necesară analiza mai detaliată a funcției de optimizat.
În timp ce metodele directe sunt lente şi necesită multe evaluări de funcţii pentru a
converge la soluţii, cele indirecte converg mai rapid la soluţii, dar, după cum s-a precizat,
nu sunt aplicabile problemelor cu funcţii obiectiv discontinue sau nediferenţiabile.
Pentru marea majoritate a problemelor de optimizare din lumea reală, funcţiile
obiectiv sunt discontinue sau nediferenţiabile. Acest fapt, alături de utilitatea foarte mare
pe care calculatoarele o au în rezolvarea rapidă a problemelor dificile a făcut ca metodele
iterative (numerice) să câştige foarte mult teren, atât în teoria optimizării cât şi în
aspectele de ordin practic.
Teoria algoritmilor iterativi prezintă trei aspecte, ce se suprapun într-o oarecare
măsură:
- dezvoltarea algoritmului propriu–zis (bazată pe problema particulară, structura sa
inerentă şi eficienţa (performanţa) calculatoarelor numerice);
- verificarea că respectivul algoritm generează un şir care converge la punctul soluţie
(convergenţa globală);
- viteza sau rata convergenţei – se referă la cât de repede se apropie şirul de puncte
investigate de soluţie (convergenţa locală).

Când se compară doi algoritmi liniar convergenţi, cu cât este mai mică rata de
convergenţă, cu atât algoritmul este mai rapid.

2
De ce avem nevoie de mai mulţi algoritmi de optimizare?
Spațiile de căutare sunt de o diversitate foarte mare și fiecare caracteristică a
acestora face anumiți algoritmi mai adecvați.

Optimizare locală. Optimizare globală


Definiţie (pentru cazul de minimizare a funcţiei obiectiv f). Un punct x*  X se
numeşte punct de minim local (minim relativ) al lui f peste X dacă

  0 a.î. f ( x)  f ( x*), x  X | x  x* |  .

Cu alte cuvinte, x* este punct de minim local dacă există o vecinătate a lui x* în care
acesta este minim. În fig. se observă patru puncte de minim local.

3
Optimizarea locală presupune căutarea de soluţii optime locale ale unei probleme.
Cei mai rapizi algoritmi caută soluţii locale (puncte de optim local).

Definiţie (pentru cazul de minimizare a funcţiei obiectiv f). Un punct x*  X se


numeşte punct de minim global (minim absolut) al lui f peste X dacă

f ( x)  f ( x*), x  X .
Punctul de minim global este, aşadar, punctul cu cea mai redusă valoare a funcţiei
obiectiv dintre toate punctele de minim local.

Optimizarea globală presupune căutarea de soluţii optime globale.


Gradul de dificultate al problemelor de optimizare globală creşte rapid odată cu
creşterea dimensiunii variabilelor.

De regulă, condiţiile şi soluţiile globale pot fi obţinute doar dacă funcţia obiectiv
posedă anumite proprietăţi de convexitate ce garantează că orice optim relativ este global.

Când se abordează o problemă, se presupune implicit că interesează optimele


globale. Însă realitatea numerică, cât şi cea teoretică, mai ales în cazul problemelor dificile
şi de mari dimensiuni, dictează că adeseori trebuie să ne mulţumim cu puncte de optim
local.

MathWorks – Global Optimization Toolbox

O altă abordare a clasificării tehnicilor de optimizare, care are în vedere distincţia


“optim local - optim global” în contextul dificultăţii majorităţii problemelor reale, este
următoarea:

- tehnici exacte de optimizare (care returnează soluţia sau soluţiile exacte, optime
globale, ale problemelor)
- tehnici aproximative de optimizare (care nu garantează identificarea soluţiei /
soluţiilor exacte). Acestea se aplică atunci când algoritmii exacţi nu pot da soluţia / soluţiile
optime globale într-un timp rezonabil. Atunci se sacrifică precizia pentru a reduce timpul
de execuţie.

4
Teoria convergentei globale a algoritmilor nu este valabilă în cazul căutărilor
aproximative în locul celor ideale, exacte.

Schema de clasificare a tehnicilor exacte de optimizare:

Tehnici exacte de optimizare

strategii
de descompunere
Tehnici enumerative Tehnici bazate pe calcul relaxare
lagrangeiană

ghidate neghidate metode directe metode indirecte

branch & bound euristic programare


(best-first) dinamică

Tehnicile enumerative neghidate, numite şi metode oarbe de căutare (blind search)


sau căutare neinformată sau căutare brută (brute-force search) sau căutare de tip
„generează şi testează” sunt tehnici generale de căutare, folosite şi în optimizare, care
constau în enumerarea sistematică a tuturor soluţiilor fezabile din spațiul de căutare şi
verificarea de către fiecare a satisfacerii cerinţelor problemei (extremizarea funcței
obiectiv în cazul optimizării).
Acestea sunt în principal căutări în arbori:
 căutare pe nivel (când optimalitatea constă în număr minim de componente ale
soluției),
 căutare de cost uniform,
 căutare în adâncime cu nivel iterativ (când costul este o funcţie nedescrescătoare
în adâncimea nodurilor)

Chiar căutarea în adâncime (limitată), împreună cu varianta sa, backtracking, și


căutarea bidirecţională pot fi folosite în optimizare pentru enumerarea tuturor soluțiilor

5
fezabile care, comparate pe baza valorii funcției lor obiectiv, vor permite identificarea celei
mai bune (soluția optimă). Deși pot găsi astfel soluțiile unei probleme de optimizare,
acestea nu sunt considerate tehnici propriu-zise de optimizare.
Majoritatea problemelor reale au însă dimensiuni prea mari a.î. numărul de soluţii
fezabile depăşeşte limita admisă de timp de calcul. Prin urmare, în astfel de cazuri, se
caută metode sau euristici pentru a restrânge spaţiul în care se caută soluţiile.

Tehnicile enumerative ghidate realizează o căutare informată (ghidată de euristici).


Algoritmii branch and bound (“ramifică şi mărgineşte”) sunt proceduri enumerative
de căutare bazate pe construirea unui arbore de soluţii parţiale care conţine întreaga
mulţime a soluţiilor fezabile ca frunze, celelalte noduri reprezentând soluţii parţiale.
Modul de traversare a arborelui de către algoritm este guvernat de două scheme: una de
ramificare şi una de mărginire. Prima decide ce operaţii pot urma unui nod dat, iar a doua
limitează căutarea prin „retezarea” unor mari părţi ale arborelui înainte de a le explora
explicit.
Schema de mărginire foloseşte o margine superioară globală pentru cea mai bună
soluţie posibilă (de obicei, înainte de începerea căutării se construieşte o margine
superioară iniţială folosind o euristică), iar pentru fiecare nod o margine inferioară locală a
calităţii soluţiilor din subarborele nodului. Construirea de margini superioare adecvate
pentru noduri este crucială pentru eficienţa algoritmului, deoarece aceasta determină
algoritmul să nu traverseze inutil întregul arbore.
Metoda Branch and Bound se poate folosi la rezolvarea problemelor cu obiective şi
restricţii liniare, care fac uz de mulţimi ordonate speciale.

Programarea dinamică se aplică problemelor de optimizare care satisfac


proprietatea de descompunere optimală: optimul general al problemei se formează din
soluţii optime de subprobleme. Altfel spus, optimul general implică optimul parţial sau
6
într-o secvență optimă de decizii sau alegeri, fiecare subsecvență trebuie să fie de
asemenea optimă.

Metodele enumerative (ghidate sau neghidate) pot identifica totalitatea soluţiilor


optime globale deoarece generează şi investighează toate soluţiile fezabile posibile, însă
resursele timp şi spaţiu necesare pentru aceasta sunt exagerat de mari1.

Tehnicilor exacte de optimizare li se asociază următoarele dezavantaje:


- lipsa unei perspective globale asupra problemei;
- ineficienţa în general pentru probleme cu variabile discrete;
- tendinţa de blocare la soluţii suboptimale, în condiţiile unor spaţii de căutare
dificile;
- dependenţa convergenţei la soluţia optimă de soluţia aleasă iniţial;
- ineficienţa în medii paralele de calcul;
- un algoritm eficient pentru o problemă poate să nu fie eficient pentru altele.

Tehnicile aproximative de optimizare sunt tehnici aleatoare ghidate şi sunt folosite


atunci când spaţiul de căutare al problemei este foarte mare sau / şi dificil de explorat cu
metodele exacte. În determinarea soluţiei (ideal optime, însă practic aproape-optime) se
face apel la o căutare aleatoare, însă ghidată, pentru a reduce numărul stărilor examinate,
fără a pierde însă soluţiile. Tehnicile de acest tip se diferenţiază între ele prin modul de
ghidare a căutării.
Schema de clasificare a tehnicilor aproximative de optimizare:

Metoda Metoda Metoda alpinistului


gradientului Newton (hill-climbing)

Greedy Tehnici aproximative de optimizare

Călirea simulată Căutare tabu Căutare locală Calcul ACO PSO WBM Sisteme
a metalelor (Tabu Search) iterativă evoluţionist imune
(Simulated Annealing) artificiale

1
ordinul de complexitate timp şi spaţiu este exponenţial în mărimea datelor de intrare
7
Metoda greedy construiește soluția pas cu pas, la fiecare pas fiind selectat (sau
"înghițit") în soluție elementul care pare cel mai bun la momentul respectiv, în speranța că
asta va duce la soluția optimă globală.
Metoda gradientului (crescător sau descrescător: gradient ascent / gradient descent)
este o metodă matematică de identificare a extremului unei funcţii, care foloseşte panta
curbei funcţiei obiectiv (dacă se cunoaşte derivata funcţiei obiectiv2).
Metodele gradient funcţionează pe probleme cu un singur optim. Pentru cele
multimodale, primul optim întâlnit în căutare va fi soluţia returnată; odată atins un optim
local, căutarea nu mai poate reveni.
Metoda Newton este o ameliorare a metodei gradientului.
Metoda alpinistului (hill-climbing search) este similară metodei cu gradient crescător,
neimpunând însă cunoaşterea puterii şi direcţiei gradientului – adoptă drept nouă soluţie
pe aceea care se dovedeşte mai calitativă decât cea curentă.
Călirea simulată a metalelor s-a propus pentru a permite tehnicii alpinistului să iasă
din optimele locale. Aceasta porneşte căutarea de la un punct aleator din spațiul de
căutare căruia îi aplică o modificare aleatoare. Dacă se ajunge într-o stare mai bună,
aceasta se acceptă. Dacă starea nu este mai calitativă, aceasta se acceptă cu o
probabilitate dependentă de iterație (probabilitate care scade pe măsura căutării).
Căutarea tabu reţine istoria soluţiilor-candidat considerate recent, memorate în aşa-
numita listă tabu, pentru a refuza revizitarea acestora un timp.

2 Pentru aplicarea metodei nu este necesară cunoaşterea funcţiei obiectiv, ci numai a derivatei
sale.
8
O a treia perspectivă din care pot fi privite tehnicile de optimizare este cea a
acceptării prin tradiție. Metodele convenționale sunt cele practicate în prima generație a
optimizării (cu instrumente matematice și/sau algoritmice):
 programarea dinamică
 metoda greedy
 metoda gradientului
 metodele Newton etc.
iar cele neconvenționale sunt metodele care constituie abordări mai noi:
 metoda alpinistului
 călirea simulată a metalelor
 căutarea tabu
 Ant Colony Optimization
 algoritmii evoluționiști etc.

Un algoritm de optimizare trebuie să fie caracterizat de:


- robusteţe: să opereze bine pe diverse probleme dintr-o anume clasă, pentru toate
alegerile rezonabile ale datelor de intrare;
- eficienţă: să aibă o complexitate timp şi spaţiu cât mai redusă;
- acurateţe: să nu prezintă sensibilitate la erori.

9
• Strategia de căutare iterativă a optimului se bazează pe
alegerea direcţiei de căutare.

* varianta pentru problemele de maximizare


Formula de avans de la un punct la următorul este

• Dacă panta tangentei este pozitivă, atunci avansul înseamnă


adăugarea unei valori la x(0).
• Dacă panta tangentei este negativă, atunci avansul înseamnă
scăderea unei valori din x(0).

Atunci când scopul este minimizarea funcţiei obiectiv, formula de


avans va fi următoarea:
• Identificarea gradientului în punctul curent şi folosirea sa în
căutare. Informaţia conţinută în gradient (care este în cazul
funcţiilor unidimensionale panta tangentei) este o euristică
pentru metoda de căutare, care-i permite deplasarea spre o
regiune mai bună din perspectiva funcţiei obiectiv.

• ! Metoda gradientului nu impune cunoaşterea funcţiei obiectiv f,


nici măcar calcularea valorii sale, dar presupune cunoaşterea
gradientului său, f’.
• Soluţia ideală se obţine când căutarea a ajuns pe
vârful graficului funcţiei.

• Criteriul de oprire a algoritmului de căutare:


• gradientul este zero.
• Alte criterii de oprire ?

• soluţie aproape optimă


• ! Punctele unde gradientul funcţiei
este zero (puncte staţionare), nu
sunt numai cele de maxim, pe
care le căutăm. Gradientul este
zero şi în punctele de minim şi în
punctele de inflexiune ale
funcţiei:
• Când ne interesează optimele în spaţii multidimensionale, x se
va înlocui cu vectorul x = (x1, x2, …, xn), iar panta f’(x) se va
înlocui cu gradientul funcţiei f în x. Acesta este un vector unde
fiecare element este panta funcţiei f în x pe dimensiunea
corespunzătoare:

• Aşadar, pentru atingerea maximului, algoritmul va “urca” în


toate dimensiunile simultan.
• Ce se întâmplă dacă funcţia este multimodală?
• durata de convergenţă

Pasul de deplasare creşte


în acord cu gradientul
curent, iar dacă panta
este abruptă, valoarea
pasului va fi prea mare
şi va forţa saltul pe
cealaltă parte a
graficului
Solutii ?

• estimarea unei valori adecvate pentru pasul de deplasare α

• ajustarea pasului de deplasare în funcţie de mărimea


gradientului - metoda Newton
• ajustarea pasului de deplasare în funcţie de mărimea
gradientului, adică amortizarea căutării când panta în punctul
curent se apropie de zero.

• Metoda foloseşte în plus informaţia despre variaţia pantei, adică


derivata de ordinul doi a funcţiei obiectiv f.
• Pentru cazul multidimensional, lucrurile se complică. Prima
derivată va fi gradientul, , iar a doua derivată va fi matricea
complexă care conţine derivatele parţiale de ordinul doi ale
funcţiei f pentru fiecare dimensiune, numită Hessian-ul funcţiei
f, Hf(x), care va trebui în plus inversată.
Avantaje:
• converge de regulă mai rapid decât metoda gradientului
• indică dacă s-a ajuns la un maxim (local sau global) şi nu la un
minim sau un punct de inflexiune, deoarece se ştie că în punctele
de maxim,

Punct critic:
• rămâne blocată în optimul găsit, ca şi metoda gradientului,
lucru care nu este folositor dacă funcţia este multimodală.
Solutii ?

• fie parametrul α se modifică cu o valoare suficient de mare;

• fie metoda Newton se aplică în mod repetat pornind de la


soluţii-candidat iniţiale diferite. Se va reţine în cele din urmă
soluţia cea mai bună dintre cele testate.
• pentru aceasta este necesară cunoaşterea funcţiei f.
• Dacă rulează suficient de mult timp, acest algoritm
devine un algoritm de optimizare globală.

• Optimalitatea globală este numai teoretică. Din


perspectiva practică, este foarte probabil că nu vom
găsi acel punct pentru care f’(x) este exact 0.
• ! În regiunile unde funcţia este plată, atât metoda gradientului
cât şi metodele Newton eşuează, pentru că aici informaţia de
ghidare lipseşte.
• În astfel de puncte - care destul de probabil nu sunt maximele
căutate - metodele sunt nevoite să oprească procesul căutării
fără a furniza o soluţie satisfăcătoare.

Solutii ?
Călirea simulată a metalelor (Simulated Annealing: SA)
Călirea simulată a metalelor îşi are originea în mecanica statistică. Este o generalizare
a algoritmului de ameliorare iterativă, o metodă de căutare aleatoare care exploatează
analogia cu modul în care un metal se răceşte şi se solidifică într-o structură de energie
minimă cristalină - procesul de călire.
În problemele de optimizare se caută obţinerea “echilibrului” unui sistem la o
anumită „temperatură”. Cea mai rapidă metodă pentru stabilirea echilibrului a fost
dezvoltată de Metropolis ş.a. (1953) şi constă în producerea de perturbaţii reduse ale
sistemului până la atingerea „echilibrului termic”, actualizarea noii stări depinzând de
ameliorarea faţă de starea anterioară perturbaţiei.
Algoritmul Metropolis a fost generalizat de Kirkpatrick ş.a. (1983) prin includerea
unei planificări a reducerii “temperaturii” în scopul unei căutări mai eficiente. În esenţă,
algoritmul SA este o secvenţă de iteraţii Metropolis aplicate unui şir descrescător de valori
ale parametrului de control numit şi parametru de „răcire” sau „temperatură” (β0 ≥ β1 ≥ β2
≥ … > 0), fiecare iteraţie finalizându-se la atingerea cvasi-echilibrului la „temperatura”
respectivă. Soluţia problemei de optimizare este reprezentată de configuraţia de
„îngheţare” – aceea pentru care nici o reducere a parametrului de control nu mai conduce
la o ameliorare a soluţiei curente.
SA de cele mai multe ori este folosită ca o metodă care permite tehnicilor de tip
alpinist să iasă din minimele locale. Porneşte căutarea de la un punct aleator şi realizează o
modificare aleatoare. Dacă se ajunge într-o stare mai bună, aceasta se acceptă. Dacă noua
stare nu este mai bună, aceasta se acceptă cu o probabilitate dependentă de timp (iteraţie a
algoritmului de optimizare). Probabilitatea este iniţial aproape de valoarea 1, după care
scade, analog răcirii metalelor în procesul cristalizării.
Pseudocodul asociat algoritmului SA:

t ← 0
x ← xt //selectează o soluţie-candidat iniţială x0
x* ← x //cea mai bună soluţie-candidat identificată
setează β0 //”temperatura” iniţială
repetă
1. selectează o soluţie-candidat r din V(xt)
2. dacă q(r) > q(xt) atunci xt+1 ← r
3. dacă q(r) > q(x*) atunci x* ← r
4. dacă q(r) ≤ q(xt) atunci
generează uniform aleator pe (0,1) un număr Ut
dacă Ut ≤ Pr(xt ,r) atunci xt+1 ← r
altfel xt+1 ← xt şi repetă pasii 1-4 de z ori sau până la
atingerea cvasi-echilibrului la temperatura βt
5.setează βt+1 ≤ βt
6. t ← t+1
cât timp criteriu_oprire = fals
returnează soluţia x*

1
Procedura selectează iniţial din spaţiul de căutare o soluţie-candidat folosind o
euristică oarecare. La fiecate iteraţie t se menţine o soluţie-candidat curentă xt şi cea mai
bună soluţie-candidat identificată până la iteraţia curentă, x*. Următoarea soluţie-candidat
curentă se caută în vecinătatea lui xt , V(xt), aleator sau în mod organizat, eventual
secvenţial. Dacă vecinul investigat r (obţinut prin generarea unei perturbaţii reduse a
configuraţiei curente xt) este mai calitativ decât xt , tranziţia algoritmului la această nouă
soluţie-candidat este necondiţionat acceptată, iar dacă depăşeşte în performanţă chiar şi
soluţia-candidat cea mai bună curentă, x*, se actualizează de asemenea şi aceasta. Dacă în
schimb vecinul investigat este mai slab decât soluţia curentă, tranziţia este acceptată cu
probabilitatea:
Pr(xt , r) = exp((q(r) - q(xt))/βt) (1)
Cu probabilitatea 1 - Pr(xt , r), r este respins în favoarea lui xt şi xt+1 rămâne xt .
Aceasta forma a probabilitatii s-a imprumutat din mecanica, unde
∆C

Pr(xt , r) = p = e
k BT
.
Aici, kB este constanta lui Boltzmann, iar T reprezinta temperatura utilizata in programul
de racire.
Tinand seama ca valoarea Pr(xt ,r) va trebui sa ia valori in (0,1), formula (1) va trebui
ajustata pentru fiecare problema in parte.
Criteriul de oprire a algoritmului constă în evaluarea condiţiei “nici o ameliorare a
soluţiei curente nu s-a mai produs timp de un număr dat de iteraţii” la valoarea adevărat
sau atingerea unui număr de iteraţii anterior specificat.
SA permite tranziţia la o soluţie mai slabă decât cea curentă pentru a oferi
posibilitatea de evitare a punctelor de optim local şi de identificare a soluţiilor mai bune în
viitor. Din moment ce parametrul β scade odată cu iteraţia t, probabilitatea de acceptare a
unei tranziţii care nu ameliorează soluţia curentă este mai redusă la iteraţiile mai târzii ale
căutării. Pe de altă parte, definirea probabilităţii de acceptare a unei tranziţii (relaţia (1))
asigură că este puţin probabilă acceptarea tranziţiei la o configuraţie semnificativ mai
slabă decât soluţia curentă.


Cheia în obţinerea unei performanţe bune cu metoda SA, ca dealtfel şi pentru
demonstrarea convergenţei globale, este reprezentată de atingerea unei distribuţii
staţionare (a unui cvasiechilibru) la fiecare “temperatură”, iar “răcirea” să se facă suficient
de lent, analog procesului de călire a metalelor (Mahfoud, 2000).
O procedură SA eficientă necesită următoarele elemente (Aarts ş.a, 1988):
- o definire suficientă a configuraţiilor (a soluţiilor-candidat);
- o schemă de generare a vecinătăţilor care să faciliteze tranziţii la soluţii mai
bune şi să iasă din optimele locale;
- o metodă rapidă de evaluare a soluţiilor vecine unei soluţii particulare;

2
- un program eficient de “răcire”. Programul de răcire se specifică prin
“temperatura” iniţială şi prin regulile de direcţionare a căutării (numărul de
iteraţii de realizat la fiecare “temperatură”, rata de reducere a “temperaturii” şi
criteriul de oprire).

Osman şi Christofides (1994) şi Osman (1995) oferă câteva clasificări ale


programelor de răcire.
Principalele avantajele ale algoritmului SA sunt:
- robusteţea şi generalitatea;
- flexibilitatea şi abilitatea de a evita blocarea în optime locale în probleme cu
multe restricţii şi multe optime locale;
- posibilitatea paralelizării.

Metoda SA are asociate însă şi anumite dezavantaje:


- raportul între calitatea soluţiei şi resursele de timp consumate este
disproporţionat1 (în sensul că efortul de timp de calcul pentru identificarea
soluţiei este prea mare relativ la calitatea acesteia);
- prea multe tranziţii negative îndepărtează căutarea de optimul global;
- metoda nu oferă o imagine de ansamblu a sistemului de optimizat;
- metoda lucrează cu o singură soluţie la un moment dat;
- stabilirea claselor de restricţii şi setarea parametrilor este o problemă delicată;
- precizia valorilor variabilelor necesare influenţează mult calitatea rezultatului
obţinut;
- construirea modelului este relativ dificilă.

Aplicaţii ale metodei SA (Osman şi Laporte, 1996):


- Probleme de alocare
- Probleme combinatoriale: probleme de tip clustering, probleme de ambalare şi de
tăiere, de partiţionare a grupurilor, problema rucsacului
- Probleme de proiectare
- Optimizări de funcţii
- Probleme de grafuri
- Probleme de localizare
- Probleme de producţie
- Probleme de reţele şi telecomunicaţii
- Probleme de transport
- Probleme de programare operativă
- Probleme de optimizare multiobiectiv
- Probleme statistice etc.
1
Rafinările metodei, numite fast annealing (călire rapidă), very fast reannealing (recălire foarte
rapidă) şi călire adaptivă rezolvă parţial problemele legate de durata mare a identificării soluţiilor de
calitate.

3
Exemplu de aplicare a metodei SA pentru problema grinzii.

Resurse bibliografice
1. Metropolis, N., Rosenbluth, A.W., Rosenbluth, M.N., Teller, A.H., Teller, E. (1953). Equation
of state calculations by fast computing machines, The Journal of Chemical Physics 21(6), 1087-1092.
2. Kirkpatrick, S., Gelatt, C.D.Jr., Vecchi, M.P. (1983). Optimization by simulated annealing,
Science 220, 671-680.
3. Mahfoud, S.W. (2000). Boltzmann selection, în Evolutionary computation 1, Basic algorithms
and operators, T. Bäck, D.B. Fogel şi Z. Michalewicz(Eds.), Institute of Physics Publishing, Bristol and
Philadelphia.
4. Aarts, E.H.L., Vaessens, R., Lenstra, J.K. (1988). Job-shop scheduling by simulated annealing,
Operations Research 40, 113-125.
5. Ibrahim H. Osman, Gilbert Laporte, Metaheuristics: A bibliography, Annals of Operations
Research 63(1996), pp. 513 – 623
6. Osman and N. Christofides, Capacitated clustering problems by hybrid simulated annealing and
tabu search, International Transactions in Operational Research 1 (1994) 317.
7. Osman, An introduction to metaheuristics, in: Operational Research Tutorial Papers, ed. M.
Lawrence and C. Wilsdon (Operational Research Society Press, Birmingham, 1995).

4
Probleme-test de optimizare (benchmark problems)

Pentru o comparare corectă a tehnicilor şi algoritmilor de rezolvare a unei clase de


probleme de optimizare, aceştia trebuie testaţi pe aceleaşi probleme. Astfel au fost
create problemele-test (aşa numitele benchmark-uri) care furnizează un standard comun
de testare şi comparare.

Problemele-test sunt instanţe disponibile gratuit ale diferitelor clase de probleme,


care, prin dimensiuni şi structură a datelor de intrare, reprezintă, fiecare în parte,
anumite caracteristici.

Acestea sunt relevante pentru lumea reală (industrie, economie etc.), realiste
(bazate sau derivate din probleme reale), conţin atribute care provoacă produsele
software comerciale şi rezultatele cercetărilor, iar datele lor sunt uşor de citit şi
interpretat.

Instanţele au dimensiuni diferite şi grade de complexitate diferite, conducând la


determinarea facilă a abilităţilor şi limitelor unei metode testate pe o instanţă anume. De
asemenea, rezultatele pot sugera îmbunătăţirile necesare şi unde ar trebui acestea
făcute.

Cerinţele pentru construirea problemelor-test multiobiectiv :

- să fie scalabile pentru a avea oricâte variabile de decizie


- să fie scalabile pentru a avea oricâte obiective
- să fie uşor de construit
- FOP rezultantă trebuie să fie uşor înţeleasă, iar forma sa exactă şi locaţia trebuie
cunoscute
- valorile variabielelor de decizie trebuie să fie uşor de găsit
- să dispună de o mulţime de soluţii optime Pareto larg distribuită

1
Biblioteci de probleme-test:

 CUTEr: http://www.cuter.rl.ac.uk/problems.html

 https://www.sfu.ca/~ssurjano/optimization.html

 Biblioteca de Cercetare Operaţională, OR library:

http://people.brunel.ac.uk/~mastjjb/jeb/info.html

 http://www-optima.amp.i.kyoto-
u.ac.jp/member/student/hedar/Hedar_files/TestGO.htm

 TSPLIB – pentru TSP (peste 100 exemple, 14 - 85 900 orase) si probleme conexe
(SOP, CVRP)

https://wwwproxy.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/

 TSP Test Data, University of Waterloo:

http://www.math.uwaterloo.ca/tsp/data/index.html

 The VRP Web: http://www.bernabe.dorronsoro.es/vrp/

 A Literature Survey of Benchmark Functions for Global Optimization Problems

 COPS: Large-Scale Optimization Problems:

https://www.mcs.anl.gov/~more/cops/

2
Analiza dificultăţii problemelor (de optimizare)

Teoria complexităţii computaţionale

O problemă abstractă este o relaţie binară Q : I -> S, unde I este mulţimea instanţelor
problemei, iar S este mulţimea soluţiilor problemei.

Majoritatea problemelor abstracte sunt probleme de decizie sau probleme de


optimizare.
Teoria complexităţii computaţionale este formulată pentru probleme de decizie.

O problemă de decizie este o relaţie binară Q : I -> {0,1}.

Pentru a putea aplica teoria complexităţii problemelor de optimizare, acestea se vor


transforma în probleme de decizie. Pentru orice problemă de optimizare P există o
problemă de decizie asociată, D(P) care se formulează astfel:

“Dată fiind o constantă c  Z, există o soluţie fezabilă x  X a.î. f(x)  c? “

Dacă o problemă de optimizare este uşor de rezolvat, atunci şi problema de


decizie asociată este uşor de rezolvat.
Dacă o problemă de decizie este dificil de rezolvat, atunci şi problema de
optimizare asociată este dificil de rezolvat.

Instanţele problemelor abstracte se codifică sub formă de şiruri binare pentru ca


problema să poată fi rezolvată cu un program. O problemă concretă este o problemă a
cărei mulţime a instanţelor este o mulţime de şiruri binare.

1
Complexitatea timp a unei probleme

Eficienţa rezolvării unei probleme depinde de codificarea datelor problemei.

Ordinul de complexitate al unei probleme abstracte se specifică pentru o anume


codifcare a acesteia. În practică, însă, codificarea nu influenţează mult
complexitatea algoritmului de rezolvare.

1. Clasa de complexitate P

(clasa problemelor rezolvabile în timp polinomial)

Un algoritm rezolvă o problemă concretă în timp O(T(n)) dacă, atunci când este dată
o instanţă i de lungime n = |i|, algoritmul va găsi o soluţie cel mult într-un timp O(T(n)).

O problemă concretă este rezolvabilă în timp polinomial (are o complexitate


polinomială) dacă există un algoritm care găseşte o rezolvare într-un timp polinomial de
ordinul O(nk), unde k este o constantă, pe o maşină deterministă.

Mulţimea problemelor concrete de decizie rezolvabile în timp polinomial formează


clasa de complexitate P.

Clasa P este clasa problemelor accesibile (uşoare).

O problemă al cărei ordin de complexitate depinde de o funcţie suprapolinomială se


numeşte problemă inaccesibilă.

Membri ai clasei P sunt:

- versiunea decizie a problemei arborelui de acoperire minim


- versiunea decizie a problemelor de drum minim
- versiunea decizie a problemelor de alocare

2
2. Clasa de complexitate NP

(clasa problemelor nedeterminist polinomiale)

O problemă D(P) este nedeterminist polinomială (aparţine clasei NP) dacă există un
algoritm polinomial care o poate rezolva pe o maşină Turing nedeterministă. Mai puţin
formal, aceasta înseamnă că se poate verifica în timp polinomial dacă o soluţie furnizează
răspunsul „da” la D(P).

Evident, P este o subclasă a clasei NP: P  NP.

Incluziunea inversă este o problemă fundamentală, formulată încă din 1971, rămasă
nerezolvată:

P = NP sau P ≠ NP ?

P este clasa problemelor care pot fi rezolvate rapid.


NP este clasa problemelor a căror soluţie poate fi verificată rapid.

Altă problemă rămasă deschisă: L  NP implică L  NP?

Principalul motiv pentru care se crede că P ≠ NP este existenţa problemelor NP-


complete.

3. Probleme NP-complete (NP-complete problems)

O transformare în timp polinomial a problemei D(P1) în problema D(P2) este un


algoritm A care, pentru fiecare instanţă a lui D(P1) construieşte o instanţă a lui D(P2) a.î.
o soluţie validă a instanţei lui D(P1) furnizează un răspuns „da” dacă şi numai dacă soluţia
validă corespondentă a lui D(P2) construită de algoritmul A furnizează un răspuns „da”.

Transformabilitatea polinomială se notează D(P1)  D(P2).

D(P1) şi D(P2) sunt echivalente dacă D(P1)  D(P2) şi D(P2)  D(P1).

3
O problemă de decizie D(P) se numeşte NP-completă dacă:

1) D(P)  NP

(soluţia poate fi verificată rapid) (*)

2) pentru toate celelalte probleme D(P’)  NP, D(P’)  D(P)

(orice altă problemă din NP este reductibilă la D(P) în timp polinomial)

NP
NP-complete

Modul în care sunt privite de majoritatea informaticienilor relaţiile între


clasele de probleme P, NP şi NP-complete

Problemele NP-complete înseamnă “complete“ în NP, adică cele mai dificile din
NP.

Această clasă are proprietatea surprinzătoare că dacă se descoperă o rezolvare


polinomială pentru o singură problemă NP-completă, atunci poate fi găsit un algoritm
polinomial pentru rezolvarea oricărei probleme NP-complete, adică P = NP.

Orice problemă NP-completă poate fi rezolvată prin căutare exhaustivă. Însă, când
dimensiunea instanţelor creşte, durata execuţiei algoritmului devine rapid foarte mare.
Pentru anumite probleme este posibilă proiectarea de algoritmi semnificativ mai rapizi
decât căutarea exhaustivă, deşi nu în timp polinomial.

Statutul problemelor NP-complete este necunoscut:


- nu s-a descoperit nici un algoritm polinomial pentru rezolvarea problemelor NP-
complete
4
- nu s-a demonstrat existenţa unei limite inferioare pentru timpul suprapolinomial
necesar rezolvării lor.

Majoritatea informaticienilor cred că problemele NP-complete sunt inaccesibile.

Pentru a afirma că o problemă este NP-completă, trebuie demonstrată


inaccesibilitatea sa.

Probleme NP-complete apar în domenii ca: logică, grafuri, aritmetică, proiectarea


reţelelor, mulţimi şi partiţii, memorări şi căutări, planificări, programare matematică,
algebră şi teoria numerelor, teoria limbajelor şi a automatelor, optimizarea programelor
etc.

Exemple de probleme NP-complete:


- problema satisfiabilităţii circuitului
- problema clicii
- problema acoperirii cu vârfuri
- problema ciclului hamiltonian
- problema rucsacului
- problema colorării grafului
- problema arborilor de acoperire minimi
- problema partiţionării mulţimii
- problemele de programare operativă (JSSP)
- problema acoperirii mulţimii

În prezent, toţi algoritmii cunoscuţi de rezolvare a problemelor NP-complete


necesită un timp suprapolinomial în mărimea datelor de intrare. În scopul creşterii vitezei
de obţinere a soluţiilor se pot aplica:
- Aproximarea
- Reducerea structurii datelor de intrare
- Randomizarea
- Parametrizarea
- Dezvoltarea de euristici sau metaeuristici

Un algoritm pseudo-polinomial este un algoritm cu timp de rulare polinomial în


valoarea numerică a intrării problemei (presupunând că aceasta este număr întreg), dar
exponenţial în lungimea intrării (numărul de cifre al intrării).
5
Astfel de algoritmi sunt practic funcţii exponenţiale în dimensiunea datelor de
intrare şi deci nu se consideră polinomiali.

Ex. testarea dacă un număr este prim. n/2 -1 împărţiri => liniar în n, dar nu şi în
dimensiunea lui n. Ex. n=2 000 000 000 va necesita aprox. 1 miliard de împărţiri, chiar
dacă lungimea lui n este numai 10 cifre. Algoritmul este exponenţial, dar totuşi pseudo-
polinomial.

O problemă se numeşte NP-completă în sens slab dacă există un algoritm pseudo-


polinomial pentru rezolvarea sa.

O problemă se numeşte NP-completă în sens tare dacă s-a demonstrat că nu poate


fi rezolvată de un algoritm pseudo-polinomial.

Problemele NP-complete în sens slab pot admite soluţii eficiente în practică atâta
timp cât intrările lor sunt relativ reduse. Problemele NP-complete în sens tare nu admit
soluţii eficiente chiar dacă intrările lor sunt relativ reduse.

Garey şi Johnson (1979) observau că “Un algoritm cu timp pseudo-polinomial … va


avea un 'comportament exponenţial' numai dacă are de a face cu instanţe care conţin
numere 'exponenţial de mari', lucru care se petrece rar. În aceste condiţii, acest tip de
algoritm ar putea fi util aproape ca şi un algoritm polinomial.”

4. Probleme NP-dificile (NP-hard problems)

O problemă se numeşte NP-dificilă sau NP-completă în sens tare (NP-hard) dacă a


doua condiţie din (*) este îndeplinită, dar incluziunea în NP nu se cunoaşte. Adică orice
altă problemă din NP este reductibilă la problema în discuţie în timp polinomial.

O problemă H este NP-dificilă dacă şi numai dacă există o problemă L NP-completă


reductibilă în timp polinomial Turing la H.

6
Problemele NP-dificile sunt problemele cel puţin la fel de dificile ca cele mai
dificile probleme din NP, care nu aparţin neapărat clasei NP.

O problemă NP-dificilă rămâne NP-dificilă chiar dacă toţi parametrii săi numerici
sunt mărginiţi de un polinom în lungimea datelor de intrare.

Spre exemplu, BPP este NP-dificilă, în timp ce problema discretă a rucsacului este
NP-completă în sens slab. Adică BPP, chiar dacă numărul de obiecte şi dimensiunile
cutiilor sunt întregi mărginiţi de un polinom, rămâne NP-dificilă, în timp ce problema
rucsacului în care numărul de obiecte şi dimensiunea rucsacului sunt întregi mărginiţi de
un polinom poate fi rezolvată în timp polionomial prin programare dinamică.

Dacă P ≠ NP atunci problemele NP-dificile nu au soluţii în timp polinomial.


Dacă P = NP aceasta nu ne asigură că problemele NP-dificile pot fi rezolvate în
timp polinomial.
Dacă o problemă de optimizare H are o versiune decizie NP-completă, atunci H
este NP-dificilă.

Problemele NP-dificile pot fi probleme de decizie, de căutare, de optimizare.

7
Datorită tranzitivităţii lui , este suficient pentru NP-completitudinea sau NP-
dificultatea unei probleme P să arătăm transformabilitatea în P a unei singure probleme
cunoscute ca fiind NP-completă.

În comunitatea informatică se crede că nu se va găsi vreodată un algoritm eficient


care să rezolve problemele NP-dificile.

TSP este un exemplu de problemă NP-dificilă şi deasemenea NP-completă. Similar,


problema acoperirii mulţimii. Un exemplu de problemă NP-dificilă care nu este NP-
completă: dându-se un program şi datele sale de intrare, acesta va rula la infinit?

Există probleme de optimizare care nu sunt numai NP-dificile, dar foarte dificil
de rezolvat chiar euristic (ex. JSSP).

Convenţii de denumire NP

Problemele NP-dificile nu sunt toate NP.

Famila NP se defineşte în relaţie cu clasa NP:

- probleme NP-complete înseamnă probleme “complete” în NP, adică cele


mai dificil de rezolvat din NP.

- probleme NP-dificile înseamnă cel puţin la fel de dificile ca cele mai dificile
probleme din NP, dar care nu aparţin neapărat clasei NP.

- probleme NP-uşoare – cel mult la fel de dificile ca NP, dar care nu aparţin
neapărat clasei NP.

- probleme NP-echivalente – la fel de dificile ca NP, dar care nu aparţin


neapărat clasei NP.

8
Complexitatea problemelor multiobiectiv

Problemele care sunt în clasa P dacă se consideră un singur obiectiv nu rămân în


clasa P şi în prezenţa mai multor obiective, cu excepţia cazurilor speciale.
Dacă o problemă de optimizare este NP-dificilă, atunci acelaşi lucru este valabil şi
pentru omologii lor multiobiectiv.

Dimensiunea unei probleme - măsură a dificultăţii sale

O altă măsură a dificultăţii unei probleme este dimensiunea sa, măsurată în termenii
numărului de variabile necunoscute şi/sau numărului de restricţii.

În plus, dimensiunea nu depinde numai de numărul de variabile şi restricţii. Adesea,


problemele sunt considerate de dimensiuni mari chiar dacă aceste numere sunt
moderate, însă conţin anumite structuri considerate dificile pentru metodele curente.

Având în vedere performanţa calculatoarelor moderne distingem următoarele clase


de probleme:

- Cu dimensiune redusă (având până la 5 variabile şi/sau restricţii);


- Cu dimensiune medie (având între 5 şi 100 variabile şi/sau restricţii);
- Cu dimensiune mare (având mai mult de 100 poate 1000 sau mai multe variabile
şi/sau restricţii).

Această clasificare nu este rigidă dar reflectă abordările de calcul oarecum diferite
pentru aceste clase de probleme. Teoria matematică clasică se aplică problemelor
indiferent de dimensiunea lor. Totuşi teoria nu este potrivită atunci când abordăm o
problemă algoritmic.

Dimensionalitatea problemelor şi încadrarea lor în astfel de clasificări este dinamică


în timp.

Ex. problema comis-voiajorului: în anii ’50, o instanţă cu 49 de oraşe (1176 variabile


în formularea de tip programare în întregi) era considerată de dimensiune mare. Astăzi,
recordul de rezolvare este de 49 687 oraşe.

9
OPTIMIZARE. INTRODUCERE

Optimizarea este ramură:


a matematicii aplicate (sau numerice)
a cercetării operaţionale (Operational Research - OR)
în funcţie de orientarea accentului:
- pe aspectele teoretice (ex. condiţiile de existenţă a soluţiilor optime) sau
- pe aspectele practice (procedee de atingere a optimelor).

Optimizarea se defineşte în multiple moduri:


- un raţionament sau calcul care permite găsirea valorilor uneia sau mai multor
variabile corespunzând maximului sau minimului unei funcţii;
- un ansamblu de lucrări de cercetare operaţională care urmăreşte găsirea celei
mai bune soluţii pentru rezolvarea unei anumite probleme;
- alegerea şi aplicarea soluţiei optime (dintre mai multe posibile).

Obiectivul optimizării este exprimat printr-o funcţie sau funcţională. Valoarea


acesteia se vrea maximizata sau minimizata cu eventuale restricţii (care limitează
alegerea valorilor pentru variabile).
Obiectivul poate fi:
- durata minima a unei calatorii din locatia A in locatia B;
- costul minim al realizarii unui dispozitiv;
- veniturile probabile maxime într-un mediu de investiţii supuse riscului;
- bunăstarea socială maxima în contextul planificării guvernamentale etc.

1
Teoria matematică a optimizării se foloseşte pentru:
a caracteriza punctele de optim
a furniza baza pentru algoritmii de optimizare.

Modelare + Rezolvare

Modelarea problemelor de optimizare

O problemă de optimizare se defineşte prin tripletul format din:


 necunoscută (numită si variabilă sau variabilă de decizie),
 un obiectiv şi
 restricţii (constrangeri).

Funcţia obiectiv şi restricţiile sunt funcţii de variabile.

Care valoare x
minimizează y = f(x) ,
respectând restricţiile:
e(x) = (e1(x),e2(x),…,em(x))  0 ?
unde x  X, y  Y.

Fără a restrânge generalitatea, funcţia obiectiv se poate maximiza. Pentru aceasta


se va lucra cu funcţia obiectiv - y si atunci
min {f(x)} devine - max {-f(x)}.

obiectiv
variabile

restricţii

2
y se numeşte funcţie obiectiv (sau funcţie cost). Funcţia obiectiv (simpla sau
compusa) acţionează ca un criteriu în raport cu care se face optimizarea.

X se numeşte spaţiu de căutare (sau spaţiul deciziilor sau spaţiul variabilelor sau
spaţiul necunoscutelor). x este necunoscuta (simplă sau compusă).

Variabilele modelului diferă de parametrii modelului!


Variabilele reprezintă necunoscutele modelului. Acestea pot încadra modelul în
diverse clase de modele după valorile pe care le pot lua. Prin parametrii unui model de
optimizare înţelegem acele mărimi care definesc modelul ca entitate independentă în
realitatea înconjurătoare. Parametrii au anumite valori numerice bine precizate şi
cunoscute.
Exemple:
 https://uk.mathworks.com/videos/optimization-toolbox-overview-70384.html

 https://uk.mathworks.com/videos/finding-optimal-path-using-optimization-
toolbox-68958.html (finding optimal path)

Restricţiile modelului reprezintă acele relaţii matematice care constrâng alegerea


variabilelor de decizie.
X f  {x  X e( x)  0} se numeşte mulţime fezabilă şi reuneşte soluţiile admisibile
(valide).

Yf = f(Xf) se numeşte spaţiul obiectiv al problemei.

O soluţie admisibilă care minimizează funcţia obiectiv se numeşte soluţie optimă.

Cu alte cuvinte, în optimizare se caută un element x0  X pentru care

f ( x0 )  f ( x), x  X ,

adică găsirea celei mai bune soluţii dintre cele fezabile.

3
Exemple de reprezentari grafice:

Foarte multe probleme ale lumii reale (si probleme teoretice) pot fi modelate
astfel.

Procesul de identificare a obiectivului, variabilelor şi restricţiilor pentru o problemă


dată (exprimata prin cuvinte, imagini etc.) se numeşte modelarea problemei.
Modelele matematice sunt abstractizari simplificate ale realitatii; este necesar un
compromis între descrierea precisa a fenomenelor si simplitatea modelului (Herbert
Alexander Simon).

Etapele tratarii unei probleme de optimizare:


- Construirea unui model adecvat
- Alegerea unui algoritm de optimizare (solver) pentru rezolvarea modelului
- Examinarea solutiei identificate de solver

4
1. Construirea unui model adecvat
Foarte rar este posibilă reprezentarea întregii complexităţi din realitate a
interacţiunilor dintre variabile, restricţii şi obiectiv. De aceea, modelarea unei probleme
trebuie să fie privită doar ca pe o aproximare. Trebuie sa decidem ce pastram si sa
numim variabilele corespunzatoare. Nu exista o procedura standard pentru modelare.
Modelarea este mai degraba o arta!
Abilităţile de modelare şi judecata corectă în interpretarea rezultatelor sunt
absolut necesare pentru a obţine concluzii relevante.
Ceea ce trebuie realizat în construirea unui model matematic este un compromis:
– care descrie complexitatea problemei, deci suficient de complex
– si care este fezabil din punct de vedere numeric deci nu prea complex

Pasii care se realizeaza (si care se pot repeta la nevoie) sunt:


- obtinem o imagine de ansamblu a problemei
- ne dam seama care este scopul, ce se urmareste sa se obtina
- identificam variabilele
- identificam restrictiile
- ne dam seama care sunt intrarile si iesirile pe care le putem controla
- specificam toate marimile matematice
- verificam ca modelul sa fie complet si corect

Observatii:
Slăbirea ipotezelor considerate la construirea modelului conduce la alte modele
(ex. optimizare stochastică, optimizare parametrică).
Orice funcţie obiectiv conţine valori şi preferinţe. Problema este: ce valori,
preferinţele cui, cum se poate încorpora intangibilul în funcţia obiectiv? Cum se
pot armoniza diverse grupuri de preferinţe în funcţia obiectiv?

5
Deoarece multe probleme de optimizare sunt foarte complexe, implicând mii
sau zeci de mii de variabile şi restricţii, problema matematică este foarte dificilă.
De aceea modelatorii introduc anumite simplificări. Una dintre cele mai utilizate
simplificari este presupunerea că relaţiile modelului de optimizare sunt liniare.
Din punct de vedere matematic liniaritatea este foarte convenabilă. Cea mai
populară categorie de probleme de optimizare este programarea liniară, cu
aplicaţii în toate domeniile de activitate şi pentru care se cunosc algoritmi
polinomiali de rezolvare. Totuşi liniaritatea este foarte puţin prezentă în
realitate.
Deseori modelele de optimizare conţin expresii algebrice complexe care depind
de o serie de parametri, cunoscuţi ca variabile exogene. Parametrii au valori
precizate şi constituie date de intrare în model. Valorile parametrilor pot
proveni din alte modele sau pot fi generate din modelul mental al celui care
modeleaza. Problema acurateţei parametrilor este foarte importantă;
incertitudinea în precizarea lor a condus la apariţia optimizării parametrice, a
optimizării stochastice, la studiul dependenţei soluţiilor de parametri, la
introducerea calculului cu intervale etc.
Deseori modelele de optimizare nu consideră aşa numitele variabile cu
argument întârziat. Modelele de optimizare, mai ales cele de optimizare
dinamică, ce conţin asemenea variabile, sunt foarte greu de rezolvat şi încă nu
se dispune de o teorie care să precizeze condiţiile de optimalitate. Întârzierile în
sistemele complexe sunt importante deoarece acestea sunt o sursă majoră de
instabilitate.

6
2. Alegerea unui algoritm de optimizare (solver) pentru rezolvarea modelului
! Nu există un algoritm universal de optimizare.
Lipsa unei tehnici universale de optimizare a dus la dezvoltarea a numeroase
tehnici limitate la cazuri (cvasi)particulare.

3. Examinarea solutiei identificate de solver


Pentru fiecare problemă de optimizare există o problemă de decizie
corespondentă, care determină dacă există o soluţie fezabilă a problemei.
Ex. pentru un graf G=(U,V)
 O problemă de optimizare poate fi “găseşte drumul minim de la nodul u
la nodul v”.
 Problema de decizie corespondenta: “există un drum de la u la v de
lungime mai mică sau egală cu x?”.

Dacă există condiţii matematice de optimalitate, verificarea daca solutia gasita este
corecta este facilă. Dacă nu, se face o estimare a deviaţiei soluţiei identificate faţă de
soluţia exactă (dacă aceasta se cunoaşte).
Analiza de senzitivitate relevă parametrii modelului care afecteaza cel mai mult
solutia (adica sensibilitatea soluţiei la modificarea modelului şi a datelor problemei).
Aceasta analiza permite si imbunătăţirea algoritmului (tehnicii) de optimizare, dacă se
dovedeste necesară.
Rezolvarea problemei cu ipoteze diferite este o examinare suplimentara a solutiei.
Modificarea usoara a solutiei obtinute si analiza sa este un alt tip de examinare.

! Chiar construirea modelului de optimizare este o problemă de optimizare –


cautam cel mai bun model posibil cu un număr minim de teste.
Optimizarea se foloseşte frecvent si în teoria aproximării.

7
Metoda Greedy

Atat programarea dinamica, cat si tehnica greedy, pot fi folosite atunci cand solutia
unei probleme este privita ca rezultatul unei secvente de decizii. Deoarece principiul
optimalitatii poate fi exploatat de ambele metode, s-ar putea sa fim tentati sa elaboram o
solutie prin programare dinamica, acolo unde este suficienta o solutie greedy, sau sa
aplicam in mod eronat o metoda greedy, atunci cand este necesara de fapt aplicarea
programarii dinamice.
Vom considera ca exemplu o problema clasica de optimizare. Problema continua a
rucsacului se poate rezolva optim prin metoda greedy, selectand la fiecare pas, pe cat
posibil in intregime, obiectul pentru care vi/gi este maxim. Se poate demonstra ca prin acest
algoritm se obtine solutia optima. Algoritmul greedy gaseste secventa optima de decizii,
luand la fiecare pas cate o decizie care este optima local.
În problema discretă a rucsacului tehnica greedy nu conduce in general la soluţia
optimă. De exemplu, pentru g = (1, 2, 3), v = (6, 10, 12), G = 5, algoritmul greedy furnizeaza
solutia (1, 1, 0), in timp ce solutia optima este (0, 1, 1). Tehnica greedy nu poate fi aplicata,
deoarece este generata o decizie (x1 = 1) optima local, nu insa si global. Cu alte cuvinte, la
primul pas, nu avem suficienta informatie locala pentru a decide asupra valorii lui x1.

Strategia greedy exploateaza insuficient principiul optimalitatii, considerand ca intr-o


secventa optima de decizii fiecare decizie (si nu fiecare subsecventa de decizii, cum
procedeaza programarea dinamica) trebuie sa fie optima. Problema se poate rezolva printr-
un algoritm de programare dinamica, in aceasta situatie exploatandu-se complet principiul
optimalitatii. Spre deosebire de problema continua, nu se cunoaste nici un algoritm
polinomial pentru problema discretă a rucsacului.
Metoda Greedy alege optimul local în scopul obţinerii optimului global, însă nu
întotdeauna este valabil acest lucru; uneori, metoda este numai o euristică.
Optimul global se construieste prin estimari succesve ale optimului local.

Diferenta esentiala dintre tehnica greedy si programarea dinamica consta in faptul


ca metoda greedy genereaza o singura secventa de decizii, exploatand incomplet principiul
optimalitatii. In programarea dinamica, se genereaza mai multe subsecvente de decizii;

1
tinand cont de principiul optimalitatii, se considera insa doar subsecventele optime,
combinandu-se acestea in solutia optima finala. Cu toate ca numarul total de secvente de
decizii este exponential (daca pentru fiecare din cele n decizii sunt d posibilitati, atunci sunt
posibile d n secvente de decizii), algoritmii de programare dinamica sunt de multe ori
polinomiali, aceasta reducere a complexitatii datorandu-se utilizarii principiului optimalitatii.

Algoritmii greedy (greedy = lacom) sunt în general simpli. Elemente necesare:


- o mulţime C de elemente din care se selecteaza componentele solutiei
- o funcţie care verifică dacă un anumit set de candidaţi constituie o soluţie
posibilă, nu neapărat optimă, a problemei
- o funcţie care verifică dacă pentru o mulţime de candidaţi este posibil să o
completăm astfel încât să obţinem o soluţie posibilă, nu neapărat optimă, a
problemei
- o funcţie de selecţie care alege la orice moment cel mai potrivit element, încă
nefolosit
- o funcţie soluţie care spune când s-a ajuns la soluţie.

Specificul acestei metode consta in faptul ca se construieste solutia pas cu pas, la


fiecare pas fiind selectat (sau "inghitit") in solutie elementul care pare cel mai bun la
momentul respectiv, in speranta ca asta va duce la solutie optima globala.

Se dă o mulţime C cu n elemente şi se cere să se determine o submulţime a sa, S, care


satisface anumite restricţii de optimalitate. Această submulţime se numeşte soluţie posibilă.
Se cere să se determine o soluţie posibilă care fie să maximizeze fie să minimizeze o anumită
funcţie obiectiv dată. Această soluţie posibilă se numeşte soluţie optimă.

2
function greedy(C)
//C este multimea candidatilor
S ← ∅
//S este multimea in care construim solutia
while not solutie(S) and C ≠ ∅ do
x ← un element din C care maximizeaza/minimizeaza
select(x)
// se alege un element din C care pare a fi solutia
optima la pasul i
C ← C \ {x}
if corect(S ∪ {x})
S ← S ∪ {x}
// se verifică dacă elementul ales poate fi adăugat
la mulţimea soluţiilor, dacă da atunci va fi adăugat
end_while
if solutie(S)
return S
else
return “nu exista solutie”

La fiecare pas, procedura alege cel mai bun candidat la momentul respectiv, fară să-i
pese de viitor şi fără să se răzgândească. Daca un candidat este inclus în soluţie, el rămâne
acolo; dacă un candidat este exclus din soluţie, el nu va mai fi niciodată reconsiderat.
Asemenea unui întreprinzător rudimentar care urmăreşte câştigul imediat în dauna celui de
perspectivă, un algoritm Greedy acţionează simplist.
Algoritmul Greedy duce totdeauna la soluţie optimă? Nu. Sunt situaţii când soluţia
găsită nu este optimă. Mai mult, pentru cele mai multe din probleme nu se cunosc algoritmi
Greedy de rezolvare. Spre deosebire de Backtracking, algoritmul Greedy nu permite atunci
când s-a observat că nu se poate ajunge la soluţie pentru o anumită secvenţă de elemente,
revenirea înapoi, pe nivelele anterioare.

3
Observaţie: Metoda Greedy nu caută să determine toate soluţiile posibile (care ar
putea fi prea numeroase) şi apoi să aleagă din ele pe cea optimă, ci caută să introducă direct
un element în soluţia optimă. Acest lucru duce la eficienta algorimilor Greedy, insa nu
conduc in mod necesar la o solutie optima si nici nu este posibila formularea unui criteriu
general conform caruia sa putem stabili excat daca metoda Greedy rezolva sau nu o anumita
problema de optimizare. Acest motiv duce la necesitatea de a insoti fiecare rezolvare de
demonstratia matematica (in general prin inductie) că modul de construire a lui S duce la
obtinerea unui optim global. De aceea Greedy se mai numeste si metoda optimului local.

4
• Avem posibilitatea să descriem matematic derivatele funcţiei
obiectiv?

• Cunoaştem măcar funcţia obiectiv?


• Sau tot ce avem este o cutie neagră care doar descrie funcţia pe care
vrem să o optimizăm ?

• Soluţiile-candidat sunt simple sau sunt structuri de date dificil de


manipulat (şiruri cu dimensiune variabilă, arbori, grafuri, seturi
de reguli, colecţii speciale de obiecte sau o combinaţie a mai
multor tipuri de reprezentări)
• Avem nevoie de proceduri pentru:

• iniţializare
• evaluare a soluţiilor-candidat valoare(x)
• copiere a unei soluţii-candidat copie(x)
• alterare a soluţiilor-candidat modifică(x)

• + un mecanism de selecţie, care decide care soluţii-candidat să fie


acceptate şi care să fie respinse pe măsură ce se explorează spaţiul
soluţiilor problemei.
• Este o metoda foarte simplă, similară metodei gradientului, dar care nu
impune cunoaşterea puterii gradientului şi nici măcar a direcţiei sale !
• Metoda alpinistului este mai generală decat metoda
gradientului: aici alterarea nu este ghidată de gradientul
funcţiei, ci implică un factor aleator.

• când se găsesc soluţii mai bune acestea se adoptă


• când se găsesc soluţii mai slabe acestea se ignoră

• Exemplu
• O versiune mai agresivă a metodei alpinistului

• Ea realizează la fiecare pas n alterări ale soluţiei curente,


urmând să se aleagă cea mai bună dintre ele, în caz că nu sunt
toate mai slabe decât prima.

• Metoda prelevează de fapt informaţie despre gradient şi, pe


baza ghidării acesteia, ascensionează către maxim urmând cea
mai bună cale:
• Saltul la noua soluţie nu trebuie să fie nici prea mare, nici prea
redus.
• Setarea amplitudini pasului de alterare este un mod de a
controla raportul între explorarea şi exploatarea spaţiului de
căutare.

• Algoritmii proiectaţi să aducă îmbunătăţiri locale mari


exploatează gradientul local, pe când algoritmii proiectaţi să
caute folosind variabile aleatoare explorează spaţiul.

• ! Ceea ce căutăm sunt algoritmi puternic exploatativi (pentru că


sunt mai rapizi), dar cu cât spaţiul este mai dificil, cu atât este
mai necesar un algoritm explorativ.
BB(k)

daca s(k-1) = (s1,s2,…,sk-1) este solutie finala atunci

afiseaza s(k-1)

fmax  f(s(k-1))

altfel

pentru toate valorile posibile ale urmatoarei componente de adaugat la


pasul curent sk

daca valid (s1,s2,…,sk) atunci

calculeaza limita f*(s(k))

ordoneaza solutiile partiale dupa valorile limita f*

pentru fiecare solutie valida executa

daca f*(s(k)) mai bun decat fmax atunci

//daca adaugarea componentei sk cu valoarea corespunzatoare este


promitatoare

BB(k+1)

Ordinea in care se ramifica nodurile in arbore este data de valoarea limitei f*


pentru fiecare nod neterminal.

Modul de calcul al acestei functii, f*, este o euristica. Ea poate lua de regula
multiple forme pentru o aceeasi problema si in functie de forma aleasa este
posibil ca ordinea de ramificare sa fie alta.

Metoda a fost propusa in 1960 de Land si Doig si se preteaza in primul rand


optimizarii discrete si combinatoriale.
• Glover, 1986

• Metoda reţine istoria soluţiilor-candidat considerate recent,


memorate în aşa-numita listă tabu, pentru a refuza revizitarea
acestora, cel puţin un timp.

• Lista tabu
• Principial, reţine soluţiile-candidat vizitate recent
• In fapt, retine tranziţiile interzise dintr-o configuraţie fezabilă în alte
configuraţii
• Lista tabu are un număr fixat de intrări, de regulă 5-10;
• un număr prea mic de intrări poate conduce la ciclări, iar un
număr prea mare forţează nejustificat căutarea.

• Informaţiile disponibile constau din


• lista tabu şi
• cea mai bună soluţie curentă
• Metoda funcţionează eficient în spaţii discrete.
• În spaţiile continue, lista tabu nu are o utilitate prea mare - un
punct va fi vizitat a doua oară în situaţii cu totul excepţionale.
Totuşi, o soluţie se poate considera interzisă dacă este suficient
de similară cu o soluţie existentă în lista tabu.

• Dificultatea căutării tabu apare când spaţiul de căutare este


foarte dens şi / sau dimensionalitatea sa este foarte mare.
• Solutie: menţinerea în lista tabu a caracteristicilor soluţiilor
modificate recent.
• Aplicaţii:
• probleme de alocare;
• probleme de clustering, de împachetare şi decupare optimală;
• probleme de proiectare;
• probleme în grafuri;
• probleme de localizare;
• probleme de planificare a producţiei;
• probleme de reţele şi telecomunicaţii;
• probleme de transport etc
Programarea dinamică

Termenul „programare dinamică” a fost folosit iniţial de Richard Bellman în anii ‘40
pentru a descrie procesul rezolvării problemelor în care se caută cele mai bune decizii una
după alta.

Problemă: Înmulţirea optimă a N matrici. Ştiind că înmulţirea matricilor este


asociativă, care este ordinea calculelor pentru a efectua un număr minim de înmulţiri?

Programarea dinamică se aplică problemelor de optimizare care satisfac proprietatea


de descompunere optimală (probleme care au substructură optimală): optimul general al
problemei se formează din soluţii optime de subprobleme. Altfel spus, optimul general
implică optimul parţial sau într-o secvență optimă de decizii sau alegeri, fiecare
subsecvență trebuie să fie de asemenea optimă.
Metoda rezolvă problemele prin:
- descompunerea lor în subprobleme şi
- combinarea rezolvărilor acestora (termenul „programare" se referă aici la
optimizarea unei funcţii prin alegerea de valori dintr-o mulţime anume, adică la găsirea
formulei şi la procedura de calcul prin completarea unui tablou).
Spre deosebire de Divide et Impera (care de asemenea rezolvă problemele prin
descompunerea lor în subprobleme, dar care se pretează când subproblemele sunt
independente), programarea dinamică se aplică atunci când subproblemele nu sunt
independente. Într-un astfel de caz, divide et impera ar efectua calcule redundante,
rezolvând fiecare subproblemă ca şi când nu ar mai fi întâlnit-o. Programarea dinamică
salvează însă rezultatul fiecărei subprobleme (pe care o generează metodic) într-un tablou,
evitând astfel rezolvarea redundantă a aceleiaşi probleme.
Programarea dinamică tratează deci fiecare subproblemă o singură dată. La fiecare
pas se pot face mai multe descompuneri şi este foarte important ca numărul total al
subproblemelor să fie polinomial în mărimea datelor de intrare (atunci este metoda utilă).

1
Provocarea constă în a găsi o soluţie recursivă la problemele pentru care numărul total de
subprobleme este mărginit în dimensiunea datelor de intrare.
Un exemplu care ilustrează destul de bine diferenţa de performanţă dintre metoda
divide et impera şi programarea dinamică este determinarea termenului de rang n din şirul
lui Fibonacci. Dacă am aborda rezolvarea pur recursiv, prin divide et impera (top-down),
unii termeni din şir, până la termenul de rang n pe care îl căutăm, vor fi recalculaţi inutil de
mai multe ori, iar aceasta, în ansamblu, se petrece de un număr exponenţial de ori. Însă
dacă abordăm problema în manieră bottom-up, fiecare termen se calculează o singură
dată. Această manieră de lucru (specifică programării dinamice) completează pe rând un
tablou pentru un n crescător.
Alt exemplu sugestiv este calcului combinărilor Cnk.

Programarea dinamică pornește de obicei de la cele mai mici subprobleme.


Combinând soluțiile lor, se obțin soluții pentru subprobleme din ce în ce mai mari, până se
ajunge, în final, la soluția problemei inițiale.
Aplicând această tehnică determinăm una din soluţiile optime, problema putând avea
mai multe soluţii optime.

Aplicarea programării dinamice poate fi descompusă în secvenţa de paşi:


1. caracterizarea structurii şi "dimensiunii" unei soluţii optime
2. definirea recursivă a valorii care caracterizează o soluţie optimă
3. calcularea "de jos în sus" (bottom-up) a acestei valori
4. construirea soluţiei optime pornind de la calculele efectuate anterior (de sus în
jos).

Primii trei paşi reprezintă baza metodei. Dacă trebuie doar să aflăm valoarea soluţiei
optime, ultimul pas nu mai este necesar. De aceea, pentru cazul în care dorim să

2
determinăm şi soluţia optimă poate fi nevoie de construirea unor structuri de date
suplimentare.

Tehnica este aşadar bazată pe o formulă recursivă şi una sau mai multe stări iniţiale.
O subsoluţie a problemei se construieşte din cele identificate anterior.
Generarea subproblemelor se face fie prin bucle simple imbricate (când ele trebuie
generate într-o anumită ordine necesară), fie folosind cozi (când subproblemele depind de
alte subprobleme care tocmai au fost generate).

• Soluţiile programării dinamice au adesea o complexitate polinomială deoarece se


exploatează principiul optimalităţii.
• Metoda furnizează întotdeauna soluţia optimă.
• Una din sarcinile de rezolvat: în ce ordine se rezolvă subproblemele (se
completează elementele tabelului)?

3
Programare dinamică - exemplu

Fie un graf liniar cu 4 vârfuri (noduri), în care vârfurile sunt etichetate cu ponderi nenegative.
Un graf liniar este un arbore în care două noduri au gradul 1, iar toate celelate au gradul 2. Un
astfel de graf se poate reprezenta grafic astfel încât nodurile sale apar pe o linie dreaptă.
G=(V,E), unde V={v1, v2, v3, v4}, iar w1=1, w2=4, w3=5, w4=4 sunt poderile asociate vârfurilor.

v1 v2 v3 v4
1 4 5 4

O mulţime independentă S a unui graf G se defineşte ca o submulţime a lui V a.î. vârfurile care
o formează nu sunt adiacente în graful G.
Pentru exemplul nostru, mulţimile independente sunt:
φ, {v1}, {v2}, {v3}, {v4}, {v1 ,v3}, {v2 ,v4} şi {v1 ,v4}.
O mulţime independentă maximală este o mulţime independentă pentru care suma
ponderilor asociate vârfurilor care o formează este maximă.
Ne propunem să rezolvăm problema identificării mulţimii independente maximale într-un graf
liniar ponderat cu ponderi nenegative, aşa cum este graful nostru.
Căutarea brută va determina rând pe rând toate mulţimile independente, va calcula pentru
fircare suma ponderilor şi o va identifica astfel pe cea maximală. Numai că va face asta într-un timp
exponenţial. Chiar şi pentru grafuri liniare, numărul de mulţimi independente este exponenţial în n.
Metoda Greedy se dovedeşte inadecvată deoarece va considera vârful cu pondere maximă (5),
după care va considera vârful cu pondere maximă dintre celelalte vârfuri cu care poate forma o
mulţime independentă ş.a.m.d. După cum vedem pentru graful nostru, Greedy va returna soluţia {v1
,v3} cu ponderea totală 6. Soluţia optimal este totuşi alta: {v2 ,v4} cu ponderea totală 8. Aşadar,
Greedy nu returnează soluţia optimală pentru această problemă.
Divide et impera cere ca intrarea să fie de forma unui tablou, iar problema să se poată împărţi
în două subprobleme care se pot rezolva separat (după un principiu similar), urmat de combinarea
soluţiilor celor două subprobleme. Să aplicăm pe problema noastră.
v1 v2 v3 v4
1 4 5 4

S1={ v2 }:4 S2={ v3 }:5

S =? S1 ∪ S2

Pentru prima subproblemă, mulţimea independentă maximală este S1={ v2 } cu ponderea 4, iar
pentru a doua subproblemă mulţimea independentă maximală este S2={v3} cu ponderea 5.

1
Constatăm însă că a combina cele două rezultate nu este aşa de simplu – v2 şi v3 nu pot forma o
mulţime independent. Când n este redus, asta se poate corcta uşor, însă când n este mare nu
dispunem de un algoritm rapid pentru asta.
Ajunşi aici, să încercăm programarea dinamică. Ea se poate aplica numai dacă problema are o
formă anume: soluţia optimă trebuie să fie construită din soluţii optime ale subproblemelor într-o
manieră prescrisă. Această idée reduce mulţimea de candidaţi pentru soluţia optimală; putem apoi
aplica o căutare brută pentru a o alege pe cea mai bună.
Va trebui să privim altfel rezolvarea: să gândim ca şi cum deja am fi calculat soluţia optimală.
Fie S ⊆ V o mulţime independentă maximală. Fie vn ultimul vârf. Sunt două cazuri:
• vn ∉ S. Fie G’ = G - {vn}.
Ştim că S este o mulţime independentă a lui G’.
S este o mulţime independentă maximală a lui G’. Dacă ar fi existat o alta mai bună
decât ea, S*, atunci ar fi fost mai bună şi în G, ceea ce ar contrazice presupunerea iniţială.
• vn ∈ S. Atunci vn -1 ∉ S. Fie G’’ = G - {vn , vn-1}.
S - {vn} este o mulţime independentă a lui G’’.
S - {vn} este o mulţime independentă maximală a lui G’’. Dacă ar fi existat o alta mai
bună decât ea, S*, atunci ar fi fost mai bună şi în G şi deci S* ∪ {vn} ar fi mai bună decât S şi în
G, ceea ce ar contrazice presupunerea iniţială.
Aşadar, am dedus că o mulţime independentă maximală trebuie să fie:
- fie o mulţime independentă maximală a lui G’= G - {vn}.
- fie {vn} + o mulţime independentă maximală a lui G’’= G - {vn , vn-1}.
Deoarece nu ştim cum e cu apartenenţa lui vn la S, vom considera ambele posibilităţi şi
determinăm pe cea mai bună:
Caculează recursiv S1= mulţimea independentă maximală a lui G’
Caculează recursiv S2= mulţimea independentă maximală a lui G’’
Returnează cea mai bună dintre {S1, S2 ∪ {vn} }.
Asta este de fapt o reorganizare recursivă a unei căutări brute, cu timp de calcul exponenţial.
Dacă reuşim să eliminăm redundanţa, putem implementa liniar acest algoritm. Pentru aceasta, să ne
gândim “câte subprobleme diferite sunt rezolvate de aceste apeluri recursive?”. Ce se întâmplă
înainte ca recursivitatea să înceapă? O subproblemă se obţine prin eliminarea succesivă de vârfuri
din dreapta grafului, deci la orice pas ne-am afla în algoritm, cu siguranţă ne ocupăm de un prefix al
grafului liniar- graful care conţine primele i vârfuri ale grafului G. Prin urmare, avem un număr liniar
de subprobleme - prefixele grafului iniţial G. Exponenţialitatea apare din redundanţa reolvării
aceleiaşi subprobleme de la zero iar şi iar şi iar.

2
O soluţie este memorarea rezultatelor subproblemelor atunci când acestea sunt întâlnite
prima dată. Fie T tabloul folosit în acest scop.
T[i] este valoarea soluţiei subproblemei i, adică ponderea totală a mulţimii independente
maximale a lui Gi = {v1 , v2 , ..., vi}. G0=φ. Deci problema se rezolvă de jos în sus (bottom-up) printr-un
algoritm iterativ.
T[0]=0
T[1]=w1
Restul se determină sistematic:
for i = 2,…, n
T[i] = max { T[i-1], T[i-2]+ wi}.
Aceasta face o căutare brută prin cele două posibilităţi.
Valorile din T déjà calculate se caut
ă de fapt în timp constant. Deciziile se iau la sfârşit, dar
ceea ce este important este că metoda nu rezolvă din nou o subproblemă déjà rezolvată.
Pentru exemplu nostru, ordinea în care se completează tabela T este următoarea:
T[0] este ponderea totală a mulţimii independente maximale a lui G0=φ.
T[0]=0
T[1] este ponderea totală a mulţimii independente maximale a lui G1 = {v1 }.
T[1]=w1=1
T[2] este ponderea totală a mulţimii independente maximale a lui G2 = {v1 , v2}.
T[2] = max { T[1], T[0]+ w2} = max { 1, 4} = 4
T[3] este ponderea totală a mulţimii independente maximale a lui G3 = {v1 , v2 , v3}.
T[3] = max { T[2], T[1]+ w3} = max {4, 6} = 6
T[4] este ponderea totală a mulţimii independente maximale a lui G4 = {v1 , v2 , v3 , v4}.
T[4] = max { T[3], T[2]+ w4} = max {6, 8} = 8
Pentru a recapitula: Greedy nu obţine soluţia optimal, divide et impera este inadecvată
deoarece subproblemele nu sunt independente, căutarea brută este prea lentă.
Însă ce observăm? Că algoritmul nu returenază soluţia, ci valoarea sa. În cele mai multe cazuri,
u este suficientă această valoare, vrem să cunoaştem şi vârfurile care formează mulţimea
independentă maximală. Am putea memora în tabela T şi asta. Totuşi, o idee mai inteligentă este
reconstruirea soluţiei optimale din tabela T: algoritmul păstrează urma deciziilor luate. Aşa arată un
astfel de algoritm de reconstrucţie a soluţiei optimale din tabela T:
S=φ
i=n
while (i≥1)
if(T[i-1] ≥ T[i-2]+ wi) //cazul 1

3
i=i-1
else // cazul 2
S = S ∪ {vi}
i=i-2
return S
Evident, multimea S se poate forma (calcula) pe masura ce completam tabela T.
Regulile de îndeplinit pentru ca programarea dinamică să fie aplicabilă sunt:
• să se identifice un număr redus de subprobleme (în cazul problemei mulţimii
independente maximale sunt numai n+1 subprobleme de rezolvat: determinarea
ponderii totale a mulţimii independente maximale pentru Gi , i=0,1,…,n);
• să se poată rezolva corect şi rapid subprobleme mai mari date fiind soluţiile
subproblemelor mai mici (de regulă prin recursivitate), iar soluţiile subproblemelor
găsite sunt suficiente pentru rezolvarea problemei părinte;
• să se poată calcula rapid soluţia finală după rezolvarea tuturor subproblemelor.

4
MODEL DE OPTIMIZARE vs. MODEL DE SIMULARE

Optimizarea se poate folosi de simulare și invers.


Modelele matematice de optimizare diferă de modelele matematice de simulare. Acestea au
scopuri diferite şi fiecare se bazează pe alte concepte matematice (Andrei N., 2004).
Un model de optimizare este normativ sau prescriptiv.
El nu ne spune ce se va întâmpla într-o anumită situaţie, ci ne arată ce să facem pentru a obţine
cea mai bună situaţie. Ieşirea unui model de optimizare este o recomandare care arată ce alternativă
trebuie selectată pentru a extremiza (minimiza/maximiza) un anumit criteriu de performanţă.
Model de simulare
Scopul unui model de simulare este de a mima lumea reală în vederea studierii comportării ei.
Un model desimulare este o replică de laborator a unui sistem real. Creând o reprezentare de
laborator a porţiunii de univers analizate, modelatorul poate face o serie de experimente care
altfelsunt imposibile, non-etice sau foarte costisitoare. Simularea este foarte mult utilizată în domeniul
ingineresc, economic, social, medical.
Modelele de simulare sunt descriptive. Acestea clarifică ce s-ar întâmpla într-o situaţie dată
(„what-if”). Uneori o informaţie de acest tip este preferata cunoaşterii deciziei optime.
Ieşirea unui model de simulare este evoluţia variabilelor, care sunt comparate cu valorile
obţinute din funcţionarea reală a situaţiei modelate.
Simularea este vazuta uneori ca o modalitate “pasiva“ de evaluare a unui numar limitat de
alternative propuse de utilizator, iar rezultatele sale sunt valabile numai pentru un set dat de date de
intrare.
Optimizarea bazata pe simulare
• Se foloseste atunci cand obiectivul si/sau restrictiile
- nu pot fi exprimate explicit in termenii variabilelor
- se pot modifica in timp in functie de preferintele decidentului.
• Poate furniza raspunsuri la intrebari de tipul:
- cum atingem obiectivul?, in plus fata de analizele de tip “what if …”
• Cazuri
- banal: explorarea impactului unui numar limitat de alternative decizionale;
- procedura integrata cu doua niveluri:
• crearea (eventual cu un algoritm de optimizare) a unei secvente ordonate de valori
de intrare
• apelarea modelului de simulare pentru evaluarea consecintelor.

1
• Metoda caută soluţii în spaţiul optimelor locale într-o manieră
stocastică.

• Repornirea căutării nu se face aleator, ci în funcţie de un optim


local deja identificat, numit optim local de bază (curent), care se
actualizează conform unui criteriu de acceptare.

• Repornirea căutării se realizează într-o regiune suficient de


depărtată de optimele deja identificate, însă nu atât de
departe încât căutarea să devină o căutare aleatoare.
Metodele de căutare locală iterativă cuprind trei module:

• căutarea locală,
• perturbarea optimului local de bază şi
• verificarea satisfacerii criteriului de acceptare.
De regulă,
perturbarea generează o soluţie într-o vecinătate mai
mare decât vecinătatea utilizată în procedura de căutare locală.
• Rolul funcţiei actualizează care implementează criteriul de
acceptare a noii soluţii curente de bază este acela de a alege
inteligent noi puncte de pornire pentru căutare.

• Criteriul de acceptare din căutarea locală iterativă se situează


între situaţiile extreme aferente căutării aleatoare şi metodei
alpinistului.
• Deoarece principala dificultate a metodei constă în a
determina când s-a atins un optim local, de regulă se setează
un cronometru (variabila t ) care opreşte “urcarea”, iar cea mai
bună valoare curentă la expirarea timpului setat se consideră a
fi optimul local identificat.

• Dacă acest cronometru se setează la o valoare suficient de


mare, probabilitatea este destul de mare ca punctul identificat
să fie un optim sau un punct din vecinătatea acestuia.
• Procedura de căutare locală poate fi una simplă sau una
complexa: călirea simulată a metalelor, căutarea tabu,
căutarea locală genetică sau altele.

• Criteriul de acceptare de asemenea poate fi unul simplu sau unul


complex. Un criteriu de tipul călirii simulate a metalelor va
accepta noua soluţie dacă este mai calitativă; şi în caz contrar
o va accepta, dar cu o anumită probabilitate.
• Se aplică cu succes dacă nu există foarte multe optime locale.

• Aplicatii: problema comis-voiajorului, colorarea grafurilor,


planificarea temporală, diverse alocări.

• Inconveniente: poate explora repetat aceleaşi zone din spaţiul


de căutare, nu dispune de o imagine de ansamblu a acestuia.

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