Documente Academic
Documente Profesional
Documente Cultură
h - grosimea sudurii
b - grosimea grindei
l - lungimea sudurii
t - înălţimea grindei
care să satisfacă simultan două obiective:
1
PROBLEME UZUALE DE OPTIMIZARE - categorii, ierahizari, exemple
1
Problema fluxului maxim cu capacităţi inferioare şi superioare
Problema fluxului maxim cu constrângeri de timp
Optimization art
2
PROBLEME DE DRUM MINIM
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.
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)
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
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
8
• VRP cu intervale de livrare (VRPTW): pentru fiecare client trebuie respectat un
interval de livrare dat; http://www.bernabe.dorronsoro.es/vrp/
9
10
Există instanţe pentru care nu se cunosc soluţiile optime.
Găsește cel mai lung ciclu dintr-un graf, format din noduri distincte.
Aplicatii
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.
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.
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.
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.
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
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
Set packing
Se cere numarul maxim de submultimi disjuncte.
17
Analiza: aici
http://www.nada.kth.se/~viggo/wwwcompendium/node144.html
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
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ă
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
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
Pentru fiecare arc există capacități minime și maxime impuse, care trebuie respectate.
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
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
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
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.
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.
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ă
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)
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).
OPTIMIZATION ART
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.
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?
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:
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.
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.
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
4
folosesc metode iterative de determinare a minimului sau maximului. Un exemplu este programarea
dinamică (sau optimizarea în paşi) a lui Bellman.
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.
Principiul de optimalitate al lui Bellman poate fi formulat şi pentru contextul diferenţial, pentru a
a fi aplicat optimizării funcţionale continue.
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:
Exemplu 2:
Soluţie (-2,1).
7
1. folosirea funcţiilor de penalizare
2. considerarea restrictiilor ca aspect principal al problemei de rezolvat – programarea
matematică, CSP (constraint satisfaction problems).
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!
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.
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).
Î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.
maximizează w1 x1 w2 x2 w3 x3
unde wi , i {1,2,3} este profitul unitar adus de fabricarea produsului de tip i . Aceste valori se cunosc.
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
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
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.
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.
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
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.
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.
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.
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
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
Î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.
------------------------------------------------------------------------------------------------------------------------------
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
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:SR.
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).
şi ∑𝑛𝑖=1(𝑠𝑖 ∙ 𝑔𝑖 ) ≤ 𝐺 (restricţie)
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
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
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Ă)
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:
1
1. Probleme de optimizare multiobiectiv (POM)
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]
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
3
• Existenţa adeseori a restricţiilor dure
Î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).
(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.
4
Dezavantajele acestei abordări sunt:
(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).
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ă
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).
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).
7
Definiţia 3.Fie A⊆ Xf. Mulţimea
*******************************************************************
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.
******************************************************************
Adica punctele (soluţiile-candidat) din MOP sunt acele puncte care nu sunt
dominate de nici un alt punct din mulţimea fezabilă.
8
Definiţia 6. Fie A ⊆ Xf . f(p(A)) este frontiera nedominată relativ la A.
Altfel spus, soluţiile optime Pareto formează mulţimea optimă Pareto(MOP), iar
vectorii obiectiv corespunzători formează frontiera optimă Pareto(FOP).
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
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
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.
unde . este o metrică, iar ε> 0, δ> 0 valori foarte reduse.
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ă:
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).
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.
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
TEHNICI CONVENȚIONALE
TEHNICI NECONVENȚIONALE
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.
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).
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.
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.
- 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.
strategii
de descompunere
Tehnici enumerative Tehnici bazate pe calcul relaxare
lagrangeiană
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.
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.
9
• Strategia de căutare iterativă a optimului se bazează pe
alegerea direcţiei de căutare.
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 ?
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).
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)
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.
1
Biblioteci de probleme-test:
CUTEr: http://www.cuter.rl.ac.uk/problems.html
https://www.sfu.ca/~ssurjano/optimization.html
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/
http://www.math.uwaterloo.ca/tsp/data/index.html
https://www.mcs.anl.gov/~more/cops/
2
Analiza dificultăţii problemelor (de optimizare)
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.
1
Complexitatea timp a unei probleme
1. Clasa de complexitate P
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)).
2
2. Clasa de complexitate NP
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).
Incluziunea inversă este o problemă fundamentală, formulată încă din 1971, rămasă
nerezolvată:
P = NP sau P ≠ NP ?
3
O problemă de decizie D(P) se numeşte NP-completă dacă:
1) D(P) NP
NP
NP-complete
Problemele NP-complete înseamnă “complete“ în NP, adică cele mai dificile din
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.
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.
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.
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ă.
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ă.
Există probleme de optimizare care nu sunt numai NP-dificile, dar foarte dificil
de rezolvat chiar euristic (ex. JSSP).
Convenţii de denumire 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.
8
Complexitatea problemelor multiobiectiv
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.
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.
9
OPTIMIZARE. INTRODUCERE
1
Teoria matematică a optimizării se foloseşte pentru:
a caracteriza punctele de optim
a furniza baza pentru algoritmii de optimizare.
Modelare + Rezolvare
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.
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ă).
https://uk.mathworks.com/videos/finding-optimal-path-using-optimization-
toolbox-68958.html (finding optimal path)
f ( x0 ) f ( x), x X ,
3
Exemple de reprezentari grafice:
Foarte multe probleme ale lumii reale (si probleme teoretice) pot fi modelate
astfel.
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
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.
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.
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.
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.
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?
• iniţializare
• evaluare a soluţiilor-candidat valoare(x)
• copiere a unei soluţii-candidat copie(x)
• alterare a soluţiilor-candidat modifică(x)
• Exemplu
• O versiune mai agresivă a metodei alpinistului
afiseaza s(k-1)
fmax f(s(k-1))
altfel
BB(k+1)
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.
• 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.
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.
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.
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).
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
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
1
• Metoda caută soluţii în spaţiul optimelor locale într-o manieră
stocastică.
• 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.