CAPITOLUL II

 

 

INTRODUCERE ÎN OPTIMIZAREA COMBINATORIALĂ

 

 

§ 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!

 

Exemplul 3.3 Vom aplica algoritmul lui Kruskal în graful conex din fig. 3.1. Există trei muchii cu costul minim 20;ele nu formează un ciclu astfel că ele pot fi selectate în orice ordine, de exemplu: {0,1} , {2,3} , {2,5}. Mai departe a fost aleasă muchia {0,3} urmată de {3,4}; muchia {3,5}a fost respinsă deoarece forma un ciclu cu muchiile {2,3} și {2,5} deja selectate! Procedura s-a oprit deoarece graful are șase noduri și au fost alese cinci muchii.Arborele cu costul minim 120 este reprezentat în fig.3.3

 

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.

 

 

Text Box: ¥	10	7	9	11
8	¥	11	12	4
9	11	¥	13	6
6	12	14	¥	7
10	5	8	8	¥

Tabelul 7.1

           

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