§ 1. Obiectul optimizării combinatoriale
Combinatorica
este un domeniu reprezentativ
al matematicilor care, în esență, se ocupă cu studiul aranjamentelor
obiectelor unei mulțimi finite,
conforme unei structuri date. În problemele combinatoriale, prioritare
sunt chestiunile de existență și de numărare:
·
există un anumit tip particular de aranjament?
·
câte asemenea aranjamente se pot forma?
Caracteristic problemelor combinatoriale este faptul că numărul acestor
aranjamente este finit.
Dacă aranjamentele unei
probleme combinatoriale pot fi comparate
pe baza unui criteriu de apreciere apare o problemă
de optimizare combinatorială:
·
care este
cel mai bun aranjament din punctul
de vedere al criteriului respectiv?
Exemplul
1.1 Să considerăm un graf finit și simplu G = (V,E) în care V este mulțimea nodurilor iar E este mulțimea muchiilor.Un
arbore în graful G este un
subgraf H = (V,A) , A Ì E , cu
aceleași noduri ca și G, care, de sine stătător, este un graf conex și fără cicluri (vezi figura 1.1 în care muchiile arborelui au fost
îngroșate)
Se pun următoarele chestiuni:
·
conține G
cel puțin un arbore?
·
câți
arbori distincți se pot forma?
În cazul de față obiectele de lucru sunt muchiile
grafului G. Un aranjament al acestor obiecte este
o submulțime de muchii A Ì E cu proprietățile:
·
orice nod
al grafului G este extremitate pentru cel puțin o muchie din A;
·
subgraful
H = (V,A) este conex și fără cicluri.
Următorul rezultat stabilește în ce condiții există aranjamentele
descrise:
Graful G are arbori
dacă și numai dacă este conex.
Amintim doar în treacăt faptul că există o formulă care stabilește
numărul arborilor distincți din G.
Să presupunem mai departe
că fiecărei muchii eÎE i s-a asociat un cost c(e) ³ 0. Definim
costul unui arbore H = (V,A) ca fiind suma costurilor muchiilor alcătuitoare:
Rezultă în final următoarea problemă de optimizare combinatorială a cărei
rezolvare va fi prezentată în secțiunea 3:
Să se determine în
graful G arborele H* de cost minim.
Exemplul 1.2 Muchiile grafului G din exemplul 1.1 pot fi aranjate
și în alte moduri. Astfel, un cuplaj în G este o submulțime C Ì E de muchii două câte două neadiacente. Existența acestor noi aranjamente
este o chestiune banală întrucât orice muchie din G este un cuplaj. Interesante
sunt problemele de optimizare care se pun în acest context:
·
să se
determine cuplajul C* cu cele mai multe muchii ( cuplajul maxim )
sau, în cazul în care muchiile din G sunt ponderate:
·
să se
determine cuplajul C* de pondere maximă.
(ca mai sus, ponderea unui cuplaj este dată de suma ponderilor muchiilor
din cuplaj)
Este foarte important de menționat
faptul că problemele de optimizare combinatorială provin în marea lor
majoritate din diverse domenii de activitate, în special economică: astfel
problema arborelui de cost minim din exemplul 1.1 modelează o largă varietate
de situații practice din domeniul rețelelor de comunicații (rețele de
calculatoare, de drumuri, televiziune prin cablu etc)
Optimizarea combinatorială are ca obiect rezolvarea problemelor specifice adică elaborarea de metode și
algoritmi de găsire efectivă a celui mai
bun aranjament din mulțimea finită a tuturor aranjamentelor posibile.În
continuare pentru aranjamentele unei probleme combinatoriale vom folosi
termenul de soluție.
La prima vedere, s-ar
părea că obiectul optimizării combinatoriale este banal: Ce mare lucru este să
găsești cel mai bun element dintr-o mulțime finită?
În realitate, listarea tuturor soluțiilor unei probleme combinatoriale, în
vederea selectării soluției optime, este aproape imposibil de făcut deoarece
numărul lor, deși finit, este de regulă astronomic
de mare chiar și în cazul unor probleme de talie moderată.
Exemplul 1.3 Pentru a înțelege mai bine despre ce este vorba să
considerăm o altă problemă tipică de optimizare combinatorială, problema comisvoiajorului:
Un comisvoiajor situat în
localitatea 0 trebuie să viziteze n localități 1,2,
,n în final întorcându-se
de unde a plecat. Cunoscând distanțele dintre localități (sau costurile
deplasărilor între localități) el dorește să găsească traseul cu lungimea
totală minimă (sau costul total minim). Este clar că numărul total al traseelor
posibile este n! , un traseu fiind perfect determinat de ordinea (permutarea)
în care vor fi vizitate cele n localități. O dată fixată această ordine
calculul lungimii (costului) traseului corespunzător este o banală operație de
adunare a lungimilor (costurilor) tronsoanelor care compun traseul.
În cazul particular a
n=20 de localități de vizitat, cu un calculator în stare să examineze un
miliard de trasee pe secundă, găsirea traseului optim ar dura circa 800 de ani
iar dacă, în loc de 20 de localități, am avea cu una mai mult, căutarea ar dura
în jur de 16800 de ani!!
În lumina acestui
exemplu, determinarea efectivă a
unui anumit element dintr-o mulțime finită
(dar foarte numeroasă
) de posibilități este o chestiune serioasă: am dori să găsim acest element în timp util și bineînțeles cu un efort de calcul rezonabil.
În termeni mai preciși, am dori ca timpul de rezolvare a unei asemenea
probleme să depindă polinomial de
dimensiunile problemei.
Pentru unele probleme de
optimizare combinatorială acest lucru este posibil; despre aceste probleme vom
spune că sunt ușoare. Problema
arborelui de cost minim sau problema cuplajului maxim (de pondere maximă)
,descrise în exemplele 1.1 și 1.2, sunt dovedite a fi probleme ușoare.
Pentru marea majoritate a
problemelor combinatoriale, găsirea soluției optime în timp polinomial nu este
încă posibilă, altfel spus metodele exacte cunoscute necesită un timp de rulare care crește exponențial o dată cu creșterea
dimensiunilor problemei rezolvate. Mai mult există bănuiala că, datorită structurii lor interne, nici nu va fi
posibilă vreodată elaborarea unor metode exacte de rezolvare cu comportament
polinomial!
Din clasa acestor probleme, socotite grele,
face parte și problema comisvoiajorlui din exemplul 1.3.
Din cele de mai sus nu
trebuie înțeles că problemele grele sunt inabordabile. În dimensiune relativ
moderată aceste probleme pot fi soluționate exact în timp rezonabil.
Folosind metode de căutare din ce în ce mai sofisticate care exploatează
eficient structura combinatorială internă au putut fi rezolvate cu succes și
probleme de dimensiuni apreciabile.Totuși, nu se poate spune că aceste metode,
oricât de sofisticate ar fi ele, sunt în stare să facă față oricărei probleme
de același fel și mai mult, pot avea comportamente radical diferite pe probleme
asemănătoare și de aceeași talie.
Având în vedere aceste
observații, de mare importanță, mai cu seamă practică, sunt metodele și
algoritmii care determină în timp polinomial o soluție
acceptabilă(suboptimală). Pentru aceste procedee, numite generic euristici, aprecierea eficacității lor
va fi dată de distanța dintre soluția suboptimală și cea optimă veritabilă!
Am putea aprecia că o anumită euristică este bună dacă valoarea suboptimală a
criteriului de performanță ar fi, de exemplu, de cel puțin 90% din valoarea
optimă!
Câteva modalități de
rezolvare a problemei comisvoiajorului sunt date în secțiunea 4.
Cele mai multe probleme
de optimizare combinatorială sunt modelate cu ajutorul teoriei grafurilor;
exemplul1.1 este edificator în acest sens. Mai toate pot fi descrise alternativ
prin programe liniare cu variabile întregi, în special bivalente, de unde
strânsa legătură dintre optimizarea combinatorială și programarea în numere
întregi.
Exemplul 1.4 Reluăm problema cuplajului maxim din exemplul 1.2.
Atașăm fiecărei muchii eÎE o variabilă booleană xe cu
semnificația:
Pentru fiecare nod
vÎ V, fie E(v)
mulțimea muchiilor din G care au o extremitate în v. Problema cuplajului maxim
este perfect descrisă de programul bivalent:
§ 2. Domenii de aplicare ale optimizării combinatoriale
Între problemele de optimizare combinatorială se
găsesc:
·
problema
drumului de valoare minimă între două noduri ale unui graf;
·
problema
fluxului maxim;
·
problema
de afectare.
deja studiate în cursul Bazele Cercetării Operaționale [10]. Ele intră,
alături de problema arborelui de cost minim în categoria problemelor ușoare.
Lista problemelor grele
este impresionantă și se îmbogățește continuu. În afara problemei
comisvoiajorului mai putem aminti următoarele probleme mai reprezentative:
2.1 Problema croirii În multe domenii cum ar fi industria mobilei,
a sticlei, a hârtiei, a confecțiilor, industria metalurgică apar frecvent
probleme de debitare (sau croire) a unor repere din suporți mai mari.
Importanța economică a acestor probleme rezidă în dependența directă a
reducerii consumului de materiale de utilizarea unor scheme eficiente de
croire.
De obicei, clasificarea problemelor
de croire se face după dimensiunile relevante ale reperelor: avem probleme
unidimensionale, bidimensionale sau tridimensionale. În croirea unidimensională
de care ne vom ocupa mai mult, reperele se diferențiază printr-o singură
dimensiune chiar dacă ele au mai multe. Cazul tipic este ecela al debitării
unor bare de difrite lungimi din bare mai mari.Iată și o situație concretă: o
firmă produce un carton special în rulouri având o anumită lățime. Clienții
solicită rulouri având aceeași lungime ca și ruloul standard dar de lățimi mai
mici. În acest caz reperele ca și suporții sunt bidimensionali dar relevantă
este o singură dimensiune lățimea.
Aspectul combinatorial al
unei probleme de croire este dat de modalitățile de tăiere ale unui suport în repere, modalități numite rețete de croire.Chestiunea de
optimizare constă în a determina de câte ori una sau alta dintre rețetele de
croire trebuie folosită pentru producerea unor cantități specificate de repere
astfel încât numărul total de suporți consumați să fie minim.
Problema de croire unidimensională va f studiată mai în amănunt în
secțiunea 6 din capitolul III.
2.2
Problema generală
a ordonanțării
Elementele primare sunt:
·
o mulțime
de utilaje;
·
o mulțime
de repere (joburi) de realizat (îndeplinit).
Realizarea unui reper necesită efectuarea unei secvențe
de operații
pe (unele din) utilajele date.Ordinea de parcurgere a utilajelor poate fi aceeași
pentru toate reperele sau poate diferi de la un reper la altul.Fiecare operație
necesită
un anume timp, presupus cunoscut, și două operații
distincte, executabile pe un același utilaj, nu pot fi programate
simultan.Uneori pentru unele repere sunt impuse termene de livrare.
În aceste
ipoteze,cum trebuie organizată lansarea reperelor în execuție
astfel încât:
·
timpul
total de inactivitate al utilajelor să fie minim
sau
·
durata de
execuție
a tuturor reperelor să fie minimă
sau
·
numărul
reperelor al căror
termen de livrare este depășit să fie cât
mai mic etc.
Există
o mare varietate de tipuri de probleme de ordonanțare care se înscriu
în
acest enunț
general. Modelarea lor - prin programare în numere întregi
sau prin grafuri - este în general dificilă, ca să
nu mai vorbim de rezolvarea lor
"exactă",
imposibil de realizat în timp rezonabil, chiar și
atunci când
numărul
reperelor și
al utilajelor este relativ mic. Ca urmare, au fost elaborate euristici de
rezolvare suboptimală, marea lor diversitate fiind explicată
prin aceea că
ele încearcă
să
exploateze particularitățile structurii acestor probleme, particularități
care pot să
difere radical de la o problemă la alta.
Unele
cazuri particulare vor fi studiate în secțiunea 5 a acestui capitol.
2.3 Problema alegerii traseelor O firmă trebuie să
satisfacă
un număr
de cereri de aprovizionare într-o anumită perioadă.
Livrările
se fac de la un anumit depozit și sunt operate cu mai multe de mijloace de
transport, fiecare cu o capacitate limitată. Fiecare vehicul
pleacă
încărcat
de la depozit, vizitează unul sau mai mulți clienți,
cărora
le livrează
comenzile făcute
după
care, complet descărcat, se întoarce la depozit
pentru a fi eventual reîncărcat. Problema care se
pune în
acest context este aceea de a stabili traseele de vizitare ale clienților
astfel încât
distanța
totală
parcursă
de vehicule să
fie minimă.
O
posibilitate de rezolvare suboptimală este descrisă în secțiunea 6 din acest
capitol.
2.4 Problema orariilor Într-o
universitate trebuie programată
activitatea de învățământ
pe următorul
semestru. Se cunosc:
·
numărul
cursurilor care trebuie ținute;
·
numărul
claselor disponibile;
·
profesorii
abilitați
să
țină
cursurile.
Cum trebuie făcută
repartizarea profesorilor pe cursuri și a cursurilor pe
clase astfel încât:
·
două
cursuri diferite să nu fie programate în aceeași
clasă
și
în
același
timp;
·
cursurile
să
fie atribuite profesorilor de specialitate;
·
doi
profesori cu aceeași specialitate să nu fie
repartizați
pe același
curs.
O asemenea repartizare complexă se numește
orar și până
aici s-a formulat doar o problemă de existență.
"Optimizarea" elaborării unui orar este o chestiune delicată
existând
multe criterii de apreciere care nu întotdeauna sunt
concordante. Din punctul de vedere al studenților un orar este
"bun" dacă minimizează totalul deplasărilor
zilnice de la o clasă la alta. Atât pentru studenți
cât
și
pentru profesori contează numărul
"ferestrelor" adică al intervalelor de timp dintre două
activități
zilnice consecutive care ar trebui să fie cât
mai mic, etc.
2.5 O problemă de comunicații
prin satelit Zilnic, un mare volum
de informații
TV, radio sau telefon se transmite prin sateliți. Utilizarea sateliților
a devenit imperios necesară pentru asigurarea transmiterii informațiilor
la mare distanță.
În
mare, un satelit de comunicații este un "releu": el preia
semnalul unei stații
terestre de emisie și îl retransmite altei
stații,
de recepție.Dispozitivul
de la bordul satelitului care realizează legătura
dintre cele două
stații
se numește
transponder sau conector; sateliții moderni au până
la 24 de conectoare. Una din tehnologiile avansate de operare a sistemelor de
comunicații
prin satelit este SS/TDMA (satellite switched time division multiple access) ; în
cadrul acesteia fiecare conector de la bordul satelitului este atribuit -
pentru un interval de timp - unei perechi de zone terestre (stații
de emisie - recepție).
Un set complet de atribuiri se va numi în continuare mod de conectare. Atribuirile ce compun
un mod de conectare se efectuează simultan de la bordul satelitului. O secvență
de moduri de conectare care permite realizarea unui program de legături
pe o perioadă
de timp se numește
structură de conectare.
O problemă importantă care apare în
legătură
cu tehnologia SS/TDMA este planificarea
eficientă
în
timp a momentelor de realizare ale atribuirilor ce compun o structură
de conectare.
Trecem
acum la formalizarea problemei. "Cererea" corespunzătoare
unei structuri de conectare poate fi reprezentată printr-o
matrice:
D = [dij] 1£ i,j £ n
numită matrice
de trafic unde:
n º numărul
total de zone terestre între care trebuie realizate legăturile;
dij
º "lungimea" trenului de date necesar a fi
transmis din zona i în zona j, lungime exprimată
de regulă
prin timpul necesar transmiterii trenului de date respectiv.
Transmiterea acestor date implică
o programare în
timp a conectorilor de pe satelit pe diferite perechi de zone. Aceasta înseamnă
descompunerea matricii de trafic D într-un
număr
de matrici de aceeași dimensiune cu ea, numite matrici de conectare:
cu următoarele proprietăți:
·
pe
fiecare rând
sau coloană
din Dk există cel mult un element nenul (altfel spus, în
Dk există cel mult n elemente nenule, oricare două
nesituate pe același rând sau coloană. Aceasta revine la a spune că
fiecare conector este atribuit la cel mult
o pereche de zone;
·
suma
celor q matrici de conectare este egală cu matricea de trafic
dată:
Rezultă imediat că descompunerea
matricii D în
matrici cu proprietățile de mai sus este posibilă
numai dacă
q ³ n.
Criteriul
de performanță
ce trebuie avut în
vedere în
primul rând
este transmiterea datelor între diferitele zone în timpul cel
mai scurt. Este clar că timpul necesar transmiterii datelor
corespunzătoare
unui mod de conectare este dat de cea mai mare componentă a matricii de
conectare aferente, astfel că timpul total asociat descompunerii (D1,D2,...,Dq)
este:
Cu aceste pregătiri se obține
următoarea
problemă
de optimizare combinatorială:
Să
se determine o descompunere (D1,D2,...,Dq)
a matricii de trafic D în matrici de conectare astfel încât
timpul total de transmisie T să fie minim.
Se observă că dacă
q > n anumite trenuri de date dij din D vor fi fragmentate și
transmise pe parcursul mai multor moduri de conectare. Impunând
condiția
ca fiecare tren de date să fie transmis într-un singur
mod de conectare rezultă
problema:
Să
se descompună
matricea de trafic D în n matrici de conectare D1,D2,...,Dn
astfel încât timpul total de
transmisie T să
fie minim.
§ 3.
Problema arborelui de cost minim
Dată în secțiunea 1 ca un prim
exemplu de problemă de optimizare combinatorială, problema arborelui de cost
minim are numeroase aplicații practice. Contextul general este următorul: un
număr de puncte trebuie conectate între ele pentru facilitarea transmiterii
unui anumit serviciu (telefon, TV, calculator) Între puncte există legături
potențiale a căror realizare implică un anumit cost. Problema care apare este
aceea de a vedea ce legături vor fi efectiv realizate stfel încât:
·
oricare
două puncte să fie conectate direct sau indirect în vederea utilizării
serviciului;
·
suma
costurilor legăturilor realizate să fie minimă.
Exemplul
3.1 [6] Centrul regional de
calculatoare X trebuie să instaleze un număr de linii speciale de comunicații
care să lege cinci utilizatori la un nou computer. Deoarece instalarea rețelei
este costisitoare conducerea centrului dorește ca lungimea totală a liniilor
instalate să fie cât mai mică. Deși computerul central poate fi conectat direct
cu toți utilizatorii ar fi mai
economic să fie instalate linii directe doar către unii, ceilalți intrând în
rețea prin legarea lor la utilizatorii deja conectați.Rețeaua legăturilor
posibile este vizualizată prin graful din fig 3.1. Valorile numerice înscrise
pe muchii reprezintă distanțe în km.
Exemplul
3.2 Prefectura județului X
și-a fixat ca obiectiv modernizarea rețelei drumurilor care leagă între ele
localitățile 1,2,
,8 rețea vizualizată în fig. 3.2. Pe fiecare muchie este
înscrisă o valoare numerică reprezentând costul modernizării tronsonului
respectiv (în milioane lei). Din cauza bugetului limitat, prefectura dorește ca
într-o primă etapă să modernizeze numai unele drumuri astfel încât:
·
între
oricare două localități să se poată circula pe tronsoane modernizate;
·
costul
întregii operații de modernizare parțială să fie minim.
Figura 3.2
Rezolvarea problemelor de acest tip se face cu ajutorul unui algoritm
foarte simplu, datorat lui Kruskal:
·
selectarea
muchiilor care vor forma arborele căutat se va face în ordinea crescătoare a
costurilor;
·
presupunând
că muchiile e1 , e2 ,
, ek au fost deja
selectate, următoarea muchie ek + 1 va fi astfel aleasă încât să nu
formeze ciclu cu (unele din) muchiile e1 , e2 ,
, ek.
Este clar că procedura se oprește după un număr finit de pași. Dacă
numărul total de muchii selectate este n 1, n fiind numărul nodurilor din
graful original, s-a găsit un arbore de cost minim; altminteri, graful dat nu
este conex!
Figura 3.3
§ 4.
Problema comisvoiajorului
Un comisvoiajor are de vizitat un număr de orașe, la sfârșitul voiajului el întorcându-se în localitatea de plecare. Deplasarea dintr-o localitate în alta presupune anumite cheltuieli (sau distanțe de parcurs sau durate de mers).
In
ce ordine trebuiesc vizitate orașele astfel încât
costul total al deplasării (sau lungimea traseului sau durata călătoriei)
să
fie minim?
Astfel enunțată, problema comisvoiajorului (notată pe scurt TSP de la Travelling Salesman Problem) este una din cele mai grele probleme de optimizare combinatorială. Pe lângă importanța teoretică, ea are numeroase aplicații practice. De exemplu, stabilirea celor mai "economice" trasee turistice într-un mare oraș sau zonă istorică (din punctul de vedere al costurilor sau distanțelor) este o probemă a comisvoiajorului. De asemenea, stabilirea ordinii în care un număr de operații (joburi) vor fi executate pe un utilaj, astfel încât suma timpilor de pregătire ai utilajului să fie cât mai mică, este o problemă de același tip.
4.1
Modelul matematic al problemei comisvoiajorului
Să notăm cu 0,1,...,n orașele problemei, 0 fiind orașul din care comisvoiajorul pleacă și în care revine la terminarea călătoriei. Fie cij costul deplasării din localitatea i în localitatea j ¹ i; punem cij = ¥ dacă nu există legătură directă între i și j sau în cazul i = j. Un traseu va fi descris cu ajutorul variabilelor bivalente :
Urmează a fi minimizată funcția:
(4.1.1)
Din orice oraș i, comisvoiajorul trebuie să se îndrepte către o altă localitate, astfel că:
(4.1.2)
In orice oraș ar ajunge, comisvoiajorul vine dintr-o localitate anterior vizitată, așa că:
(4.1.3)
Observăm că ansamblul (4.1.1) - (4.1.3) constituie modelul matematic (PA) al unei probleme generale de afectare. O examinare mai atentă a problemei arată că restricțiile (4.1.2) și (4.1.3) nu definesc numai trasee ce trec prin toate orașele (o singură dată!) ci și "reuniuni" de circuite disjuncte mai mici! Astfel, într-o problemă cu 7 orașe 0,1,...,6 ansamblul:
x03 = x35 = x50 = x21 = x14 = x46 = x67 = x72 = 1 , xij = 0 în rest
satisface restricțiile (4.1.2) și (4.1.3) dar nu constituie un traseu complet așa cum se vede din figura 4.1
Fig. 4.1
Pentru evitarea ecestui neajuns asociem orașelor 1,2,...,n , diferite de localitatea de plecare și sosire 0, variabilele y1,y2,...,yn și introducem inegalitățile:
yi - yj + nŚxij £ n - 1 i , j = 1,2,...,n ; i ¹ j (4.1.4)
In principiu noile variabile pot lua orice valoare reală. Vom arăta că dacă x = (xij) determină un traseu complet atunci există valori numerice y1,y2,...,yn care împreună cu xij satisfac relațiile (4.1.4). Intr-adevăr, definim yi ca fiind numărul de ordine al localității i în cadrul traseului determinat de x. Pentru i ¹ j două situații sunt posibile:
· localitatea j nu urmează imediat după localitatea i. Atunci xij = 0 și (4.1.4) devine yi - yj £ n - 1 ceeace este adevărat având în vedere semnificația acordată valorilor y1,y2,...,yn.
· localitatea j urmează imediat după localitatea i. Atunci yj = yi + 1 , xij = 1 și (4.1.4) se verifică cu egalitate.
Să presupunem acum că z = (xij) definește o reuniune de "subtrasee" disjuncte. Alegem unul care nu trece prin localitatea 0 și fie k numărul deplasărilor cel compun. Presupunând că ar exista valori numerice y1,y2,...,yn care să satisfacă (4.1.4) însumăm pe acelea corespunzătoare deplasărilor de la un oraș la altul din subtraseul ales. Obținem nŚk £ (n - 1)Śk ceeace este evident fals.
In concluzie, ansamblul (4.1.1) - (4.1.4) constituie modelul "corect" al problemei comisvoiajorului. Este vorba de un program mixt ce utilizează atât variabile întregi (bivalente) cât și variabile care pot lua orice valoare. In continuarea unei observații anterioare, putem spune că problema comisvoiajorului (TSP) este o problemă de afectare (PA) (ansamblul (4.1.1) - (4.1.3)) cu restricțiile speciale (4.1.4).
In considerațiile de mai sus costurile cij nu sunt "simetrice" adică este posibil ca cij ¹ cji. Problema simetrică a comisvoiajorului se caracterizează prin cij = cji; aceasta se întâmplă dacă , de exemplu, cij sunt distanțe sau timpi de parcurgere.
Un caz particular al problemei simetrice este așa numita problemă euclidiană a comisvoiajorului în care distanțele cij satisfac inegalitatea triunghiului :
cik £ cij + cjk (") i,j,k.
4.2 Un algoritm exact de rezolvare a problemei
comisvoiajorului
Următorul algoritm, de tip B&B, reduce rezolvarea TSP la rezolvarea unei liste de probleme de afectare. El s-a dovedit suficient de robust pentru probleme asimetrice cu un număr moderat de orașe. Principalul dezavantaj îl reprezintă faptul că numărul problemelor de afectare de rezolvat este impredictibil și poate fi imens în cazul situațiilr reale.Algoritmul este datorat lui Eastman. Ca orice procedură de tip B&B, el utilizează:
· o "locație" xCMB care va reține "cel mai bun" traseu găsit de algoritm până la un moment dat;
· o variabilă zCMB care reține costul traseului memorat în xCMB;
· o listă L de probleme de afectare asemănătoare problemei (PA) și care diferă de problema (PA) inițială prin anumite costuri cij schimbate în ¥;
La start:
· xCMB poate fi locația "vidă" în care caz zCMB = ¥ sau reține un traseu arbitrar ales sau generat printr-o metodă euristică, xCMB fiind inițializat cu costul aferent acestui traseu;
· lista L cuprinde numai problema (PA) inițială, determinată de (4.1.1) - (4.1.3);
Pasul 1. Dacă lista L este vidă Stop. Altminteri, selectează o problemă din lista L . Problema aleasă se șterge din L . Se trece la:
Pasul 2. Se rezolvă problema selectată. Dacă valoarea funcției obiectiv este ³ zCMB se revine la pasul 1. Altminteri, se trece la:
Pasul 3. Dacă soluția optimă este un traseu complet se actualizează xCMB și zCMB după care se revine la pasul 1. Altminteri se trece la:
Pasul 4. (Soluția optimă nu este un traseu ci o reuniune de "subtrasee mai mici"). Din soluția optimă se selectează circuitul cu cel mai mic număr de arce. Pentru fiecare arc (i,j) din circuitul ales (pentru care xij = 1) se adaugă la lista L problema obținută din cea rezolvată punând cij = ¥. Se revine la pasul 1.
Observații: 1) Rațiunea pasului 4 este clară: dacă i ź j ź k ź ... ź l ź i este circuitul selectat este clar că în traseul optim vom avea:
xij = 0 sau xjk = 0 sau ... sau xli = 0.
In consecință, vom căuta traseul optimal printre cele în care xij = 0 și dacă nu este acolo printre cele în care xjk = 0 ș.a.m.d. Limitarea la traseele în care xij = 0 se face efectuând schimbarea cij = ¥.
2) La pasul 4, în lista L vor apare atâtea probleme câte arce are circuitul selectat; de aceea se alege circuitul cu cel mai mic număr de arce!
In raport cu termenii generali ai unei metode B&B, ramificarea are loc la pasul 4 în timp ce mărginirea se efectuează la pasul 2.
Exemplul 4.2.1 Se consideră problema asimetrică a comisvoiajorului cu cinci orașe, definită de următoarea matrice a costurilor:
|
Orașe |
0 |
1 |
2 |
3 |
4 |
|
0 |
¥ |
10 |
25 |
25 |
10 |
|
1 |
1 |
¥ |
10 |
15 |
2 |
|
2 |
8 |
9 |
¥ |
20 |
10 |
|
3 |
14 |
10 |
24 |
¥ |
15 |
|
4 |
10 |
8 |
25 |
27 |
¥ |
Tabelul 4.1
Start. Se pleacă cu traseul 0 ź 1ź 2 ź 3 ź 4 ź 0, care se reține în xCMB și al cărui cost este zCMB = 10 + 10 + 20 + 15 + 10 = 65. Lista L a problemelor de afectare ce urmează a fi rezolvate cuprinde numai problema inițială (PA).
Iterația 1. Se șterge (PA) din lista L și se rezolvă. Se obține soluția optimă:
x04 = x40 =x12 = x23 = x31 = 1 , xij = 0 în rest
ce corespunde reuniunii următoarelor subtrasee:
0 ź 4 ź 0 și 1 ź 2 ź 3 ź 1
Selectăm subtraseul 0 ź 4 ź 0 și adăugăm la L problemele PA1 și PA2 derivate din PA înlocuind c04 respectiv c40 cu ¥ .
Iterația 2. Selectăm problema PA1 și o rezolvăm. Lista L va cuprinde mai departe numai problema PA2. Pentru PA1 se găsește soluția optimă:
x03 = x12 = x24 = x31 = x40 = 1 , xij = 0 în rest.
care corespunde traseului complet 0 ź 3 ź 1 ź 2 ź 4 ź 0. Costul său este 65 = zCMB. Nu am găsit deci un traseu mai bun decât cel pe care-l avem în xCMB.
Iterația 3. Rezolvăm problema PA2, singura rămasă în L .Se obține soluția optimă:
x04 = x12 = x23 = x30 = x41 = 1 , xij = 0 în rest
care corespunde traseului 0 ź 4 ź 1 ź 2 ź 3 ź 0 . Costul noului traseu este 62 < zCMB ,drept care îl reținem în xCMB și actualizăm zCMB = 62.
Deoarece lista L este acum vidă traseul reținut în xCMB este optim.
4.3
Metode euristice de rezolvare aproximativă a problemei
comisvoiajorului
De obicei, soluția optimă a unei TSP este foarte greu de găsit (dacă nu chiar imposibil de găsit) atunci când numărul orașelor de vizitat este mare (peste 50). Pentru determinarea unei soluții măcar acceptabile au fost elaborate mai multe procedee euristice. Aceste procedee merită atenție din două puncte de vedere:
· se poate da un "certificat de garanție" pentru soluția obținută în sensul că este posibilă evaluarea "depărtării" maxime de soluția optimă;
· soluția aproximativă este găsită cu un efort de calcul relativ moderat și într-un timp rezonabil, aceasta însemnând că cei doi parametri depind polinomial de dimensiunea problemei (adică numărul de orașe);
In multe situații practice, procedeele euristice au condus chiar la soluția optimă dar acest lucru a fost confirmat numai prin aplicarea unui algoritm exact.
In principiu, o metodă euristică construiește o soluție prin tatonare, din aproape în aproape, făcând la fiecare pas, cea mai bună alegere posibilă. Din nefericire, această "schemă" nu conduce, de regulă, la cea mai bună alegere globală.
In continuare, vom prezenta mai multe euristici pentru rezolvarea problemei euclidiene a comisvoiajorului, adică a problemei în care cij sunt distanțe ce satisfac:
·
condiția de
simetrie: cij = cji:
·
inegalitatea triunghiului cik
£ cij + cjk;
Euristica E1 (mergi la cel mai apropiat vecin)
·
se pleacă din localitatea
0 către
localitatea cea mai apropiată;
·
din ultima localitate vizitată
se pleacă
către
cea mai apropiată localitate
nevizitată; în
caz că
nu mai există
localități
nevizitate se revine în locul de plecare;
Exemplul 4.3.1 Să considerăm cele 13 orașe din rețeaua laticială din figura 4.2; distanțele dintre orașe sunt date în tabelul 4.2.
Aplicând euristica descrisă se obține traseul din figura 4.3 cu lungimea 5099.
Figura 4.2 Figura 4.3
Localitatea |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
|
0 |
¥ |
100 |
141 |
360 |
500 |
400 |
1000 |
1019 |
1204 |
806 |
632 |
1004 |
1204 |
|
1 |
|
¥ |
100 |
282 |
447 |
412 |
1004 |
1004 |
1140 |
721 |
538 |
905 |
1170 |
|
2 |
|
|
¥ |
223 |
360 |
316 |
905 |
905 |
1063 |
670 |
509 |
900 |
1140 |
|
3 |
|
|
|
¥ |
200 |
360 |
854 |
806 |
860 |
447 |
300 |
707 |
921 |
|
4 |
|
|
|
|
¥ |
300 |
670 |
608 |
707 |
400 |
360 |
761 |
900 |
|
5 |
|
|
|
|
|
¥ |
600 |
632 |
943 |
700 |
632 |
1044 |
1200 |
|
6 |
|
|
|
|
|
|
¥ |
200 |
806 |
921 |
1000 |
1345 |
1341 |
|
7 |
|
|
|
|
|
|
|
¥ |
608 |
781 |
894 |
1204 |
1166 |
|
8 |
|
|
|
|
|
|
|
|
¥ |
509 |
728 |
824 |
640 |
|
9 |
|
|
|
|
|
|
|
|
|
¥ |
223 |
424 |
500 |
|
10 |
|
|
|
|
|
|
|
|
|
|
¥ |
412 |
632 |
|
11 |
|
|
|
|
|
|
|
|
|
|
|
¥ |
360 |
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
¥ |
Tabelul 4.2
Euristica E2 (Ajustare locală)
· se pleacă de la un traseu complet, determinat fie "la întâmplare" fie printr-o altă euristică;
· se caută două arce (u,v) și (x,y) ale traseului care se încrucișează - ca în figura 4.4 a) - și se compară distanțele cuv + cxy cu cux + cvy. Dacă cuv + cxy > cux + cvy se înlocuiesc arcele (u,v) și (x,y) cu (u,x) și (v,y) obținându-se un traseu de lungime mai mică (vezi figura 4.4 b));
· procedura se oprește în momentul în care nu mai există situații similare cu cea descrisă;
Figura 4.4 a) Figura 4.4 b)
Exemplul 4.3.2 Pentru ilustrare să considerăm traseul obținut din euristica E1. In figura 4.3 este vizibilă încrucișarea arcelor (10,11) și (12,0). Deoarece:
c10,11 + c12,0 = 424 +1264 = 1688 > 1636 = 632
+ 1004 = c10,12 + c11,0
un traseu mai scurt se obține folosind arcele (10,12) și (11,0) așa cum se arată în figura 4.5 a).
a) b)
Figura 4.5
Lungimea noului traseu este: 5099 - (1688 - 1636) = 5047.
Rezolvând analog încrucișarea nou apărută a arcelor (1,2) și (11,0) - vezi figura 4.5 a) - în care:
c1,2 + c11,0 = 100 + 1004 = 1104 > 1046 = 141
+ 905 = c0,2 + c11,1
se obține traseul din figura 4.5 b) cu lungimea: 5047 - (1104 - 1046) = 4989.
Deoarece în noul traseu nu mai apar încrucișări euristica E2 se oprește.
Următoarele procedee sunt "mai performante" dar necesită și un efort de calcul "mai mare".
Euristica E3
· Se determină un arbore H de lungime minimă (aceasta este o problemă "ușoară" rezolvabilă de exemplu cu algoritmul lui Kruskal, vezi sețiunea 3);
· fiecare muchie a arborelui H șe înlocuiește cu două muchii de aceeași lungime. Se obține un multigraf H' în care fiecare nod are grad par. Conform teoremei lui Euler în H' există un ciclu eulerian; cu alte cuvinte, este posibil să se viziteze orașele astfel încât fiecare muchie a multigrafului H' să fie parcursă o singură dată.
Fie:
0 ź x ź y ź ¼ ź u ź v ź 0 (4.3.1)
succesiunea în care muchiile multigrafului H' au fost parcurse. Lungimea acestui "traseu" este de două ori mai mare decât lungimea arborelui minimal H. In această secvență, unul sau mai multe orașe apar de mai multe ori. Vom proceda atunci la următoarea operație de scurtcircuitare:
· în succesiunea (4.3.1) se determină prima tripletă de orașe succesiv vizitate
i ź j ź k
cu proprietatea că orașul j "din mijloc" mai apare ulterior în succesiune. Se înlocuiește secvența i ź j ź k cu arcul i ź k. Prin această scurtcircuitare:
· fiecare oraș continuă să fie vizitat cel puțin o dată;
· noul traseu este mai scurt pentru că cij + cjk ³ cik;
Operația de scurtcircuitare se repetă până când în secvența (4.3.1) "actualizată" fiecare oraș, cu excepția localității 0 apare o singură dată.
Se poate demonstra că lungimea traseului obținut prin această euristică este cel mult de două ori mai mare decât lungimea traseului optim (în practică lucrurile stau însă mai bine...)
Figura 4.6
Exemplul 4.3.3 In figura 4.6 este vizualizat un arbore minimal H pentru graful din figura 4.2. Un ciclu eulerian în multigraful H', dedus din H prin "dublarea" muchiilor acestuia, arată astfel:
0 ź 1 ź 2 ź 3 ź 4 ź 5 ź 6 ź 7 ź 6 ź 5 ź 4 ź 3 ź 10 ź 9 ź 8 ź 9 ź 10 ź 11 ź 12 ź 11 ź 10 ź 3 ź 2 ź 1 ź 0
În succesiunea 0 ź 1 ź 2 de lungime c01 + c12 = 100 + 100 = 200 orașul 1 mai este vizitat "în final". Conform celor de mai sus, vom înlocui această succesiune cu arcul direct 0 ź 2 de lungime 141 < 200. Rezultă traseul:
0 ź 2 ź 3 ź 4 ź 5 ź 6 ź 7 ź 6 ź 5 ź 4 ź 3 ź 10 ź 9 ź 8 ź 9 ź 10 ź 11 ź 12 ź 11 ź 10 ź 3 ź 2 ź 1 ź 0
Mai departe succesiunea 0 ź 2 ź 3 de lungime 141 + 223 = 364 se înlocuiește cu arcul direct 0 ź 3 cu lungimea 360, pentru că prin orașul 2 se mai trece o dată!
Continuând procesul de scurtcircuitare se obține în final traseul complet:
0 ź 7 ź 6 ź 5 ź 4 ź 8 ź 9 ź 12 ź 11 ź 10 ź 3 ź 2 ź 1 ź 0
vizualizat în figura 4.7; lungimea sa este 5330. Rezolvând "încrucișarea" arcelor (0,7) și (5,4) se obține traseul mai scurt din figura 4.8 cu lungimea 5019.
Figura 4.7 Figura 4.8
Menționăm faptul că euristica descrisă poate da rezultate diferite, unele mai bune altele mai puțin bune, funcție de alegerea arborelui minimal H și a ciclului eulerian în multigraful asociat H'.
Euristica
E4
Această procedură, datorată lui Cristofides, este o rafinare a euristicii precedente. Deoarece suma gradelor nodurilor din arborele H este pară, numărul nodurilor de grad impar este par! Folosind numai aceste noduri și muchiile dintre ele vom determina cuplajul C de pondere minimă, ponderile muchiilor luate în calcul fiind distanțele dintre extremități.
Fie H' graful rezultat din H prin adăugarea muchiilor cuplajului C, cu mențiunea că dacă între două noduri avem o muchie în H și o alta în C, graful H' va avea între nodurile respective două muchii.Prin construcție, în H' fiecare nod are grad par, astfel că H' are un ciclu eulerian. Plecând de aici și utilizând tehnica scurtcircuitării se ajunge la un traseu complet.
Se
poate arăta
că
lungimea acestui traseu nu depășește 3/2 din lungimea
traseului optim.
Exemplul 4.3.4 Reluăm problema euclidiană a comisvoiajorului definită în figura 4.2 și tabelul 4.2. Un arbore minimal cu lungimea 3527 apare în figura 4.6. Nodurile din H de grad impar sunt 0, 3, 7, 8 și 12. Prin simpla inspecție (sau utilizând un algoritm de determinare a cuplajului de pondere minimă în subgraful complet ale cărui noduri sunt 0, 3, 7, 8 și 12) se constată că muchiile {0,3} , {7,8} și {10,12} au cea mai mică pondere totală: c03 + c78 + c10,12 = 360 + 608 + 632 = 1600. Adăugând cele trei muchii la arborele H se obține graful H' din figura 4.9. Vizitând orașele 0,1,...,12 în ordinea:
0 ź 1 ź 2 ź 3 ź 4 ź 5 ź 6 ź 7 ź 8 ź 9 ź10 ź 11 ź 12 ź 10 ź 3 ź 0
toate muchiile grafului H' vor fi parcurse o singură dată. "Scurtcircuitând" secvențele 2 ź 3 ź 4 și 9 ź10 ź 11 se obține un traseu complet cu lungimea 4853. Invităm cititorul să se convingă prin desen că în acest traseu arcele (9,11) și (12,10) respectiv (1,2) și (3,0) se încrucișează. Rezolvând și aceste încrucișări se obține în final traseul din figura 4.10 cu lungimea 4672.
Ca și euristica precedentă și E4 poate conduce la rezultate diferite, funcție de alegerea arborelui minimal H, al cuplajului C și al ciclului eulerian în (multi)graful H'.
Figura 4.9 Figura 4.10
§ 5. Introducere în
problema ordonanțării
5.1 Problema ordonanțării. Aspecte generale
Considerăm un proces tehnologic în care, asupra unor obiecte (materie primă, semifabricate) denumite generic repere, se efectuează o serie de transformări cantitative și/sau calitative în vederea obținerii unor produse (acestea pot fi produse finite sau semifabricate mai complexe ce devin repere în alte procese tehnologice). Transformările (prelucrările) pe care le suferă un reper în diferitele faze ale procesului tehnologic se execută pe utilaje specializate. Pentru precizia limbajului vom numi operație totalitatea acțiunilor de prelucrare efectuate asupra unui reper pe un anumit utilaj. In principiu, un utilaj poate executa operații aferente mai multor repere dar, la un moment dat, nu poate executa decât o singură operație.
Efectuarea unei operații presupune utilizarea unor resurse materiale sau bănești; avem în vedere în primul rând durata operației care se "extrage" din fondul de timp productiv al utilajului pe care se execută operația respectivă.
In contextul descris, problema ordonanțării reperelor pe utilaje înseamnă programarea în timp a operațiilor necesare obținerii diferitelor produse din nomenclatorul procesului tehnologic studiat, adică stabilirea ordinii și a termenelor la care urmează a fi efectuate aceste operații.
In elaborarea unui program concret de lansare în fabricație trebuie să se țină seama de un mare număr de factori cei mai mulți fiind specifici procesului tehnologic studiat. Vom menționa pe cei mai importanți fără pretenția de epuizare a subiectului.
· Cu puține excepții, planificarea nu se referă la repere individualizate ci la loturi de repere. În această situație, este posibil ca după ce o anumită operație a fost executată pe o parte a unui lot de repere, utilajul să fie eliberat și pregătit pentru o operație ce se efectuează pe reperele altui lot, restul reperelor din lotul anterior urmând a fi prelucrat mai târziu. Deoarece în procesul de modelare un lot de repere identice este asimilat cu un singur reper (dar cu o durată de execuție proporțională cu mărimea lotului), situația descrisă mai sus este echivalentă cu întreruperea unei operații și reluarea ei la un moment ulterior. In consecință, lansarea în execuție a reperelor pe utilaje poate fi concepută cu acceptarea sau neacceptarea ipotezei de întrerupere a operațiilor.
· Ordinea în care se execută cel puțin unele din operațiile aferente unui reper este esențială în foarte multe cazuri practice. Ca și în analiza drumului critic, condiționările dintre operațiile unui reper pot fi complet descrise cu ajutorul relației de precedență directă: operația a precede direct operația b dacă b poate fi executată imediat după terminarea operației a. Putem vizualiza structura tehnologiei de fabricație a unui reper printr-un graf orientat ale cărui noduri sunt operațiile reperului în cauză, arcele reprezentând precedențele directe dintre operații.
Din punctul de vedere al ordinii în care se execută operațiile, problemele de ordonanțare implicând utilizarea a cel puțin două mașini se clasifică în trei categorii:
1) ordinea în care se execută operațiile oricărui reper este neesențială (open shop);
2) toate reperele parcurg utilajele într-o aceeași ordine (flow shop);
3) fiecare reper parcurge utilajele într-o anumită ordine definită de tehnologia de fabricație a reperului (job shop);
· In practică, pentru orice reper (sau lot de repere) există un termen de predare (livrare) la care toate operațiile trebuiesc încheiate; în consecință, un program concret de lansare în execuție va fi apreciat ca admisibil dacă operațiile fiecărui reper sunt încheiate înaintea termenului de predare.
· De cele mai multe ori, pentru a fi siguri că termenele de predare vor fi respectate, planificatorii își fixează pentru fiecare reper (sau lot de repere) un termen "intern" de predare care devansează mai mult sau mai puțin, funcție de specificul situației concrete, termenele de livrare. Există și alte rațiuni care impun asemenea termene, ca de exemplu eliberarea utilajului la o anumită dată în vederea executării altor comenzi. Aceste termene "interne", denumite de obicei termene impuse, sunt foarte utile în aprecierea diferitelor programe posibile de lansare în execuție în sensul că un program va fi socotit mai bun decât altul dacă întârzierile față de termenele impuse vor fi mai mici fie pe total fie individual.
· Intr-o situație concretă, toate programele admisibile de ordonanțare raportează termenele de execuție ale operațiilor la un același moment de referință: zero sau o dată calendaristică. Deseori se întâmplă ca unele din utilajele necesare prelucrării reperelor situației să nu fie disponibile la momentul de referință, fiind antrenate în executarea altor comenzi. In raport cu momentul de referință ales de planificator, fiecare utilaj va avea un termen de eliberare de la care el devine disponibil (accesibil) și un program viabil (realist) de ordonanțare trebuie să țină seama de aceste termene.O chestiune similară se pune și în cazul reperelor care nu întotdeauna sunt disponibile la momentul de referință ci la anumite termene minime de lansare în execuție.
· De obicei, pentru a executa o anumită operație, utilajul desemnat trebuie pregătit (reglat). Există cazuri în care timpul de pregătire este apreciabil și trebuie luat în considerare în elaborarea unui program realist de ordonanțare. Lucrurile se complică foarte mult dacă avem în vedere faptul că timpul de pregătire nu depinde numai de operația ce urmează a fi executată ci și de operația anterior executată pe același utilaj.
· Este posibil ca, pentru executarea unei operații, să fie disponibile mai multe utilaje, fie identice, fie neidentice ca performanță. Este clar că, în al doilea caz, durata efectivă de execuție a operației depinde de performanțele utilajului desemnat.
Cu toate că lista factorilor restrictivi ar putea fi continuată, situațiile concrete de ordonanțare implică un număr enorm de programe admisibile. Se impune alegerea unui criteriu de performanță care să clasifice aceste programe. Criteriile pot diferi de la o situație la alta și chiar pentru una și aceeași situație se pot formula criterii independente (care să conducă la soluții diferite). Vom cita, cu titlu informativ, câteva din criteriile de performanță ce pot fi avute în vedere:
· minimizarea termenului la care toate operațiile de prelucrare ale reperelor sunt încheiate;
· minimizarea sumei întârzierilor față de termenele impuse;
· minimizarea celei mai mari întârzieri față de termenele impuse;
· minimizarea numărului de repere întârziate (față de termenele impuse);
· minimizarea sumei timpilor de pregătire - în cazul mai multor repere și a unui singur utilaj;
Este clar că din combinarea factorilor mai sus amintiți și a criteriilor de performanță adecvate rezultă o mare varietate de probleme de ordonanțare. Cercetările în domeniu - unele de ordin exclusiv "bibliografic" - au condus la identificarea a peste 3000 de probleme diferite.
Pentru ușurarea activității de inventariere și clasificare a problemelor de ordonanțare a fost introdusă eticheta a / b / g în care:
· a este un câmp ce conține informații privind numărul și caracteristicile utilajelor precum și ordinea de parcurgere a acestora;
· b este un câmp ce coține informații privitoare la operații: termene impuse, termene de livrare,termene de eliberare ale utilajelor, precedențele dintre operații (dacă există), posibilitatea de a intrerupe operațiile etc;
· g este un câmp care specifică criteriul de performanță utilizat;
In marea lor ,majoritate, problemele de ordonanțare sunt dificile în sensul că soluția optimă este foarte greu de găsit dacă nu chiar imposibil de găsit în timp rezonabil chiar și pentru probleme de gabarit "moderat". Acesta este și motivul (a câta oară?) pentru care în asemenea situații se încearcă o rezolvare "aproximativă" bazată pe metode euristice.
5.2
Ordonanțarea
pe o mașină
Un număr de repere (joburi) codificate 1,2,...,n trebuiesc lansate în execuție pe un singur utilaj.
1) Fiecărui reper îi sunt asociate următoarele date:
·
durata pj;
·
termenul impus dj;
·
termenul minim de lansare în execuție rj;
·
termenul de livrare ;
·
timpul de pregătire pij al utilajului pentru trecerea de la jobul i
la jobul j;
Este clar că rj + pj £ dj £ . Unele dintre aceste date pot fi ignorate într-un caz concret sau altul; în orice caz "obligatorii" sunt duratele și în cele mai multe cazuri termenele impuse.
2) In ansamblul lor joburile pot fi:
· independente, putând fi lansate în fabricație în orice ordine;
· intercondiționate;
3) Joburile pot fi executate:
· cu întrerupere;
· fără întrerupere;
4) Fiecărui job i se atașează o variabilă Cj reprezentând momentul terminării execuției sale.
Notă: toate termenele impuse, de livrare, de terminare sunt raportate la un același moment de referință 0 astfel că toate sunt exprimate prin numere reale nenegative.
5) Calitatea unui program de lansare în execuție a joburilor poate fi evaluată prin mai multe criterii de performanță.
a) de tip loc îngust:
· minimizarea întârzierii maxime:
· minimizarea costului maxim datorat întârzierilor:
unde fj(Cj) este o funcție nedescrescătoare în variabilă Cj cu fj(Cj) = 0 dacă Cj £ dj;
b) de tip aditiv:
· minimizarea sumei costurilor datorate întârzierilor: ;
· minimizarea sumei ponderate a termenelor de terminare: ;
· minimizarea sumei întârzierilor efective: ;
· minimizarea numărului de joburi întârziate: unde
;
c) care depind nu numai de caracteristicile individuale ale joburilor dar și de ordinea în care sunt lansate în execuție: ;
6) Codificarea a / b / g va avea, pentru problemele de ordonanțare pe o mașină, următoarea alcătuire:
· a = 1;
· indicatorul b va avea trei câmpuri b º ( ¾ , ¾ , ¾ ). In primul câmp se trec datele opționale rj,dj,,pij luate în considerare. In al doilea câmp se specifică existența intercondiționărilor prin simbolul p. In ultimul câmp se indică posibilitatea întreruperii execuției unui job prin simbolul P.
· indicatorul g specifică funcția de optimizat.
7) Se observă ușor că prin combinarea tuturor elementelor amintite mai sus se obține o mare varietate de situații de ordonanțare pe o mașină. Problemele asociate acestor situații se împart în:
·
probleme ușoare:
probleme pentru care se cunosc metode exacte de rezolvare ce determină
soluția
optimă
în
timp polinomial;
·
probleme grele: probleme pentru care metodele exacte de rezolvare cunoscute
nu sunt polinomiale. Pentru rezolvarea aproximativă a acestor
probleme se utilizează diferite euristici.
·
probleme nedecise.
Câteva probleme de ordonanțare "ușoare" ,împreună cu metodele adecvate de rezolvare, vor fi prezentate în continuare.
1) 1 / dj / Lmax In această problemă se cunosc termenele impuse și se cere ordonarea reperelor astfel încât să se minimizeze întârzierea maximă.
Soluția optimă se obține aplicând regula : are prioritate jobul cu termenul impus cel mai mic.
Exemplul 5.2.1 Pentru situația cu datele:
Reper |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Durata pj |
3 |
4 |
4 |
6 |
9 |
11 |
15 |
Termene impuse dj |
22 |
28 |
36 |
21 |
15 |
35 |
31 |
Tabelul 5.1
durata de execuție a tuturor reperelor este 3 + 4 + 4 + 4 + 6 + 9 + 11 + 12 = 52 unități de timp indiferent de ordinea în care sunt lansate în prelucrare; ordinea în care se minimizează întârzierea maximă este 5 ź 4 ź 1 ź 2 ź 7 ź 6 ź 3.
Reper j |
5 |
4 |
1 |
2 |
7 |
6 |
3 |
Moment de terminare Cj |
9 |
15 |
18 |
22 |
37 |
48 |
52 |
Intârziere față
de termenul impus |
- |
- |
- |
- |
6 |
13 |
16 = Lmax |
Tabelul 5.2
2) 1 / dj , p / Lmax Noua problemă diferă de precedenta prin existența unor relații de precedență între unele operații. Ea se rezolvă foarte simplu prin regula: dintre reperele încă neprogramate și fără succesori direcți se programează "cel mai târziu" reperul cu cel mai mare termen impus.
3) 1 / - / S wjCj In această situație, se urmărește minimizarea sumei ponderate a termenelor de terminare. Reperele vor fi lansate în ordinea în care rapoartele pj/wj formează un șir nedescrescător.
Exemplul 5.2.2
Reper j |
1 |
2 |
3 |
4 |
|
|
|
Durata
pj |
15 |
28 |
6 |
10 |
|
programul |
|
Ponderea
wj |
3 |
7 |
1 |
5 |
Þ |
optim de |
4 ź 2 ź 1 ź 3 |
pj/wj |
5 |
4 |
6 |
2 |
|
lansare |
|
Tabelul 5.3
4) 1 / / Față de prima problemă, acum se dau termene de livrare care, spre deosebire de termenele impuse, trebuiesc respectate. In plus, se urmărește minimizarea sumei termenelor de terminare ale operațiilor. Următorul algoritm rezolvă problema indicând, dacă este cazul, incompatibilitatea ei.
Vom nota cu S mulțimea reperelor neprogramate.
Start S = {1,2,...,n}
Pasul 1. Se determină mulțimea: C = {k Î S ç} Dacă C este vidă Stop. Altminteri:
Pasul 2. Se selectează reperul k* Î C cu cea mai mare durată: și se programează cel mai târziu.
Pasul 3. Se face actualizarea S = S \ {k*} și se revine la pasul 1.
Deoarece la fiecare iterație se programează un reper, algoritmul se oprește după n - 1 iterații.
Exemplul 5.2.3 In tabelul 5.4 se dau următoarele date privitoare la opt repere.
|
Reper |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Durata |
10 |
7 |
4 |
8 |
5 |
2 |
9 |
5 |
|
Termene de livrare |
35 |
50 |
61 |
59 |
15 |
55 |
19 |
28 |
Tabelul 5.4
(așa cum s-a mai spus, termenele de livrare sunt raportate la momentul de referință 0)
Start S = {1,2,3,4,5,6,7,8}
Iterația 1.
Pasul 1. =50 Þ C = {2,3,4,6};
Pasul 2. = 8 = p4 Þ se programează la sfârșit reperul 4;
Pasul 3. S = {1,2,3,5,6,7,8}.
Iterația 2.
Pasul 1. =50 - 8 = 42 Þ C = {2,3,6};
Pasul 2. = 7 = p2 Þ se programează la sfârșit reperul 2;
Pasul 3. S = {1,3,5,6,7,8}.
Iterația 3.
Pasul 1. =42 - 7 = 35 Þ C = {1,3,6};
Pasul 2. = 10 = p1 Þ se programează la sfârșit reperul 1;
Pasul 3. S = {3,5,6,7,8}.
ș.a.m.d. După șapte iterații se obțin rezultatele sintetizate în următorul tabel:
Reper
j |
6 |
5 |
7 |
3 |
8 |
1 |
2 |
4 |
Durata
pj |
2 |
5 |
9 |
4 |
5 |
10 |
7 |
8 |
Termen de începere |
0 |
2 |
7 |
16 |
20 |
25 |
35 |
42 |
Termen de terminare Cj |
2 |
7 |
16 |
20 |
25 |
35 |
42 |
50 |
Termen de livrare |
55 |
15 |
19 |
61 |
28 |
35 |
50 |
59 |
S Cj |
2 |
9 |
25 |
45 |
70 |
105 |
147 |
197 |
Tabelul 5.5
4)Alte exemple de probleme "ușoare" sunt 1 / dj / S Uj în care se minimizează suma joburilor întârziate sau 1 / dj / S wjCj în care se minimizează suma ponderată a termenelor de terminare.
Problema 1 / rj , dj / Lmax este recunoscută a fi o problemă "dificilă". Dacă se compară noua situație cu cea din problema "ușoară" 1 / dj / Lmax se constată că "dificultatea" rezolvării se datorează prezenței termenelor de disponibilitate rj. Aici este interesant de menționat faptul că dacă este permisă întreruperea operațiilor, problemele 1 / rj , dj,P / Lmax sau fmax și chiar 1 / rj , dj, p, P / Lmax sau fmax sunt "ușoare".
Deasemenea dificilă este și problema 1 / dj / S Tj în care se minimizează suma întârzierilor efective.
Despre problema 1 / rj, p,`dj, P / S Cj nu se poate spune, în prezent, dacă este ușoară sau dificilă.
5.3
Ordonanțarea în flux pe două mașini
Ordonanțarea în flux (Flow shop) este o problemă grea cu foarte puține excepții. Una dintre aceste excepții este ordonanțarea pe două mașini. Problema este următoarea:
Un număr de repere 1,2,...,n sunt prelucrate fiecare întâi pe utilajul U1 și apoi pe utilajul U2. Se cunosc duratele operațiilor pe fiecare din cele două utilaje. Se cere determinarea ordinii de lansare în execuție astfel încât durata realizării tuturor reperelor să fie minimă.
Pentru rezolvarea problemei se utilizează următorul algoritm, datorat lui Johnston.
Pasul 1. Se determină minimul duratelor tuturor operațiilor.
·
dacă acest minim
reprezintă
durate unei operații
efectuate pe utilajul U1 atunci reperul corespunzător
se programează
la început, bineînțeles
după
reperele anterior programate "la început";
·
dacă minimul
reprezintă
durata unei operații
efectuate pe utilajul U2 reperul corespunzător se
programează
la sfârșit,
dar înaintea
celor deja programate "la sfârșit";
Pasul 2. Se elimină din listă reperul programat și se reia pasul 1.
Observație In cazul în care minimul calculat în pasul 1 nu este unic, putem avea trei situații:
· minimul este egal cu durata unei operații pe primul utilaj dar și cu durata unei operații pe al doilea utilaj. Reperul corespunzător operației de pe primul utilaj se programează la început iar reperul corespunzător celeilalte operații, la sfârșit.
· minimul este egal cu duratele a două operații de pe primul utilaj. Se va plasa mai în față reperul a cărui operație pe al doilea utilaj durează mai puțin.
·
minimul este egal cu duratele a
două
operații
pe al doilea utilaj. Se va plasa mai la
sfârșit
reperul a cărui
operație
pe primul utilaj durează
mai puțin.
Exemplul 5.2.4 Aplicând algoritmul descris problemei cu datele din tabelul 5.6
Reper
j |
1 |
2 |
3 |
4 |
5 |
6 |
Durata operației pe utilajul U1 |
4 |
8 |
3 |
6 |
7 |
5 |
Durata operației pe utilajul U2
|
6 |
3 |
7 |
2 |
8 |
4 |
Tabelul 5.6
se obține următorul program optim de lansare: 3 ź 1 ź 5 ź 6 ź 2 ź 4. Programarea în timp a execuției rezultă din diagrama:
Utilaj U1 |
R3 |
R1 |
R5 |
R6 |
R2 |
R4 |
|
|
Utilaj U2 |
|
R3 |
R1 |
R5 |
R6 |
R2 |
|
R4 |
Termenele de începere
ale diferitelor operații |
0 |
3 |
7 |
10 |
14 |
16 |
19 |
24 |
27 |
28 |
31 |
33 |
Figura 5.1
Timpul total de prelucrare al tuturor reperelor este de 35 de unități de timp.
Problema generală de ordonanțare Job shop este de departe cea mai complicată. Un număr de repere 1,2,...,m se prelucrează pe n utilaje 1,2,...,n fiecare reper parcurgând utilajele într-o anumită ordine dictată de tehnologia de fabricație. Se presupun cunoscute duratele operațiilor. Reamintim că un utilaj nu poate procesa la un moment dat decât un singur reper. Nu există restricții privind ordinea în care se execută operațiile de prelucrare ale diferitelor repere pe un același utilaj. Cum trebuiesc lansate reperele pentru ca timpul total de prelucrare să fie minim?
Spațiul limitat nu ne îngăduie să zăbovim asupra acestei probleme care ea singură poate constitui subiectul unei cărți de sine stătătoare!
§ 6. Problema stabilirii
traseelor de transport
Într-o formă simplificată, problema stabilirii traseelor de transport ( pe scurt problema STT) se enunță astfel:
O firmă urmează să livreze un produs mai multor clienți P1 , P2 ,..., Pn în cantitățile q1 , q2 ,...,qn. Livrările se fac de la un depozit al firmei, notat P0 , folosindu-se pentru aceasta un parc de mijloace de transport de diferite capacități.Fie T1 ,T2 ,...,Tm tipurile acestor vehicule diferențiate atât prin capacitățile lor c1 , c2 ,..., cm cât și prin numărul s1 , s2 ,..., sm de unități disponibile pentru efectuarea transporturilor.Prin contract, cererea fiecărui client trebuie onorată la un singur transport. Fiecare vehicol inclus în programul de livrări pleacă de la depozitul P0 încărcat sau nu la capacitatea maximă, vizitează succesiv un număr de clienți și după ce se golește se întoarce la depozit pentru o eventuală nouă încărcare și trimitere pe teren. În acest context, se pune problema de a stabili traseele de vizitare ale clienților precum și tipul si numărul de mijloace de transport necesare satisfacerii tuturor cererilor astfel încât distanța totală parcursă să fie minimă.
Problema STT este una din cele mai complexe probleme de optimizare combinatorială. Ea este o generalizare a problemei comisvoiajorului; Intr-adevăr, dacă ar exista un singur mijloc de transport a cărui capacitate acoperă suma tuturor cererilor clienților atunci STT se reduce la determinarea ordinii în care clienții sunt vizitați astfel încât distanța totală parcursă să fie minimă (vezi fig. 6.1)
Au fost propuse un număr de metode exacte de rezolvare a problemei STT dar eficacitatea lor - pe probleme reale, de dimensiuni mari - este destul de redusă. Mult mai atractive s-au dovedit metodele euristice, capabile să ofere în timp util și cu un efort de calcul rezonabil soluții acceptabile. Un exemplu de metodă de rezolvare aproximativă este procedura Clarke - Wright [ ], descrisă succint în continuare.
1) La început se consideră că fiecare client este aprovizionat direct de la depozit cu un mijloc de transport special detașat să facă acest lucru. (vezi fig. 6.2)
2) În continuare se încearcă concatenarea acestor trasee în scopul reducerii distanței totale. Să examinăm fig 6.3a):
Figura 6.3
în care apar două trasee de lungimiD , D'. În fiecare traseu s-au pus în evidență doi clienți Pi , Pj vecini cu depozitul P0 (relativ la un traseu dat un client se va numi vecin cu P0 dacă el este fie primul fie ultimul client vizitat; doi clienți se vor zice vecini dacă în traseul dat ei sunt vizitați consecutiv) Concatenarea este ilustrată în fig. 5.3b). Din figură se vede că lungimea traseului rezultat este egală cu:
(D - di) + dij + (D' - dj) = D + D' - (di + dj - dij) = D + D' - sij (6.1)
unde:
sij
= di + dj - dij
dij fiind distanța dintre Pi și Pj. Mărimile sij , 1 £ i ¹ j £ n se numesc generic reduceri. Este evident că:
sij
³ 0 și sij = sji
Din (6.1) rezultă atunci că, prin concatenarea a două trasee distanța totală parcursă se micșorează.
3) Revenind la fig 6.3a) fie Q și Q' totalurile cererilor clienților de pe cele două trasee. Cum fiecare traseu este deservit de un singur mijloc de transport este clar că pe cele două trasee sunt fixate două vehicole ale căror capacități de transport - eventual diferite - acoperă cantitățile Q și Q'. Pe traseul din fig. 6.3b) va trebui transportată cantitatea Q + Q' și aceasta de către un singur vehicol! În concluzie concatenarea celor două trasee este admisibilă numai dacă se dispune de un mijloc de transport a cărui capacitate acoperă sumă Q + Q'.
4) Deoarece la un moment dat pot exista mai multe concatenări admisibile, are prioritate aceea care produce cea mai mare reducere a distanței totale de parcurs.
5) Procesul se oprește în momentul în care nu mai există concatenări admisibile.
Exemplu 6.1 Se consideră rețeaua din fig. 6.4. Cantitățile comandate qi , distanțele di de la depozitul P0 la clienții Pi distanțele dij dintre clienți și reducerile sij = di + dj - dij sunt indicate în tabelul 6.1. Firma are disponibile numai vehicole cu capacitatea de 6000 unități.
Client Pi |
Cerere qi |
Distanța di:P0 - Pi |
Trasee |
Cant. circulată pe un traseu |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
|
P1 |
1100 |
316 |
1 |
Ź ź |
1100 |
* |
316 224 |
247 608 |
88 640 |
1 539 |
0 632 |
50 849 |
P2 |
1300 |
224 |
2 |
Ź ź |
1300 |
|
* |
363 400 |
212 424 |
48 400 |
40 500 |
167 640 |
P3 |
1200 |
539 |
3 |
Ź ź |
1200 |
|
|
* |
635 316 |
197 566 |
215 640 |
622 500 |
P4 |
1200 |
412 |
4 |
Ź ź |
1200 |
|
|
|
* |
320 316 |
367 361 |
771 224 |
P5 |
1900 |
224 |
5 |
Ź ź |
1900 |
|
|
|
|
* |
440 100 |
395 412 |
P6 |
1800 |
316 |
6 |
Ź ź |
1800 |
|
|
|
|
|
* |
499 400 |
P7 |
1700 |
583 |
7 |
Ź ź |
1700 |
|
|
|
|
|
|
* |
Tabelul 6.1
La start se presupune că fiecare client Pi este servit de un singur mijloc de transport care face traseul P0 ź Pi ź P0 ; vor fi deci șapte trasee însumând 2(d1 + d2 + ... +d7) = 5228 km și implicând șapte vehicule ( a căror capacitate este folosită parțial...)
Iterația 1 Cea mai mare reducere este s47 = 771. Concatenăm traseele P0 ź P4 ź P0 și P0 ź P7 ź P0 în traseul P0 ź P4 ź P7 źP0 obținând o reducere a distanței totale de 771 km. Pe acest traseu va circula un singur mijloc de transport cu încărcătura inițială de 1200 + 1700 = 2900 u. Rămân șase trasee însumând 5228 - 771 = 4457 km. Vezi tabelul 6.2
Iterația 2 Cea mai mare reducere admisibilă - pusă în evidență și în tabelul6.2 - este s34 = 635. Concatenăm traseele P0 ź P3 ź P0 și P0 ź P4 ź P7 źP0 în traseul P0 ź P3 ź P4 źP7 źP0 pe care se va transporta 2900 + 1200 = 4100 u. Numărul de trasee (și implicit de vehicule folosite) s-a redus la cinci însumând 4457 - 635 = 3822 km. Rezultă situația din tabelul 6.3
|
Cant. circulată pe un traseu |
Clienți |
Trasee |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
|
1100 |
1 |
(1)ź Ź |
|
|
|
|
|
|
|
|
1300 |
2 |
(2)ź Ź |
|
|
|
|
|
|
|
|
1200 |
3 |
(3)ź Ź |
|
|
|
635 |
|
|
|
|
2900 |
4 |
(4)ź |
|
|
|
|
|
|
771 |
|
1900 |
5 |
(5)ź Ź |
|
|
|
|
|
|
|
|
1800 |
6 |
(6)ź Ź |
|
|
|
|
|
|
|
- |
|
7 |
Ź |
|
|
|
|
|
|
|
Tabelul 6.2
|
Cant. circulată pe un traseu |
Clienți |
Trasee |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
|
1100 |
1 |
(1)ź Ź |
|
|
|
|
|
|
|
|
1300 |
2 |
(2)ź Ź |
|
|
|
|
|
|
|
|
4100 |
3 |
(3)ź |
|
|
|
635 |
|
|
|
|
- |
4 |
|
|
|
|
|
|
|
771 |
|
1900 |
5 |
(4)ź Ź |
|
|
|
|
|
|
|
|
1800 |
6 |
(5)ź Ź |
|
|
|
|
|
|
499 |
|
- |
7 |
Ź |
|
|
|
|
|
|
|
Tabelul 6.3
Iterația 3 Următoarea reducere (ca mărime) este s37 = 622 ea se exclude deoarece P3 și P7 sunt deja pe același traseu. Reducerea care va fi luată în considerare este s67 = 499 (indicată și în tabelul 6.3) Se vor concatena traseele P0 ź P3 ź P0 și P0 ź P3 ź P4 źP7 źP0 în traseul P0 ź P3 ź P4 źP7 źP6 źP0 dealungul căruia se va livra cantitatea 4100 + 1800 = 5900 u. (< 6000 u. º capacitatea unui vehicul) Au rămas patru trasee însumând 3822 - 499 = 3323 km și se utilizează patru mijloace de transport, unul fiind încărcat aproape la capacitatea maximă. Vezi tabelul 6.4
Iterația 4 Cea mai mare reducere admisibilă este acum s12 = 316. Se vor concatena traseele P0 ź P1 ź P0 și P0 ź P2 ź P0 într-unul singur pe care se va transporta cantitatea 1100 + 1300 = 2400 u. Acum sunt numai trei trasee și trei vehicule iar distanța totală s-a redus la 3323 - 316 = 3007 km. Noua situație este rezumată în tabelul 6.5
Iterația 5 Următoarea reducere admisibilă este s25 = 48. Concatenăm traseele P0 ź P1 ź P2 ź P0 și P0 ź P5 ź P0 în traseul P0 ź P1 ź P2 ź P5 ź P0 pe care se va livra cantitatea 2400 + 1900 = 4300 u. Au rămas două trasee fiecare deservit de un vehicul. Distanța totală de parcurs va fi: 3007 - 48 = 2959 km. Este clar că cele două trasee numai pot fi concatenate din cauza capacității limitate de transport a vehiculelor. Vezi tabelul 6.6 Cele două trasee sunt vizualizate în fig.6.5
|
Cant. circulată pe un traseu |
Clienți |
Trasee |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
|
1100 |
1 |
(1)ź Ź |
|
316 |
|
|
|
|
|
|
1300 |
2 |
(2)ź Ź |
|
|
|
|
|
|
|
|
5900 |
3 |
(3)ź |
|
|
|
635 |
|
|
|
|
- |
4 |
|
|
|
|
|
|
|
771 |
|
1900 |
5 |
(4)ź Ź |
|
|
|
|
|
|
|
|
- |
6 |
Ź |
|
|
|
|
|
|
499 |
|
- |
7 |
|
|
|
|
|
|
|
|
Tabelul 6.4
|
Cant. circulată pe un traseu |
Clienți |
Trasee |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
|
2400 |
1 |
(1)ź |
|
316 |
|
|
|
|
|
|
- |
2 |
Ź |
|
|
|
|
48 |
|
|
|
5900 |
3 |
(3)ź |
|
|
|
635 |
|
|
|
|
- |
4 |
|
|
|
|
|
|
|
771 |
|
1900 |
5 |
(4)ź Ź |
|
|
|
|
|
|
|
|
- |
6 |
Ź |
|
|
|
|
|
|
499 |
|
- |
7 |
|
|
|
|
|
|
|
|
Tabelul 6.5
|
Cant. circulată pe un traseu |
Clienți |
Trasee |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
|
4300 |
1 |
(1)ź |
|
316 |
|
|
|
|
|
|
- |
2 |
|
|
|
|
|
48 |
|
|
|
5900 |
3 |
(3)ź |
|
|
|
635 |
|
|
|
|
- |
4 |
|
|
|
|
|
|
|
771 |
|
|
5 |
Ź |
|
|
|
|
|
|
|
|
- |
6 |
Ź |
|
|
|
|
|
|
499 |
|
- |
7 |
|
|
|
|
|
|
|
|
Tabelul 6.6
§ 7. Întrebări și probleme
1.Ce este o problemă combinatorială? Dar o problemă de optimizare combinatorială? Dați un exemplu diferit de cele oferite în carte și discutați-l cu colegii și cu profesorul dvs.
2.Ce înseamnă că o problemă de optimizare este ușoră (grea)? Dați exemple din fiecare categorie.
3.Rezolvați problema din exemplul 3.2.
4. Un comisvoiajor situat în localitatea 0 are de vizitat orașele 1,2,3,4. Costurile de deplasare dintr-un oraș în altul sunt date în tabelul 7.1 (Se observă că în general cij ¹ cji, altfel spus costul deplasării între două localități depinde de sensul de deplasare - avem de a face cu o problemă asimetrică !)
Să se aplice algoritmul de tip Branch & Bound al lui Eastman
pentru a gă si un traseu de cost minim.
5. Într-o regiune a țării se afla șapte puncte de interes turistic. Pozițiile relative ale celor șapte puncte sunt date în fig. 7.1.iar distanțele dintre ele sunt date în tabelul alăturat 7.2.
O agenție de turism este interesată în determinarea celui mai scurt traseu de vizitare a celor șapte obiective.
Rezolvați problema utilizând euristica E3 și ajustarea locală E2.
6.Un comisvoiajor pleacă din localitatea 0 și trebuie să viziteze localitățile 1,2,...,6 (fiecare o singură dată) la sfârșitul călătoriei urmând a se reîntoarce în punctul de plecare 0 (vezi fig.7.2) În tabelul alăturat 7.3 se dau distanțele între localități.
a) Să se determine un traseu complet folosind euristica E1: "mergi la cel mai apropiat vecin".
b) Eliminați eventualele încrucișări folosind euristica E2 de ajustare locală. Ce lungime va avea noul traseu?
c) Determinați un arbore de lungime minimă care să conecteze cele șapte localități după care aplicați euristica E3 pentru a obține un traseu complet.
d)Reluați punctul c) folosind de această dată euristica E4.
7.Firma X produce pâine pe care o desface către populație prin 12 magazine de specialitate. Fabrica de pâine și centrele de desfacere sunt localizate în punctele P0 , P1 ,..., P12 indicate în figura 7.3. Pentru ziua următoare cererile sunt date întabelul 7.4:
|
Centre Pi |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P7 |
P8 |
P9 |
P10 |
P11 |
P12 |
Total |
|
Cerere (buc.) qi |
2200 |
300 |
800 |
1100 |
900 |
700 |
1400 |
1600 |
1600 |
1800 |
500 |
1500 |
14400 |
Tabelul
7.4
Transportul se face cu vehicule cu capacitatea de 4500 buc.
Distanțele di de la fabrica P0 la centrele Pi ca și distanțele dij dintre centre de desfacere se vor calcula cu relația lui Pitagora ținând cont de faptul că unitatea de măsură a grilei din fig. 7.3 este de 200m. De exemplu distanța dintre P1 și P7 va fi:
a) Să se determine traseele de transport. cantitățile transportate, lungimile traseelor și distanța totală de parcurs.
b)Care va fi soluția problemei în cazul în care firma are două vehicole cu capacitatea de 4500 buc. și alte patru cu capacitatea de 2000 buc.?
8. Explicați termenii flow shop, open shop, job shop din problema ordonanțării.
9. Se pune problema lansării în execuție a opt repere 1,2,...,8 pentru care se cunosc:
· duratele p1 , p2 ,..., p8;
· termenele de livrare .(vezi tabelul 7.5 )
În ce ordine trebuie lansate în execuție reperele astfel încât:
· termenele de livrare să nu fie depășite:
· suma termenelor de terminare să fie minimă:
|
Cod reper: j |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Durata : pj |
10 |
19 |
14 |
8 |
23 |
17 |
9 |
5 |
|
Termen de livrare: dj |
25 |
45 |
90 |
100 |
80 |
105 |
50 |
20 |
Tabelul 7.5
4. Zece repere se prelucrează în flux pe două utilaje: prima operație se execută pe utilajul A iar a doua pe utilajul B. În tabelul 7.6 se dau duratele de excuție ale celor două operații pentru fiecare reper în parte. În ce ordine vor fi lansate cele zece repere astfel încât durata totală de execuție să fie minimă?
|
Repere Utilaje |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
A |
14 |
22 |
50 |
32 |
36 |
41 |
28 |
22 |
30 |
20 |
|
B |
30 |
45 |
32 |
58 |
36 |
14 |
41 |
45 |
42 |
58 |
Tabelul 7.6
b) Aceeași chestiune cu datele:
|
Repere |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
A |
11 |
6 |
8 |
15 |
9 |
14 |
13 |
|
B |
8 |
11 |
8 |
10 |
12 |
6 |
9 |
Tabelul7.7