MELNIC LUCIA
ZĂGAN REMUS CHIRCOR MIHAEL
CERCETĂRI OPERAŢIONALE FUNDAMENTAREA DECIZIILOR ÎN MANAGEMENTUL SISTEMELOR DE PRODUCŢIE
2004
CUPRINS 1. INTRODUCERE 1.1. Scurt istoric al evoluţiei ştiinţei „Cercetare Operaţională”
3
1.2. Teoria Deciziei şi Cercetare Operaţională
4
1.3. Modelarea matematică în Cercetarea Operaţională
5 7
2. PROGRAMARE LINIARĂ
7
2.1. Probleme de programare liniară 2.1.1. Formularea problemei de programare liniară
7
2.1.2. Forme ale problemei de programare liniară
9
2.1.3. Modelul matematic al problemei de programare liniară 2.2. Consideraţii generale privind problemele de programare liniară
12 16
2.2.1. Soluţii şi fundamente ale problemei de programare liniară
16
2.2.2. Baze ale problemei de programare liniară
20
2.2.3. Interpretarea geometrică a problemei de programare liniară
22 26
2.3. Metoda Simplex 2.3.1. Fundamente teoretice în aplicarea metodei Simplex
26
2.3.2. Algoritmul simplex primal
28
2.3.3. Metode de determinare a unei soluţii de bază iniţiale
35
2.3.4. Interpretarea economică a algoritmului simplex primal
39 41
2.4. Dualitatea în programarea liniară 2.4.1. Problema duală. Fundamente teoretice
41
2.4.2. Algoritmul simplex dual
45
2.4.3. Interpretarea economică a dualităţii
49
3. PROGRAMAREA LINIARĂ DE TIP TRANSPORT
53
3.1. Formularea unei probleme de transport
53
3.2. Exemple de probleme de tip transport
55
3.3. Determinarea unei soluţii de baza iniţiale a problemei de transport
57
3.4. Metoda de determinare a soluţiei optime pentru probleme de transport.
59
Metoda potenţialelor.
2
Cercetări operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
4. ELEMENTE DE TEORIA GRAFURILOR 64
4.1. Fundamente în teoria grafurilor 4.1.1. Noţiunea de graf
64
4.1.2. Orientare şi neorientare în graf
64 69
4.1.3. Drumuri şi circuite în graf
70
4.1.4. Lanţuri şi circuite în graf
71
4.2. Matrici ataşate grafurilor 4.2.1. Matricea arcelor (conexiunilor directe)
71
4.2.2. Matricea drumurilor (conexiunilor totale)
73
4.2.3. Descompunerea grafului în componente tari conexe
75
4.3. Drumuri hamiltoniene în graf
78
4.4. Drumuri de valoare optimă în graf
87
4.5. Cuplaje. Probleme de repartiţie (afectare)
93
5. TEHNICA DIAGRAMELOR DE TIP REŢEA 5.1. Generalităţi privind modelarea prin reţele 5.2. Metoda drumului critic (Critical Path Method - C.P.M.)
97 97 99
5.3. Metoda potenţialelor (Metro Potential Method - M.P.M.)
106
5.4. Metoda PERT (Program Evaluation and Review Technique)
108
5.5. Tehnica GERT (Graphical Evaluation and Review Technique)
111 114
6. ELEMENTE DE TEORIA DECIZIEI 6.1. Procesul şi sistemul decizional al întreprinderii
114
6.2. Utilităţi decizionale
117
6.3. Optimizarea deciziilor în condiţii de certitudine
121
6.3.1. Metoda utilităţilor globale
121
6.3.2. Metoda Electre
121
6.3.3. Metoda Ledear-ului
122
6.4. Optimizarea deciziilor în condiţii de risc
123 131
BIBLIOGRAFIE
3
4
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
CAPITOLUL 1 INTRODUCERE 1.1.
Scurt istoric al evoluţiei ştiinţei „Cercetare Operaţională”
Cercetarea operaţională ca ştiinţă a apărut către sfârşitul primei jumătăţi a secolului nostru şi s-a dezvoltat spectaculos în special în ultimii ani, în strânsă legătură cu ştiinţa organizării şi conducerii, teoria sistemelor, cibernetica, informatica şi analiza sistemelor. Şcoala clasică are marele merit al abordării unui domeniu nou, considerându-se pionieră a organizării ştiinţifice (F.W. Taylor-1900, H.L.Gantt-1901, A.Fayol-1915) şi aceasta pune pentru prima dată problema abordării raţionale a mecanismului funcţionării unei întreprinderi. În perioada următoare se lărgeşte considerabil problematica organizării şi conducerii, iar aspectele informaţional-decizionale (până atunci ignorate) şi aspectele relaţiilor umane dau un alt sens abordării mecanismului funcţionării întreprinderii. Cercetare operaţională exista înaintea declanşării celui de al doilea război mondial prin lucrările elaborate de Erlang (1917) – firele de aşteptare, Harrris (1915) – gestiunea ştiinţifică a stocurilor, Vorra (1931) – reînnoirea echipamentelor. Utilizarea cercetării operaţionale în practică era dificil de realizat deoarece din punct de vedere intelectual exista o anumită aversiune fată de modele şi de caracterul descriptiv al ştiinţei, iar din punct de vedere material datorită complexităţii mici a organizaţilor şi talia relativ modestă a întreprinderilor din aceea perioadă, investiţiile în mijloace de calcul eficace, respectiv a ordinatoarelor nu era justificată. În ceea ce priveşte procesele de decizie, pentru prima oară se pune în mod riguros şi pe scară largă problema găsirii unor soluţii optime sau apropiate de cele optime, în marea diversitate de probleme organizatorice şi de conducere. Prima aplicaţie a cercetării operaţionale moderne la scară largă o constituie aplicarea regulilor definite de Sir Blackett în timpul celui de al doilea război mondial cu deosebit succes în Anglia şi care a debutat în 1937. Termenul de Cercetare Operaţională (Operational Research)a fost utilizat pentru prima dată în 1939, fiind legat de contribuţia oamenilor de ştiinţă la utilizarea eficientă a radiolocatoarelor în sistemul apărării antiaeriene al Angliei. În S.U.A. pătrunderea ştiinţei cercetării operaţionale (Management Science) în dezvoltarea problemelor de conducere a industriei se datorează celei de-a doua revoluţii industriale şi posibilităţilor de comercializare a calculatoarelor electronice. În prezent, mai mult de jumătate din firmele americane au sau folosesc specialişti în cercetarea operaţională. În 1953 s-a format Societatea Americană de Cercetări Operaţionale, iar în 1957 s-a constituit Federaţia Internaţională a Societăţilor de Cercetări Operaţionale. Au apărut reviste şi s-au introdus cursuri şi seminarii de cercetare operaţională atât în S.U.A. cât şi în alte ţări ale lumii. În practică, întreprinderea poate fi privită ca un sistem ale cărui elemente componente (oameni, capital, materiale, informaţie) sunt intercorelate prin fluxuri materiale, informaţionale şi energetice ce au un comportament orientat spre atingerea unor obiective precise. Cercetările operaţionale au consacrat în domeniul optimizării deciziei, un mod de abordare ştiinţific asupra problemelor ce intervin în cadrul unei întreprinderi industriale şi totodată nu se concepe conducerea şi gestionarea întreprinderii, fără a face apel la metodele cercetării operaţionale, împreună cu celelalte tehnici moderne ca informatica, cibernetica, teoria sistemelor, statistica. Obiectul cercetării operaţionale îl constituie sistemele şi ele îşi propun elaborarea unor metode de analiza a operaţiilor îndreptate spre un anumit scop, precum şi estimarea obiectivă 3
Introducere
a deciziilor ce pot fi adoptate. Cercetarea operaţională este un ansamblu de metode care îşi propune, în vederea pregătirii deciziilor, să determine în mod raţional soluţiile cele mai eficiente. 1.2.
Teoria Deciziei şi Cercetare Operaţională
Creşterea productivităţii şi obţinerea rentabilităţii întreprinderii industriale pe termen lung, într-un mediu dinamic şi într-o continuă schimbare, depinde, într-o mare măsură de capacitatea managementului întreprinderii de a anticipa schimbarea şi de a adapta decizia noilor situaţii într-un mod planificat. Accelerarea evoluţiei tehnologice în industrie, influenţează şi comportamentul consumatorilor, care se va orienta spre noi concepte şi produse, mai inovate, mai atractive şi adaptate modului şi ritmului lor de viaţă. Utilizarea raţională a celor patru tipuri de resurse conduc la flexibilitatea organizaţiei şi astfel activitatea poate fi planificată în prognoze pentru a releva anumite aspecte semnificative ale viitorului. În aceste condiţii, managerul trebuie să adopte decizii, fundamentate ştiinţific şi performant. Decizia reprezintă soluţia aleasă, din mai multe variante posibile cu scopul atingerii unui obiectiv prestabilit în condiţii de eficienţă maximă. Este actul deliberat al unui individ sau al unui grup de oameni investiţi cu puterea de a alege varianta de concepere/realizare a unui scop şi de a declanşa acţiuni. Procesul de decizie porneşte de la un anumit rezultat care trebuie să fie obţinut, iar decidentul trebuie ca prin prelucrarea diferitelor informaţii să aleagă cea mai bună variantă pentru atingerea acestuia (fig. 1.1). Rezultat dorit
Obiective
Variante
Criterii
DECIZIE
Actiune
Rezultat dorit
Control
Fig.1.1. Cercetare operaţională alături de Teoria deciziei a absorbit noile dezvoltări în domeniul activităţii de management industrial şi al sistemelor economice. Necesitatea modelării în managementul producţiei industriale rezultă din faptul că efectuarea unor experimente asupra organizaţiilor este foarte greu de realizat, dar experimente de acest fel (de exemplu modificarea parametrilor funcţionali) se pot face uşor în condiţiile folosirii unui model. Utilizarea modelelor este impusă şi de complexitatea sistemelor industriale, care necesită existenţa unei activităţi desfăşurată astfel încât deciziile să fie în concordanţă cu evoluţia eficientă a acestora. Operaţia de investigarea a sistemelor reale prin reprezentări convenţionale se numeşte modelare. Ea reprezintă mulţimea activităţilor care se extind de la simpla prezentare a problemei la proceduri abstracte şi raţionale. Ele produc în final premisele cantitative formale ale dinamicii procesului. Modelul este o reprezentare izomorfa a realităţii ce oferă o imagine intuitivă dar riguroasă în sensul structurii logice a fenomenului studiat. Modelarea ca metodă de fundamentare a deciziilor în activitatea economică oferă următoarele avantaje: - reprezintă riguros fenomenele şi legăturile lor la nivelul sistemului; - permite verificarea prin analogie a teoriei cu practica; 4
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
- înlesneşte descoperirea unor corelaţii între fenomene şi predeterminarea performanţelor firmei, necesare pentru adoptarea unor decizii raţionale; - reflectă teorii ale proceselor cuantificabile şi necuantificabile; - urmăreşte obţinerea unor soluţii optime. Modelarea utilizează un suport material fizic (de exemplu simulatoarele), o reprezentare grafică (de exemplu un grafic reţea), un model abstractizat sub forma unui model matematic. Din impactul între modelele fizice cu dispozitive logice de calcul şi cele matematice au rezultat modelele de simulare. În managementul producţiei industrial se aplică toate aceste tipuri de modele, de exemplu: modelele fizice se pot folosi pentru studiul privind planul general al firmei, modelele grafice la analiza relaţiilor om – maşină, modelele matematice pentru alocarea resurselor sau analiza proceselor aleatoare. Corelaţia teorie-model-realitate reprezintă un aspect logic - privind corespondenţa dintre teorie şi model – şi un aspect gnoseologic – urmărind corespondenţa dintre model şi realitate. Modelul intervine între teorie şi obiectul real şi trebuie testat în raport cu realitatea exprimată ca obiect. În funcţie de modul în care se ajunge la soluţia optimă există două direcţii principale de lucru: • atingerea obiectivului prin deducerea soluţiei optime; • atingerea aceluiaşi obiectiv prin practici oferite de teoria deciziei Deducerea soluţiei se caracterizează prin certitudinea rezultatului obţinut pe baza unor informaţii obiective şi complete. Dificultatea constă în formularea problemei într-un limbaj matematic adecvat şi în volumul mare al calculelor. Metoda a doua solicită decidentului să estimeze consecinţele posibile ale acţiunilor sale pe baza unor informaţii obiective, dar incomplete, introducându-se în rezolvarea problemei elemente subiective. Prima direcţie a condus la dezvoltarea unui ansamblu de discipline în cadrul CERCETĂRII OPERAŢIONALE. A doua direcţie de lucru a condus la constituirea unei discipline aparte – TEORIA DECIZIEI. Între cele două direcţii există raporturi strânse, biunivoce, ceea ce a condus la apariţia unei ştiinţe multidisciplinare: TEORIA DECIZIEI şi CERCETARE OPERAŢIONALĂ Teoria deciziei este legată intrinsec de cercetarea operaţională care poate fi considerată „pregătirea ştiinţifică a deciziilor”. 1.3.
Modelarea matematică în cercetarea operaţională
Condiţiile în care se desfăşoară activitatea analizată din cadrul întreprinderii, conduc la un sistem de relaţii tip ecuaţii şi inecuaţii ce cuprind variabilele problemei şi coeficienţii tehnico – economici ce o caracterizează. Aceste relaţii reprezintă – restricţiile problemei matematice. Obiectivul studiului îl constituie optimizarea unui anumit rezultat dependent de aceleaşi variabile ce figurează în restricţii. Obiectivul este sub forma unei funcţii ale cărei valori maxime sau minime le căutăm şi care se numeşte funcţia obiectiv (scop, eficienţă). Restricţiile problemei şi funcţia obiectiv formează modelul matematic al problemei. Modelele matematice se preferă pentru capacitatea lor de condensare riguroasă a esenţialului. Modelele cercetării operaţionale se caracterizează prin căutarea unei soluţii optime sau apropiate de optim pentru operaţia studiată. Modelele cercetării operaţionale se bazează pe o mare diversitate de procedee matematice şi au aplicaţii la nivel macro, dar în special la nivel microeconomic. Ele reprezintă principalul instrument pentru optimizarea deciziilor în analiza de sistem.
5
Introducere
Decizia obţinută cu ajutorul modelului nu poate fi recomandată nemijlocit pentru realizare, deoarece modelul face abstracţie de o serie de aspecte ale fenomenului studiat. Principalele faze ale elaborării unui model matematic într-o problema de organizare – conducere sunt următoarele: • Prima fază a modelării este cunoaşterea realităţii în organismul studiat, în scopul îmbunătăţirii mecanismului informaţional decizional şi descrierea logicii proceselor decizionale, această fază având un caracter pregătitor; • A doua fază a modelării constituirea propriu - zisă a modelului–acesta cu ajutorul unui instrument clasic de modelare. Elaborarea unui model matematic realmente original reclamă, pe lângă profunda cunoaştere a realităţii care urmează a fi modelată, o foarte solidă cultură matematică, imaginaţie şi talent. Modelelor clasice ale cercetării operaţionale, sunt diverse funcţie de structura matematica şi logică, şi variază de la modele simple cum sunt cele ale programării liniare, la modele combinatorice, în probleme de teoria grafelor, analiza drumului critic şi programarea operativă a producţiei şi până la modele complexe cum sunt cele ale utilităţii sau deciziilor de grup. • A treia fază a modelării este confruntarea modelului cu realitatea prin implementarea rezultatului obţinut şi eventual experimentarea sa. Există o gamă largă de probleme tehnico – economice care se pretează a fi modelate matematic cu ajutorul procedeelor cercetării operaţionale, dintre care putem menţiona: • programarea operativă a producţiei; • repartizarea raţională a resurselor; • gestiunea stocurilor; • eşalonarea în timp a activităţilor unei investiţii. In contextul celor arătate mai sus trebuie subliniată importanţa metodelor cercetării operaţionale în fundamentarea şi elaborarea deciziilor. Sarcina cercetării operaţionale este de a pregăti decizia şi nu de a o adopta . Conducerea executivă care va lua decizia finală trebuie să ţină seama pe lângă recomandările cercetării operaţionale şi de o serie de factori ce nu pot fi formalizaţi. Una din principalele caracteristici ale tuturor metodelor cercetării operaţionale este faptul că problemele cercetării operaţionale sunt privite, din perspectivă pur teoretică, ca probleme de matematică pură. În cele ce urmează vom privi metodele cercetării operaţionale strâns legate de problemele practice. În prezent nu se mai poate concepe conducerea unei activităţi tehnico-economice importante fără a face apel la metodele cercetării operaţionale, bineînţeles împreună cu celelalte tehnici moderne cum ar fi informatica, analiza de sistem ş.a..
6
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
CAPITOLUL 2 PROGRAMAREA LINIARĂ 2.1.
Probleme de programare liniară
Orice activitate industrială se desfăşoară în condiţiile existenţei unor resurse limitate de materii prime şi materiale, de resurse umane, iar folosirea eficientă, a acestora, conduce la rezultate optime atât din punct de vedere tehnic cât şi economic. Modelele de programare matematică şi mai ales modelele de programare liniară, constituie o clasă specială, atât în teorie cât şi în practica industrială. Pentru decizii referitoare la structura optimă de producţie, la cantitatea ce urmează a se produce, la sortimente, abordarea acestora cu modele ale programării matematice conduce la rezultate optime. Programarea matematică reprezintă un instrument deosebit de util fundamentării deciziilor în practica industrială. 2.1.1. Formularea problemei de programare liniară Principala problemă cu caracter decizional, cu care se confruntă producţia o constituie determinarea structurii optime de producţie pe termen mediu şi scurt printr-o folosire eficientă a resurselor. Condiţiile în care se desfăşoară activitatea de producţie analizată, conduc la un sistem de relaţii tip ecuaţii şi inecuaţii ce cuprind variabilele problemei şi coeficienţii tehnico – economici ce o caracterizează . Modelul matematic de programare liniară se constituie din mulţimea de activităţi (operaţii){A1, A2, ..Aj,.. An}, (j=1,...,n) pentru producerea unei unităţi din produsul Pj (ca rezultat al activităţii Aj), mulţimea de resurse disponibile materiale, financiare, de capacităţi de producţie {b1, b2, ... bm}, (i = 1,...,m) precum şi din relaţiile tehnico-economice dintre acestea. În practica industrială, legătura dintre activităţi (operaţii) şi resurse este determinată de procesul tehnologic de fabricaţie corespunzător realizării produsului. Elementele aij, (i = 1,...,m; j = 1,...,n) se numesc coeficienţi tehnico-economici, aceştia fiind constanţi într-un interval de timp determinat şi arată ce cantitate din resursa bi (i = 1,...,m) se consumă pentru producerea unei unităţi din produsul Pj. Toate aceste legături (restricţii) definite de vectorii coloană a(j) se pot organiza într-o matrice A cu m linii şi n coloane (2.1); fiecare linie se referă la o resursă bi şi fiecare coloană se referă la o activitate aj.
§ a11 .........a1n · ¨ ¸ A ∈ Mm.n; A= ( ai,j ), i = 1,..,m, j= 1,...,n; A = ¨ ¸ ¨ a ..........a ¸ mn ¹ © m1
b ∈R
m
§ b1 · ¨ ¸ ¨ b2 ¸ ,b= ¨ ¸ . ¨ ¸ ¨b ¸ © m¹
(2.1)
(2.2)
Notând cu xj (j = 1,...,n) (2.3) programul activităţii aj într-o perioadă dată şi cu bi cantităţile disponibile din resursele bi, se pot scrie matematic restricţiile tehnico-economice. Aceste restricţii reprezintă – restricţiile problemei de programare liniară (2.4). 7
Programare liniară
§ x1 · ¨ ¸ ¨x ¸ n x∈ R ,x= ¨ 2¸ . ¨ ¸ ¨x ¸ © n¹ ° ° ® ° °¯
(2.3)
a11 x1 + a12 x2 + ... + a1n x n ≤ b1 a 21 x1 + a 22 x 2 + ... + a 2n x n ≤ b2 a m1 x1 + a m2 x 2 + ... + a mn x n ≤ bm
(2.4)
Fiecare restricţie (inecuaţie de tipul „ ≤ ”) cuprinde afirmaţia prin care cantitatea consumată dintr-o resursă nu poate depăşi volumul disponibil din resursa respectivă. Obiectivul studiului îl constituie optimizarea unui anumit rezultat dependent de aceleaşi variabile ce figurează în restricţii. Obiectivul este sub forma unei funcţii ale cărei valori maxime sau minime le căutam şi care se numeşte funcţia obiectiv (scop, eficienţă). În practica industrială, ea reprezintă criteriul de performanţă urmărit: maximizarea beneficiului, maximizarea producţiei marfă, minimizarea costului producţiei, maximizarea gradului de încărcare al utilajelor sau minimizarea timpului de staţionare al acestora, maximizarea veniturilor etc. Variaţia funcţiei obiectiv arată evoluţia volumului activităţilor, prin intermediul coeficienţilor c j , ce pot fi costuri unitare în cazul problemelor de minim, sau profituri unitare pentru probleme de maxim (2.5).
cj ∈R, c ∈ Rn
§ c1 · ¨ ¸ ¨ c2 ¸ c = ¨ ¸ ; c T = (c1 c 2 ...c j ...c n ) . ¨ ¸ ¨c ¸ © n¹
(2.5)
Decizia cu scopul unei eficienţe maxime presupune minimizarea efortului şi maximizarea rezultatului, Conceptul de optim se defineşte, în acest caz, ca un program (soluţie) x∈ Rn care minimizează sau maximizează o funcţie obiectiv şi, în acelaşi timp, satisface toate restricţiile tehnico-economice. Presupunând că fiecare coeficient .cj măsoară eficienţa unei unităţi din rezultatul activităţii Aj, atunci se poate introduce funcţia obiectiv liniară (2.6) : z = c1⋅x1 + c2⋅x2 + ... + cn⋅xn
(2.6)
Sintetizând toate datele de mai sus, obţinem următorul model (2.7, 2.8, 2.9)de programare liniară. Relaţiile (2.7), (2.8) şi (2.9) constituie împreună modelul matematic al unei probleme de programare liniară, având fiecare un rol specific: 1. relaţia (2.7), denumită funcţia obiectiv a problemei, evaluează eficienţa/performanţa fiecărei soluţii (program) x;
8
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
(2.7)
n
min(max) z = ¦ c j x j j =1
x
n ° ¦ aij ⋅ x j ≤ bi ° j n=1 ° ® ¦ aij ⋅ x j ≥ bi ° j =1 ° xj ≥ 0 °¯
1≤ i ≤ k
(2.8)
k +1≤ i ≤ l 1≤ j ≤ n
(2.9)
n
2. relaţiile (2.8) de tipul ¦ aij ⋅ x j ≤ bi reprezintă restricţii ce corelează volumul consumului j =1
activităţilor cu cel al disponibilului pentru fiecare resursă; iar restricţiile de tipul n
¦ aij ⋅ x j ≥ bi impun un consum peste limitele minimale, sunt restricţii tehnico-economice
j =1
de tip calitativ; 3. relaţia (2.9) xj ≥ 0 j = 1,...,n, numită condiţia de nenegativitate a variabilelor, asigură obţinerea unei soluţii realizabile în practica industrială. Decizia obţinută cu ajutorul modelului nu poate fi recomandată nemijlocit pentru realizare, deoarece modelul face abstracţie de o serie de aspecte ale fenomenului studiat, cele ce au la bază o serie de factori ce nu pot fi formalizaţi. În practica industrială programarea liniară oferă soluţii care pot motiva ştiinţific luarea unor decizii de natură strategică, tactică sau a unor decizii cu conţinut tehnico – organizatoric. 2.1.2. Forme ale problemei de programare liniară
O problemă de programare liniară este, un caz particular al problemelor de programare matematică şi, ţinând cont de forma oricărei funcţii liniare, se poate defini forma generală a problemei de programare liniară. Funcţia liniară (2.10), notată cu z reprezintă funcţia obiectiv a problemei. Relaţiile (2.11) reprezintă sistemul de restricţii ale problemei, iar membrul stâng al fiecărei relaţii aste o funcţie liniară în variabilele x1, x2,…,xn, la fel ca şi funcţia obiectiv. Problema de programare liniară constă în optimizarea unei funcţii liniare cu restricţii liniare. •
Forma generală a problemei de programare liniară min(max) z = c1 x1 + c 2 x 2 + ... + c n x n ° a x + a x + ...a x ≤ (≥ )(= )b 12 2 1n n 1 °° 11 1 ® a 21 x1 + a 22 x 2 + ...a 2 x n ≤ (≥ )(= )b2 ° ...................................................... ° °¯ a m1 x1 + a m 2 x 2 + ...a mn x n ≤ (≥ )(= )bm
(2.10)
(2.11)
unde: c j ∈ R ( j = 1, n), aij ∈ R (i = 1, m, j = 1, n), bi ∈ R (i = 1, m) Din analiza mai multor probleme de programare liniara deducem că într-o astfel de problema pot apare restricţii scrise sub forma de inegalităţi sau egalităţi, iar criteriul de optimizare ales impune în unele cazuri maximizarea iar în alte cazuri minimizarea funcţiei obiectiv.
9
Programare liniară
Rezolvarea problemei de programare liniară presupune determinarea valorilor variabilelor xi, care satisfac restricţiile şi optimizează funcţia obiectiv a problemei. •
Forma standard a problemei de programare liniară
O problema de programare liniară este dată sub formă standard dacă toate restricţiile sale sunt date sub formă de ecuaţii (egalităţi) şi tuturor variabilelor li se impun condiţii de nenegativitate. Problema de programare liniară dată în formă standard se scrie în mod explicit (2.12): n max(min) z = ¦ c j x i ° j =1 ° n ° 1≤ i≤ m ® ¦ a ij x j = b i j = 1 ° ° xj ≥ 0 1≤ j ≤ n ° ¯
(2.12)
Problema de programare liniară în formă standard poate fi scrisă şi sub formă matricială (2.13) : min(max)c T x ° , unde ® Ax = b ° x≥0 ¯
c, x ∈ R n ° ® A ∈ M ( R ) m ,n ° b ∈ Rm ¯
(2.13)
unde cT reprezintă componentele matricei c transpusă. Sistemul de restricţii liniare ( Ax=b ) poate fi un sistem compatibil, compatibil unic determinat sau nedeterminat de m ecuaţii şi n necunoscute. Pentru ca problema de optimizare să aibă sens, numărul de ecuaţii trebuie să fie mai mic decât numărul de necunoscute (m
Forma canonică a problemei de programare liniară
O restricţie a unei probleme de programare liniară se numeşte concordantă (neconcordantă) dacă pentru o inegalitate de tip “ ≥" (" ≤") funcţia obiectiv este minimizată sau respectiv pentru o inegalitate de tip " ≤" (" ≥") funcţia obiectiv este maximizată . O problemă de programare liniară este data sub formă canonică dacă toate restricţiile sale sunt concordante şi toate variabilele sunt supuse condiţiei de nenegativitate. Problema de programare liniară dată în formă canonică se scrie în mod explicit (2.14): n min(max) z = ¦ c j x i ° j =1 ° °° n (2.14) 1≤ i ≤ m ® ¦ a ij x j ≥ ( ≤ ) b i ° j =1 ° xj ≥ 0 1≤ j ≤ n ° °¯ Problema de programare liniară în formă canonică poate fi scrisă şi sub formă matricială (2.15) :
10
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
min(max)c T x ° ® Ax ≥ (≤)b ° x≥0 ¯
C , x ∈ R n ° ® A ∈ M m ,n ° b ∈ Rm ¯
unde
(2.15)
Orice problemă de programare liniară în formă generală poate fi adusă la forma standard sau canonică cu ajutorul unor transformări elementare efectuate asupra operatorului aplicat funcţiei obiectiv restricţiilor şi variabilelor: a) o problemă de minimizare în formă matricială se poate transforma într-o problemă de maximizare şi invers, schimbând semnul coeficienţilor din funcţia obiectiv, astfel: max c T x = − min(−c) T x
; min c T x = − max(−c) T x
(2.16)
b) o variabilă x arbitrară (variabilă căreia nu i se impune restricţie de semn) se poate înlocui cu două variabile nenegative x1, x 2 , prin relaţia : x = x1 − x 2 , unde x1 , x 2 ≥ 0
(2.17)
c) o variabilă x supusă condiţiei de nepozitivitate ( x ≤ 0 ) se transformă într-o variabilă nenegativă prin substituţia
x1 = − x, unde x1 ≥ 0
(2.18)
d) Restricţiile de tip inecuaţie se transformă în restricţii de tip ecuaţii ţinând cont de următoarele : a T x − y = b a T x + y = b a T x ≥ b a T x ≤ b şi (2.19) ⇔ ⇔ ® ® ® ® ¯ x, y ≥ 0 ¯ x, y ≥ 0 ¯ x≥0 ¯ x≥0 unde y se numeşte variabilă ecart. Variabilele ecart nu apar în funcţia obiectiv sau astfel spus apar în funcţia obiectiv dar cu coeficienţi nuli: e
e
c j = 0 (unde c j = coeficienţi ai variabilelor ecart).
e) sensul unei inegalităţi se schimbă prin înmulţirea cu “–1“. În aplicaţiile practice apar frecvent situaţii în care modelul conţine simultan restricţii de toate tipurile (concordante, neconcordante, egalităţi), problema fiind dată în formă generală, iar rezolvarea ei poate fi abordată fără a restrânge generalitate.
Exemplul 2.1 Să se scrie formele echivalente ale problemei de programare liniară: Problema dată este în forma generală. Pe baza transformărilor echivalente vom construi formele echivalente ale problemei iniţiale. Deoarece variabila x3 nu are restricţii de semn, o vom înlocui, cu diferenţa a două variabile
11
Programare liniară
max(3 x1 − x 2 + 2 x3 ) ° °3 x1 − x 2 = 4 , °° x1 − 5 x 2 + 2 x3 ≥ −3, ® °− x1 + 4 x3 ≥ 2, ° 2 x1 + 3 x 2 − 2 x 3 ≤ 0 , ° °¯ x1 , x 2 ≥ 0, x3 , oarecare
(1) ( 2) ( 3) (4 )
pozitive: x3 = x4 – x5. Pentru ca problema să aibă forma standard, toate restricţiile trebuie să fie egalităţi, de aceea în restricţiile (2), (3) şi (4) vom introduce variabilele de egalizare x6, x7, x8. Forma standard va fi: max(3 x1 − x 2 + 2 x4 − 2 x5 ) ° ° 3 x1 − x 2 = 4 , °° x1 − 5 x 2 + 2 x4 − 2 x5 − x6 = −3, ® °− x1 + 4 x4 − 4 x5 − x7 = 2, ° 2 x1 + 3 x 2 − x 4 + x 5 + x 8 = 0 , ° °¯ x1 , x 2 ,..., x8 ≥ 0 Forma canonică se obţine transformând restricţia (1) în două inegalităţi şi toate inegalităţile „ ≥ ” le transformăm în inegalităţi „ ≤ ” deoarece problema este dată de maximizare. Astfel, x3 trebuie înlocuit cu diferenţa x4 – x5. Se obţine astfel forma canonică max(3 x1 − x 2 + 2 x4 − 2 x5 ) ° ° 3 x1 − x 2 ≤ 4 , °− 3 x1 + x 2 ≤ −4, ° ®− x1 + 5 x 2 − 2 x4 + 2 x5 ≤ 3,. °− x − 4 x + 4 x ≤ −2, 4 5 ° 1 ° 2 x1 + 3 x 2 − x 4 + x 5 ≤ 0 , ° ¯ x1 , x 2 , x 4 , x 5 ≥ 0
2.1.3. Modelul matematic al problemei de programare liniară
Pentru a înţelege modelul matematic al problemelor de programare liniară sub forma generală, vom analiza câteva exemple din practica industrială: •
Alocarea optimă a resurselor în producţia industrială O firmă urmează să producă n tipuri de produse Pj , j = 1, n , folosind m tipuri de
resurse Ri i = 1, m . Se cunosc coeficienţii tehnologici aij ; cantităţile disponibile bi din resursele Ri ; profitul unitar cj pentru fiecare produs Pj. Să se întocmească planul optim de producţie al firmei astfel încât profitul total realizat să fie maxim.
12
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Elaborare modelului matematic al problemei Condiţii generale de desfăşurare a activităţii analizate : - restricţiile problemei apar din următoarea condiţie: cantitatea totala din resursa i folosită pentru producerea celor n produse nu poate fi mai mare decât cantitatea disponibila: n
¦ aij x j ≤ bi , ∀i = 1, m
(2.20)
j =1
-
condiţiile de nenegativitate asigură obţinerea unei soluţii realizabile din punctul de vedere al logicii practice industriale. xj ≥ 0 , ∀j = 1, n
(2.21)
Sistemul de inecuaţii (2.20) şi (2.21) poate avea o infinitate de soluţii, deci putem organiza procesul de producţie pentru realizarea produsului P într-o infinitate de moduri dar respectând condiţiile anterioare . Acest fapt face evidentă imposibilitatea practică a managerului de a compara toate variantele de plan posibile deci este necesară introducerea unui alt criteriu. Adoptarea unei variante de plan (în fapt fundamentarea deciziei) se face, preferabil, pe baza unui criteriu economic (cel mai uzual – maximizarea profitului sau în alte cazuri minimizarea costurilor). Aplicarea acestui criteriu economic, presupune cunoaşterea profitului total. n
Deci : ¦ c j x j reprezintă profitul total pentru produsele Pj j =1
Funcţia obiectiv (scop, eficienţă) va fi : n
max f = ¦ c j x j
(2.22)
j =1
Deci, modelul de programare liniară ce urmează a fi rezolvat pentru determinarea planului optim de producţie astfel încât profitul total realizat să fie maxim este: n = max f cjxj ¦ ° j =1 ° ° ® ¦ aij x j ≤ bi ° xj ≥ 0 ° °¯
•
(2.23)
Problema de transport Un produs omogen P este stocat în m depozite Di, în cantităţile ai , i = 1, m şi este cerut
de spre a fi transportat la n centre de consum Cj ,în cantităţile bj, j = 1, n . Se cunosc costurile cij pe unitatea de produs transportată de la centrul Di la centrul Cj . Se cere determinarea unui plan de transport astfel încât costul total de transport să fie minim.
13
Programare liniară
Elaborarea modelului matematic al problemei Notaţii : ai = cantitatea din produs care se află în depozitul i; bj = cantitatea cerută de consumatorul j ( 1
¦x
ij
= ai ,
i = 1, m
(2.24)
j =1
•
cantitatea transportată de la toate cele m depozite la consumatorul Cj reprezintă necesarul acestuia, bj , j = 1, n . m
¦x
ij
j = 1, n
= bj
(2.25)
i =1
•
pentru scrierea modelului se pleacă de la forma echilibrată a problemei de transport şi anume cantitatea totală expediată de la cele m depozite este egală cu cantitatea sa disponibilă: m
n
¦ a = ¦b i
i =1
•
(2.26)
j
j =1
variabilele satisfac evident condiţia de nenegativitate : xij ≥ 0
•
(2.27)
funcţia obiectiv este următoarea : m
n
min ¦¦ cij xij
(2.28)
i =1 j =1
Se obţine un program liniar, ce se va supune metodelor programării liniare şi poartă denumirea de program de transport : m n ° min( f ) = ¦ ¦ cij xij i =1 j =1 ° ° n ° ¦ xij = ai , i = 1, m ® j =1 ° n ° ¦ xij = bi , j = 1, n ° j =1 ° x ≥ 0, ∀i = 1, m, j = 1, n ¯ ij
(2.29)
14
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
•
Problemă de repartizare a sarcinilor de producţie Într-un atelier de montaj echipele E j , j = 1, n , pot monta cu randamente diferite,
produsele Pi , i = 1, m . Activitatea atelierului este caracterizată de următoarele date cunoscute: aij - timpul necesar pentru montajul unei cantităţi de produs Pi de către echipa
E j ; cij - cheltuielile necesare pentru montajul unei unităţi de produs Pi de către echipa E j ; bi - cantitatea planificată din produsul Pi , i = 1, m ; t j - timpul de lucru disponibil al echipei E j , j = 1, n . Să se stabilească o repartizare a produselor, echipelor, din atelierul de montaj astfel încât cheltuielile totale necesare să fie minime. Elaborarea modelului matematic al problemei: Variabilele de decizie (necunoscutele) se notează cu xij şi reprezintă cantitatea din produsul Pi ce trebuie realizată de echipa Ej. Funcţia obiectiv este o funcţie de cost, respectiv, cheltuielile celor n echipe, necesare pentru montajul cantităţilor repartizate din cele m produse; funcţia trebuie minimizată: m n
min f = ¦ ¦ cij xij
(2.30)
i =1 j =1
Cantitatea de produse de fiecare tip planificată trebuie realizată: n
¦x
ij
= bi , i = 1, m
(2.31)
j =1
Oricare echipă poate executa produse în limita fondului de timp disponibil: m
¦a x
ij ij
≤ t j , j = 1, n
(2.32)
i =1
Variabilele xij se supun condiţiei de nenegativitate: xij ≥ 0, ∀i = 1, m, j = 1, n
(2.33)
Deci, modelul matematic al problemei este: m n min f = ∑ ∑ cij xij i =1 j =1 n x = b , i = 1, m i ij j∑ =1 m ∑ aij xij ≤ t j , j = 1, n i =1 xij ≥ 0, ∀i = 1, m, j = 1, n
•
(2.34)
Problemă de utilizare a capacităţii utilajelor 15
Programare liniară
O firmă produce n tipuri de produse care pot fi fabricate pe m utilaje care au capacităţi de producţie limitate pe o anumită perioadă. Se cunosc: procentul aij din capacitatea utilajului i necesar pentru producerea unei unităţi din produsul j; profitul unitar cj al produsului j = 1, n . Să se stabilească un program de fabricaţie care să permită utilizarea optimă a capacităţii disponibile a celor m utilaje. Elaborarea modelului matematic al problemei: Variabilele problemei sunt cantităţile de produse fabricate în perioada considerată. Se notează cu xj, numărul de produse de tipul j = 1, n . Funcţia obiectiv este profitul total obţinut de firmă pentru cele n tipuri produse; funcţia trebuie maximizată: n
max f = ¦ c j x j
(2.35)
j =1
Restricţiile de capacitate ale celor m utilaje se exprimă sub forma: m
¦a
ij
xij ≤ 1, i = 1, m
(2.36)
j =1
Variabilele xj se supun condiţiei de nenegativitate: x j ≥ 0, j = 1, n
(2.37)
Atunci, modelul matematic al problemei este: n cjxj °max f = j¦ =1 ° °m ® ¦ aij xij ≤ 1, i = 1, m ° j =1 ° x ≥ 0, j = 1, n ° j ¯
2.2.
(2.38)
Consideraţii generale privind problemele de programarea liniară
2.2.1. Soluţii şi fundamente ale problemei de programare liniară
Fie problema de programare liniară dată în formă standard matricial: min(max)c T x ° , unde ® Ax = b ° x≥0 ¯
C , x ∈ R n ° ® A ∈ M m ,n ° b ∈ Rm ¯
(2.39)
Sistemul de ecuaţii Ax=b are o infinitate de soluţii, deci trebuie să se găsească în mulţimea soluţiilor o soluţie ce realizează valoarea optimă (minimă sau maximă ) a funcţiei obiectiv.
16
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
•
Soluţie admisibilă Un vector x = ( x1 x 2 ... x n ) ∈ R n care satisface restricţiile si condiţia de nenegativitate se numeşte soluţie admisibilă sau posibilă a problemei de programare liniară. Mulţimea soluţiilor admisibile, S, este:
{
S = x ∈ R n / Ax = b, x ≥ 0
}
(2.40)
Sistemul de ecuaţii, având m ecuaţii şi n necunoscute, cu m
Soluţie admisibilă de bază −
Se numeşte soluţie admisibilă de bază pentru sistemul Ax=b, vectorul x , ce satisface condiţiile : a) x soluţie a sistemului : Ax=b ; b) coloanele din A, corespunzătoare componentelor lui x nenule, formează o mulţime liniar independentă. În cazul când o soluţie de bază are mai puţin de m componente diferite de zero, atunci ea se numeşte soluţie degenerată, în caz contrar ea fiind nedegenerată. •
Soluţie optimală O soluţie admisibilă care face optimă funcţia z=min(max)c T x se numeşte soluţie optimală. Este posibil ca problema de programare liniara să aibă soluţie optimă unică, să aibă mai multe soluţii optime sau să nu admită soluţie optimă.
•
Soluţie grafică Acest tip de soluţie va fi studiat detaliat în paragraful 2.2.3.
Teoremele şi definiţiile care urmează, specifică unele proprietăţi ale soluţiilor ce justifică clasificarea realizată anterior. Teorema 2.1 (Teorema fundamentală a programării liniare): Dacă problema de programare liniară în formă standard admite un program (soluţie admisibilă), atunci ea are cel puţin un program de bază. Dacă problema are un program optim, atunci are un program optim de bază. Demonstraţie: Fie x∈S un program al următoarei problemei de programare liniară: min c T x ° ® Ax = b . ° x ≥ 0 ¯
(2.41)
Notăm cu p numărul componentelor nenule ale vectorului x. Fără a restrânge generalitatea problemei putem presupune că cele p componente nenule sunt chiar primele componente din cele n ale vectorului x adică: 17
Programare liniară
x = ( x1 , x2 , x3 , …xp , 0, 0 ,0)T
(2.42)
• •
Dacă p = 0, atunci x = 0 deci afirmaţia teoremei este evidentă. Dacă p > 0, atunci există două posibilităţi: - dacă vectorii a1 , a2 , ..ap ∈ A corespunzători celor p componente nenule ale lui x sunt liniari independenţi, atunci x este program de bază. - dacă vectorii a1 , a2 , ..ap ∈ A corespunzători celor p componente nenule ale lui x sunt liniari dependenţi atunci există numerele reale: y1, y2,.. …yp nu toate nule astfel încât să fie satisfăcută relaţia: a1y1 + a2y2 +…..+apyp = 0
(2.43)
Relaţia (2.43) se poate scrie sub următoarea formă echivalentă : Ay = 0 cu y ≠0. Notăm cu y vectorul cu primele p componente nenule şi următoarele componente n-p nule: y = (y1, y2 , …yp, 0, 0 .0 )T. Atunci, obţinem: A( x + λy ) = Ax + λAy = b, ( ∀ ) λ ∈ R Deci, x + λy este soluţia sistemului Ax=b astfel putem determina valori ale lui λ pentru care x + λy este program pentru problema (2.41), deci este îndeplinită şi condiţia: x + λy > 0 Notăm: I1 = mulţimea indicilor i , 1< i < p , yi > 0; I2 = mulţimea indicilor i , 1< i
x (− i ), I 2 ≠ Φ ° min λ2 = ® i∈I 2 y i ° , I2 = Φ ¯+ ∞
(2.44)
Deci pentru oricare λ ∈ [λ1 , λ 2 ] , avem îndeplinită condiţia: x + λy ≥ 0, deci vectorul x + λy este program. Rezultă că c T y = 0 ,deoarece în caz contrar alegând pe λ de semn contrar valorii lui c T y , avem următoarele: c T ( x + λy ) = c T x + λc T y < c T x , ceea ce contrazice faptul că x este program optim. Prin urmare c T ( x + λy ) = c T x , adică x+ λy este program optim. Astfel putem alege o valoare λ0 pentru care vectorul x + λ0y să aibă cel mult p-1 componente nenule, deci λ0 ∈ (λ1 + λ 2 ) ( λ1 , λ 2 nu pot fi ambele infinit) x În caz particular, λ = λ0 = min ( i ) deci se va obţine programul soluţie x + λ0y cu p-1 yi <0 yi componente pozitive şi astfel vom avea două cazuri : • Dacă coloanele corespunzătoare componentelor sunt liniar independente atunci programul anterior este program de bază. • Dacă coloanele corespunzătoare componentelor sunt liniar dependente atunci se reia algoritmul într-un număr finit de paşi, cel mult p până se va ajunge la primul caz şi se obţine un program optim de bază pentru problema dată. Definiţia 2.1: Fie V un spaţiu liniar peste corpul R şi x, y doi vectori din V. Mulţimea vectorilor [x, y ] = {X ∈ V / X = (1 − λ) x + λy,0 ≤ λ ≤ 1 } se numeşte segment al lui V (uneşte vectorul x cu vectorul y ). Definiţia 2.2: O mulţime M de vectori din V se numeşte mulţime convexă dacă (∀) x, y ∈ M şi 18
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
(∀) λ ∈[ 0,1] , atunci [ x, y] ⊆ M . Deci se poate spune că mulţimea M din V este convexă, dacă odată cu doi vectori x, y ∈ M conţine şi segmentul determinat de aceşti vectori. Definiţia 2.3: Vectorul X ∈ M se numeşte vârf sau punct extrem al mulţimii M dacă nu există vectorii x, y ∈ M astfel încât {X = (1 − λ ) x + λy,0 ≤ λ ≤ 1 } . În caz contrar X se numeşte punct interior mulţimii M . Definiţia 2.4 : Prin combinaţie liniară convexă a vectorilor x1 ,x2 …,xm ∈ M se înţelege o expresie de forma λ1x1 + λ2x2 + …+ λmxm cu λ ∈[ 0,1 ] şi λ1 + λ2 + …+ λm = 1 Concluzie: Orice punct interior X al unei mulţimi convexe M se poate exprima ca o combinaţie liniară convexă de un număr finit de puncte extreme. Teorema 2.2: Mulţimea soluţiilor admisibile ale unei probleme de programare liniară este o mulţime convexă . Demonstraţie : Fie mulţimea soluţiilor admisibile dată de relaţia (2.40). Fie două soluţii: x1 , x2 ∈ S. Atunci pentru λ ∈ [0,1] avem x = λx1 +(1- λ)x2 ≥0
(2.45)
Înlocuind relaţia (2.45) în relaţia (2.40) obţinem : Ax= A[λx1 +( 1- λ)x2]=λAx1 + (1- λ) Ax2 = λb + (1- λ)b = λb+ b - λb = b, deci mulţimea soluţiilor problemei de programare liniară este o mulţime convexă. Teorema 2.3: Orice soluţie admisibilă de bază a unei probleme de programare liniară este vârf sau punct de extrem al mulţimii soluţiilor admisibile. Demonstraţie. Presupunem că soluţia admisibilă de bază x are forma x=(x1 x2 … xm 0 …0T. Aceasta înseamnă că xi ≥ 0 (i = 1, m), vectorii p1, p2, …,pm sunt liniar independenţi şi x satisface sistemul de restricţii, deci x1P1 + x2P2 +… + xmpm +0pm+1 + … + 0pn = p0
(2.46)
Trebuie arătat că x este vârf al mulţimii S a soluţiilor admisibile. Presupunem prin absurd că x nu este vârf, ci punct interior, adică există doi vectori x' , x' '∈ S astfel încât: x = λx'+(1 − λ )x' ' , λ ∈ (0,1) Scris pe componente: x1 = λx1' + (1 − λ )x1' , x 2 = λx 2' + (1 − λ )x 2'' ,……., x m = λx m' + (1 − λ )x m'' ,.….…, 0 = λx n' + (1 − λ )x n''
(
)
Însă λ ∈ (0,1) , deci 1 − λ > 0 , iar xi' ≥ 0 i = 1, n şi xi'' ≥ 0 x' , x' '∈ S , astfel că, din cele n – m relaţii se obţin: x m' +1 = 0 x n' = 0 ; x m'' +1 = 0 x n'' = 0 şi deci vectorii x' , x' ' au formele: 19
(i = 1, n)
deoarece
Programare liniară
(
x' = x1' x 2' x m' 0 0
)
T
,
(
x' ' = x1'' x 2'' x m'' 0 0
)
T
(2.47)
Exprimăm faptul că x' , x' '∈ S verifică restricţiile x1' p1 + x 2' p 2 + + x m' p m = p0
(2.48)
x1'' p1
(2.49)
+
x 2''
p2 + +
x m''
p m = p0
Însă vectorii pi ,…,pm sunt liniari independenţi. Rezultă: x1' = x1'' , x 2' = x 2'' , x m' = x m'' adică x' = x' '
(2.50)
Aceasta înseamnă că nu există vectorii x' , x' '∈ S astfel ca x = λx'+(1 − λ )x' ' λ ∈ (0,1) prin urmare x este vârf sau punct de extrem în S. Teorema 2.4: Funcţia obiectiv a unei probleme de programare liniară ia valoare optimă într-un punct extrem a mulţimii convexe M a tuturor soluţiilor admisibile ale problemei de programare liniară. Demonstraţie: Presupunem că se cere ca funcţia obiectiv să fie minimizată. ~ Notam cu M = { xi , i ∈ I } mulţimea punctelor extremale ale lui M şi fie x1 punct extrem pentru care c T x1 = min{c T xi } = z1 i∈I
Presupunem prin absurd că această afirmaţie nu este adevărată, atunci există x0 ~ ∈ M − M astfel încât : c T x0 = z0 < z1, deoarece x0 nu este punct extrem atunci :
{
}
x0 =
¦λ x i
i
i∈I
, λI ≥ 0 ,
¦λ
i
=1
(2.51)
i∈I
Dar z0 = c T x0 = ¦ λ i c T ' xi > ¦ λ i c T x1 = cT x1 = z1, ceea ce este o contradicţie. Deci i∈I
i∈I
x1 este un program minimal pentru problema de programare liniară.
Consecinţă : Dacă funcţia obiectiv ia aceeaşi valoare optimă în mai multe puncte extremale, atunci orice combinaţie liniară convexă a acestora este soluţie optimă a problemei de programare liniară. 2.2.2. Baze ale problemei de programare liniară
Fie problema de programare liniară în forma standard (2.13), în care matricea A are m linii şi n coloane, iar rang A = m < n. Ecuaţiile ce compun sistemul liniar Ax = b sunt liniar independente, iar sistemul are o infinitate de soluţii. Astfel, în matricea A există cel puţin un grup de m coloane liniar independente, care formează o bază a spaţiului Rm. Definiţiile ce urmează reprezintă fundamente ce stau la baza rezolvării modelelor de programare liniară.
Definiţia 2.5 Se numeşte bază a problemei de programare liniară în formă standard un grup de m coloane liniar independente. 20
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Problema (2.13) are un număr finit de baze şi anume C nm . Fie B o bază formată cu m coloane, ale matricei A. Matricea A se poate scrie partiţionat sub forma:
[ ]
[ ]
A = [B, S ] , cu B = a (i ) i∈I , S = a ( j ) j∈ J
(2.52)
unde prin I şi J s-au notat mulţimile de indici corespunzători coloanelor din baza B şi, respectiv, a celorlalte coloane:
{
I = i = 1, n a (i ) ∈ B J = {1,2,..., n}/ I
}
(2.53)
Partiţionarea vectorului x al variabilelor problemei este următoarea: ªxB º x = « S » , cu x B = [xi ]i∈I , ¬x ¼
[ ]
xS = x j
j∈J
(2.54)
iar partiţionarea vectorul c al coeficienţilor funcţiei obiectiv este:
ªc B º c = « S » , cu c B = [ci ]i∈I , ¬c ¼
[ ]
cS = c j
j∈J
(2.55)
În raport cu baza B aleasă, variabilele xi (i ∈ I ) se vor numi variabile de bază, iar x j ( j ∈ J ) variabile secundare. Sistemul de ecuaţii Ax = b se poate scrie după partiţionare sub forma:
ª
B
º
[B, S ]⋅ « x S » = b ⇔ Bx B + Sx S ¬x ¼
=b
(2.56)
Matricea B fiind o bază a spaţiului Rm este inversabilă. Astfel prin înmulţirea relaţiei (2.56) la stânga cu B-1 se obţine forma explicită a sistemului de ecuaţii: x B = B −1b − B −1 Sx S
(2.57)
Notăm cu: B
x = B −1b
(2.58)
y Bj = B −1a ( j ) , j = 1, n
(2.59)
Înlocuind relaţiile (2.58) şi (2.59) în relaţia (2.57) obţinem: B
x B = x − ¦ y Bj x Bj
(2.60)
j∈J
Scrisă pe componente relaţia (2.60) devine: 21
Programare liniară B
xiB = x i − ¦ y ijB x Bj , i ∈ I
(2.61)
j∈J
Definiţia 2.6. Soluţia de bază corespunzătoare bazei B este: ª Bº x B = «x » ∈ Rn ¬« 0 ¼»
(2.62)
O soluţie de bază este o soluţie admisibilă (program) a unei probleme de programare B
liniară dacă x ≥ 0 . Definiţia 2.7 Baza B care satisface condiţia B −1b ≥ 0
(2.63)
se numeşte bază primal admisibilă.
Ţinând seama de relaţiile (2.54) şi (2.55), funcţia obiectiv a problemei de programare liniară, z = c T x , poate fi exprimată prin:
[
]
B ' ªx º z = c B c S ⋅ « S » = c TB x B + c ST x S = c TB B −1b − B −1 Sx S + c TS x S ¬x ¼ T −1 z = c B B b − c TB ' B −1 S − c ST ' x S
(
(
)
)
(2.64)
Notăm cu: B
z = c TB x z Bj
=
c TB
B
y Bj ,
(2.65) j = 1, n
(2.66)
Înlocuind relaţiile (2.65) şi (2.66) în relaţia (2.64) obţinem: B
(
)
z = z − ¦ z iB − c j x Bj j∈J
(2.67)
B
Definiţia 2.7. Constanta z din relaţia (2.67) reprezintă valoarea funcţiei obiectiv în soluţia asociată bazei B.
Diferentele z Bj − c j ( j ∈ J ) se mai numesc costuri reduse şi au rolul esenţial în caracterizarea optimalităţii unei soluţii admisibile de bază a unei probleme de programare liniară. 2.2.3. Interpretarea geometrică a problemei de programare liniară
O interpretare geometrică a unei probleme de programare liniara se poate obţine simplu în cazul când problema are două variabile (spaţiu R2) şi se prezintă sub forma canonică. 22
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Fie modelul de programare liniară (2.11) exprimat în funcţie de două variabile de decizie x1 şi x2. 1) Restricţiile unui astfel de model pot fi exprimate prin a) egalităţi : a11 x1 + a12 x 2 = b1 b) inegalităţi : sau
a12 x1 + a 22 x 2 ≥ b2 a 21 x1 + a 22 x 2 ≤ b2
2) Condiţii de nenegativitate : x1 ≥ 0, x 2 ≥ 0 3) Funcţia obiectiv (2.10) poate fi: min(max) z = c1 x1 + c 2 x 2
(2.68) (2.69) (2.70)
Realizând o analiză din punct de vedere grafic putem observă următoarele : • egalitatea a11 x1 + a12 x 2 = b1 , reprezintă o dreapta. Mulţimea soluţiilor ( x1 x 2 ) , aparţine acestei drepte (d), iar această dreaptă (curbă de nivel), împarte planul (0 x1 x 2 ) în două semiplane. • inegalitatea a11 x1 + a12 x 2 < b1 , - mulţimea soluţiilor fiind reprezentată în acest caz printr-o arie, dreapta împarte planul (0 x1 x 2 ) în doua semiplane ce au o arie comună şi în final un punct comun. Pentru aflarea soluţiei optime, dacă ea există, trebuie aflată mai întâi mulţimea soluţiilor admisibile S – mulţime ce satisface sistemul de restricţii şi condiţiile de nenegativitate. În reprezentarea grafică acesta va fi o mulţime convexă, reprezentată printr-un domeniu, numit admisibil. Exemplul 2.2 Să se rezolve problema de programare liniară z = max(2 x1 + x 2 ) °2 x − x ≥ −2 ° 1 2 ® − x 2 x 2 ≤2 ° 1 °¯ x1 + x 2 ≤ 5 x1 ≥ 0 , x 2 ≥ 0
Pentru determinarea domeniului admisibil se procedează în modul următor: se află domeniul care satisface cele trei restricţii şi condiţiile x1 ≥ 0, x 2 ≥ 0 . Se figurează dreptele: (d1) (d2) (d3)
2x1- x2 = -2, trece prin A1(-1,0), B1(0,2) x1- 2x2 = 2, trece prin A2(2,0), B2(0,-1) x1+ x2 = 5, trece prin A3(5,0), B3(0,5)
şi apoi se ia, în cadranul întâi intersecţia domeniilor ce reprezintă soluţiile, respectiv, ale celor trei inecuaţii, fig. 2.1. Prin intersecţia celor trei semiplane s-a obţinut domeniul admisibil, ce este o mulţime convexă. Coordonatele oricărui punct din acest domeniu satisfac toate restricţiile şi condiţiile de nenegativitate ale problemei. Conform teoremei 2.4, dacă funcţia obiectiv îşi atinge valoarea maximă, atunci z ia valoarea maximă într-un vârf ( punct extrem al mulţimii convexe). Acestea sunt vârfurile poligonului, notate cu: O, A, B, C, D. 23
Programare liniară
Coordonatele acestor puncte se află uşor astfel: x2 d1
C(1,4)
(D
d2
)
D(0,2)
B (4,1) d3 0
x1
A(2,0)
Fig.2.1
x − 2 x2 = 2 B ∈ (d 2 ) (d 3 )® 1 ¯ x1 + x2 = 5 2 x − 2 x 2 = −2 C ∈ (d 1 ) (d 3 )® 1 ¯ x1 + x 2 = 5
B(4,1) C (1,4 )
Aflarea soluţiei optime se bazează pe faptul că funcţia obiectiv, având două variabile se poate reprezenta printr-o dreaptă (D). (D): c1x1 + c2x2 = z Adusă la forma y = mx + n unde m este panta, iar n ordonata la origine, rezultă: (D): x 2 = −
c1 z x1 + c2 c1
care reprezintă o mulţime de drepte paralele între ele, având panta constantă m = −
c1 c2
z . c1 În problemele de maxim vom alege poziţia care are ordonata la origine astfel ca ea să furnizeze valoarea maximă pentru z. Analog pentru problemele de minim.
şi ordonata la origine variabilă, n =
Pentru exemplul de mai sus rezultă: (D) : x2 = -2x1 + z ; se alege acea dreaptă ce trece prin unul din vârfuri, ce are m = -2 şi ordonata n = z = max Ea este figurată punctat în figura 2.1. Ordonata la origine maximă corespunde punctului B deci x1 = 4 şi x2 = 1 z = 2*4 +1*1 = 9 = max
Deoarece panta dreptei (D) este m = -2 = tg α, rezultă că unghiul α = 116,560.
24
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Exemplul 2.3. Pentru fabricarea a două produse P1 şi P2, o firmă dispune de patru tipuri de resurse Ri 1,4 . Cantităţile de resurse Ri folosite pentru fabricarea fiecărei unităţi din produsele P1 şi P2, în unităţi convenţionale (tone etc) sunt date în tabelul 2.1. Se mai cunosc cantităţile disponibile ale firmei din fiecare resursă Ri i = 1,4 şi beneficiile pentru fiecare unitate din cele două produse. Să se determine planul de producţie astfel ca beneficiul total să fie maxim.
( )
(
)
Tabelul 2.1 Resurse R1 R2 R3 R4 Beneficiu
R1 2 1 4 0 2 um
R1 2 2 0 4 3 um
Disponibil 12 8 16 12
Introducând variabilele de decizie: x1 = numărul de unităţi din produsul P1 şi x2 = numărul de unităţi din produsul P2 , rezultă următorul model matematic de P.L.: 2 x1 + 2 x 2 ≤ 12 °x + 2x ≤ 8 ° 1 2 ® 4 16 x ≤ ° 1 °¯4 x 2 ≤ 12
x1 ≥ 0, x 2 ≥ 0, z = 2 x1 + 3 x 2 = max
Soluţia grafică (2.2) se obţine determinând domeniul admisibil: (d 1 )2 x1 + 2 x 2 = 12 °(d )x + 2 x = 8 ° 2 1 2 ® ( ) ° d 3 4 x1 = 16 °¯(d 4 )4 x 2 = 12 (D) 2x1 + 3x2 = z
Se observă că dreptele (d1 ) , (d 2 ) şi (d 3 ) sunt concurente în punctul B(4,2), iar C ∈ (d 2 ) (d 3 ) are coordonatele C(2,3). x2
d3
d4
)
C(2,3)
(D
D(0,3)
B(4,2)
d1 0
A(4,0)
Fig.2.2
25
d2 x1
Programare liniară
Soluţia optimă a problemei este: x1 = 4; x2 = 2
f(x) = 14 = max
Verificăm soluţia în restricţiile problemei. Rezultă că resursele R1, R2 şi R3 sunt resurse rare, utilizate în întregime în timp ce resursa R4 nu a fost în întregime utilizată. Cantitatea din resursa R4, ce rămâne disponibilă poate fi determinată şi ulterior folosită cunoscând preţul umbră (dual). Această analiză urmează a fi detaliată în subcapitolul 2.4. 2.3.
Metoda Simplex
Metoda Simplex sau “ metoda îmbunătăţirilor succesive “ evită cercetarea exhaustivă a tuturor soluţiilor de bază ale unei probleme de programare liniară, construind succesiv soluţii realizabile de bază din ce în ce mai bune ale modelului până când este obţinută o soluţie de bază optimă. Prin soluţie „mai bună” înţelegând soluţia ce dă funcţiei de eficienţă (obiectiv) o valoare mai mică, respectiv mai mare decât cele precedente după cum funcţia de eficienţă este de minim sau de maxim. Deci acest algoritm este o metodă de examinare sistematică a programelor de bază ce dă funcţiei de eficienţă o valoare optimă. Această metodă pune în evidenţă cazul în care problema admite un optim infinit sau mulţimea programelor este vidă. 2.3.1. Fundamente teoretice în aplicarea metodei Simplex
Prezentarea metodei simplex se realizează pe un model de programare liniară dat în formă standard şi în care funcţia obiectiv este o funcţie de minimizare. min c T x ° ® Ax = b , unde ° x≥0 ¯
C , x ∈ R n ° ® A ∈ M m ,n ° b ∈ Rm ¯
(2.71)
B Fie B o bază primal admisibilă extrasă din matricea A şi x = B −1b o soluţie de bază iniţială a problemei de programare liniară. Pentru ordonarea şi facilitarea calculelor se utilizează în aplicarea practică a algoritmului tabele ce poartă denumirea de tabele simplex. Aceste tabele sunt tabele simple ce au m+1 linii şi n+1 coloane şi cuprind coeficienţii numerici al problemei (2.71) corespunzători bazei primal admisibile B (tab 2.2). Tabelul conţine în prima coloană, variabilele de bază (V.B.), în coloana a doua valoarea variabilelor de bază (V.V.B), iar în următoarele n coloane vectorii y Bj , j = 1, n . Pe ultima linie a tabelului se trece valoarea funcţiei obiectiv pentru baza B notată cu
z
B
şi diferenţele z Bj − c j , j = 1, n . Acestui tabel se ataşează o linie deasupra variabilelor x j şi o coloană la stânga
coloanei V.B cu coeficienţii corespunzători funcţiei obiectiv c j , j = 1, n .
26
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Tabelul 2.2 cl
... ...
xk
CB
V.B.
V.V.B
xl
c1
x1B
x1B
yB
...
xiB
xiB
yB
...
xlB
xlB
yB
ci
cl
cm
x mB
11
i1
l1
yB
xmB
m1
...
cn
...
xj
...
xn
yB
...
yB
...
yB
...
yB
...
...
1k
ik
ij
yB
1n
1j
yB
in
...
...
z 1B - c 1 ...
zB
cj
ck
yB
lk
yB
mk
z Bk - c k
...
yB
...
yB
yB
...
yB
ln
lj
...
mj
... z B - c j j
mn
... z B - c n n
Tabelul simplex se ataşează fiecărei baze B din algoritm şi are ca fundamente rezultatele teoretice ce sunt prezentate în continuare. Teorema 2.5 Criteriu de optimalitate Fie B o bază primal admisibilă pentru probleme de programare liniară (2.71). Dacă B z Bj − c j ≤ 0 , oricare ar fi j ∈ J , atunci programul de bază asociat bazei B, x = B −1b este o soluţie optimă a problemei de programare liniară considerată.
Teorema 2.6 Criteriu de infinitudine a soluţiilor Fie B o bază primal admisibilă pentru probleme de programare liniară (2.71). Dacă există indicele k∈ J astfel încât z kB − ck ≥ 0 şi yikB ≤ 0 , oricare ar fi i ∈ I atunci problema are un optim infinit.
Teorema 2.7 Criteriu de îmbunătăţire a soluţiilor Fie B o bază primal admisibilă pentru probleme de programare
{
}
liniară 2.71. Fie k∈ J astfel încât z kB − ck > 0 (2.72) şi I + = i∈I / yikB > 0 ≠ Φ . Pentru indicele i ∈ I + determinat cu relaţia: min i∈ I +
xi
B
yikB
=
xl
B
(2.73)
ylkB ~ B
B
se obţine un nou program de bază x cel puţin la fel de bun ca x , corespunzător unei noi ~ (l ) baze B care are aceleaşi coloane ca şi B, cu excepţia coloanei a ce se înlocuieşte cu (k ) coloana a . Observaţii: ~ Baza B este primal admisibilă şi verifică toate teoremele anterioare. Relaţia (2.73) reprezintă criteriul de ieşire din bază şi ne arată indicele l ∈ I + , al coloanei a (l ) ce urmează să părăsească baza B. 27
Programare liniară
În cazul în care există mai mulţi indici k ∈ J pentru care se îndeplinesc (2.72) şi (2.73) atunci se pot construi mai multe baze primal admisibile şi fiecare dintre acestea modifică valoarea funcţiei obiectiv. Pentru a obţine mai repede optimul căutat este indicat a alege acel indice pentru care se verifică relaţia. B
xl B max (( z j − c j ) B ) = j∈ J ylk
B
xl
ylkB
( z kB − c ) k
(2.74)
În practică utilizându-se pentru evitarea calculelor următorul criteriu: B B max ( z j − c j ) = z k − ck j∈ J
(2.75)
Relaţia 2.75 reprezintă criteriul de intrare în bază şi ne arată indicele
a (k ) ce urmează să intre în baza B. ylk din tabelul simplex poartă denumirea de pivot. ~ Pentru calculul elementelor tabelului simplex asociat bazei B în raport cu elementele tabelului simplex asociat bazei B se utilizează formulele de schimbare a bazei în cadrul unei operaţii numită pivotare gaussină. În practică formulele de schimbare a bazei se echivalează cu următoarele reguli de transformare a tabelelor simplex : Elementele situate pe linia pivotului se împart la valoarea pivotului ; Elementele situate pe coloana pivotului devin zero cu excepţia pivotului ce va avea valoarea unu ; Celelalte elemente ale tabelului simplex se transformă după regula dreptunghiului. Se consideră dreptunghiul imaginar a cărui diagonală este determinată de k ∈ J al coloanei Elementul
~
elementul yijB şi pivotul yijB (fig. 2.3) ; noua valoare yijB se obţine împărţind la pivot diferenţa dintre produsul yijB ylkB şi yljB yikB după formula : ~ yijB
=
yijB ylkB − yljB yikB
(2.76)
ylkB
y
B ij
elementul de transformat
y ikB
y ikB
y ijB
pivotul
Fig.2.3 2.3.2. Algoritmul simplex primal.
Rezultatele teoretice obţinute anterior permit enunţarea algoritmului simplex. Acest algoritm pentru rezolvarea problemelor de programare liniară date în formă standard (2.13) este diferit în raport cu tipul funcţiei obiectiv, respectiv, probleme de minimizare sau maximizare.
28
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Algoritmul simplex primal pentru probleme de minimizare • •
Pasul 1 : Se determină o baza B primal admisibilă. B B B Pasul 2 : Se determină următoarele elemente : x , z , z B j −c j, y j
•
Pasul 3 : Se analizează toate diferenţele z Bj − c j : B Dacă toate diferenţele z Bj − c j ≤ 0 , ∀j = 1, n atunci programul x este optim.
{
}
Dacă există cel puţin un indice j∈ J + , J + = j ∈ J / z Bj − c j > 0
astfel încât
z Bj − c j > 0 se trece la pasul 4. Pasul 4 Se determină indicele k ∈ J + cu criteriul de intrare în bază
z kB − ck = max ( z Bj − c j ) j∈ J +
Dacă y kB ≤ 0 atunci problema are un optim infinit. Dacă (∃)k ∈ J + pentru care y kB > 0 se trece la pasul 5. Pasul 5: Se determină indicele l ∈ I cu criteriul de ieşire din bază: § xB · xB l ¨ i ¸ min ¨ B ¸ = B i∈ I © yij ¹ ylk y B >0 ik
(l ) (k ) • Pasul 6 : Se înlocuieşte în baza iniţială B vectorul a cu vectorul a , ~ obţinându-se astfel o nouă bază B , iar pivotul corespunzător este y lk . ~ Mărimile tabelului simplex corespunzător noii baze B , se vor determina cu ajutorul unei reguli denumită regula dreptunghiului (pivotare în jurul elementului y lk ), după care se trece la Pasul 2.
Algoritmul simplex primal pentru probleme de maximizare Acest algoritm are paşii 1,2,5,6 identici cu algoritmul pentru probleme de minimizare.
•
Pasul 3 : Se analizează toate diferenţele z Bj − c j : B Dacă toate diferenţele z Bj − c j ≥ 0 , ∀j = 1, n atunci programul x este optim.
{
}
Dacă există cel puţin un indice j ∈ J − , J − = j ∈ J / z Bj − c j < 0
astfel încât
z Bj − c j < 0 se trece la pasul 4. Pasul 4 Se determină indicele k ∈ J + cu criteriul de intrare în bază
z kB − ck = min ( z Bj − c j ) j∈ J −
Dacă y kB ≤ 0 atunci problema are un optim infinit.
Dacă (∃)k ∈ J + pentru care y kB > 0 se trece la Pasul 5. Algoritmul simplex poate fi exprimat sintetic sub următoarea schemă logică ( fig.2.4).
29
Programare liniară START
Construieste tabel simplex initial
Exista valori pozitive (negative) pe linia diferentelor?
Nu
Indica solutia optima
STOP
Da Determina coloana pivotului
Exista valori pozitive in coloana pivotului?
Nu
Indica solutia optima
STOP
Da Determina linia pivotului
Calculeaza un nou tabel simplex
Fig.2.4
Exemplul 2.4 . Să se rezolve următoarea problemă de programare liniară: x1 − x 2 ≤ 4, °3 x − x ≤ 18, 2 °° 1 ®− x1 + 2 x 2 ≤ 6, °x , x ≥ 0 ° 1 2 °¯max (2 x1 + x 2 ).
Pentru a aplica algoritmul simplex, vom aduce mai întâi problema la forma standard. În acest scop introducem variabilele ecart x3, x4 şi x5: x1 − x 2 + x3 = 4, °3 x − x + x = 18, 2 4 °° 1 2 − x + x + x5 = 6, ® 1 2 ° x , x ,..., x ≤ 0 6 ° 1 2 °¯max(2 x1 + x 2 ).
Iteraţia 1 Pasul 1 Fie B o bază admisibilă a problemei formată din coloanele matricii A şi anume a3, a4 şi a5: §1 0 0· ¸ ¨ 3 4 5 B = a , a , a = ¨0 1 0 ¸ ¨0 0 1¸ ¹ © Pasul 2 Baza B este matricea – unitate, astfel vom calcula următoarele elemente:
(
B −1 = B = I şi x
B
)
= B −1b = b = [4 18 6] ;
30
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
y Bj = B −1 a j = a j , elementele matricii A. B
z Bj − c j = c ' ⋅ B −1a j − c j = (0 0 0 ) ⋅ a j − c j = −c j = −(2 1 0 0 0)
z
B
= c B ⋅ B −1b = 0.
Cunoscând toate aceste date, putem forma tabelul simplex iniţial ( tab.2.3).
{
}
Pasul 3. Deoarece există j ∈ J − , J − = j ∈ J / z Bj − c j < 0 astfel încât z Bj − c j < 0 , baza iniţială nu este optimă. Pasul 4 Se determină indicele k ∈ J + cu criteriul de intrare în bază z kB − ck = min ( z Bj − c j ) =min ( − 2,−1 )=-2. Deci indicele k = 1, astfel variabila x1 va intra j∈ J −
~ în noua bază B şi (∃)k ∈ J + pentru care y kB > 0 . Pasul 5: Se determina indicele l ∈ I cu criteriul de ieşire din bază § xB · xB 4 18 ½ 4 l ¨ i ¸ min ¨ B ¸ = B = min ® , ¾ = , ¯1 3 ¿ 1 i∈ I © yij ¹ ylk y B >0 ik
deci indicele l = 3. Variabila x3 va părăsi baza B. Pivotul este y31= 1 Pasul 6: Se înlocuieşte în baza iniţială B variabila x3 cu variabila x1 obţinându-se astfel o noua ~ baza B ceea ce însemnă că se vor transforma toate mărimile următorului tabel simplex cu regula dreptunghiului. Interaţia 2 Se realizează un pivotaj în jurul elementului y42 (tab.2.3). Interaţia 3. Se realizează un pivotaj în jurul elementului y53 (tab.2.3). Interaţia 4 Deoarece z j − c j ≥ 0 pentru toţi j, baza actuală este optimă. Deci programul optim 42 36 14 , x2 = , x3 = , x 4 = 0 , x5 = 0 ( x 4 şi x5 au valoarea 5 5 5 0, deoarece sunt variabile secundare). al problemei noastre este x1 =
Interpretare geometrică. Pentru problema examinată mai sus se poate da o interpretare geometrică simplă în spaţiu R2. În planul x1Ox2, mulţimea punctelor (x1, x2) care satisfac restricţia x1 − x 2 ≤ 4 constituie unul din semiplanele determinate de dreapta (d 1 ) : x1 − x 2 = 4 , şi anume semiplanul care conţine originea. Celelalte două restricţii determină analog alte două semiplane. Mulţimea programelor problemei va fi formată din mulţimea punctelor din primul cadran (x1 ≥ 0, x 2 ≥ 0 ) care se află la intersecţia celor trei semiplane. Această mulţime este poligonul OABCD (fig. 2.5). Funcţia obiectiv este max(2x1 +x2). Ecuaţia 2x1 +x2 = z reprezintă o familie de drepte paralele între ele. În figura 2.4 sunt reprezentate punctat câteva din aceste drepte. Pentru z=z2, funcţia obiectiv ia valori mai mari decât pentru z = z1, iar pentru z = z3 valori şi mai mari. 31
Programare liniară
Tabelul 2.3 2
1
0
0
V.V.B
xl
x2
x3
x4
x5
x3
4
1
-1
1
0
0
0
x4
18
3
-1
0
1
0
0
x5
6
-1
2
0
0
1
0
-2
-1
0
0
0 0
B
V.B.
0
C
0
2
1
0
0
V.B. V.V.B
xl
x2
x3
x4
x5
2
x1
4
1
-1
1
0
0
0
x4
6
0
2
-3
1
0
0
x5
10
0
1
1
0
1
8
0
-3
2
0
0
2
1
0
0
0
V.B. V.V.B
xl
x2
x3
x4
x5
2
x1
7
1
0
-1/2
1/2
0
1
x2
3
0
1
-3/2
1/2
0
0
x5
7
0
0
5/2
-1/2
1
17
0
0
-5/2
-3/2
0
CB
CB
B
C
V.B. V.V.B
2
1
0
0
0
xl
x2
x3
x4
x5
2
x1
42/5
1
0
0
2/5
1/5
1
x2
36/5
0
1
0
1/5
3/5
0
x3
14/5
0
0
1
-2/5
2/5
24
0
0
0
1
1
x2 42 36 C , 5 5
(d2) B(7,3)
D (0,3)
(d1)
A(4,0)
O (0,0)
x1
Fig.2.5 Însă, după cum se vede din figură, nu există nici un program care să dea funcţiei obiectiv valoarea z3 (dreapta 2x1 +x2 =z3 nu intersectează poligonul OABCD – domeniul soluţiilor). Cea mai mare valoare pe care o poate lua z pentru punctele din poligonul OABCD se obţine atunci când dreapta 2x1 +x2 = z trece prin punctul C. Valoarea lui z în acest caz este 2. 42/5 + 36/5 = 24. 32
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Când am aplicat algoritmul simplex, drept bază iniţială am luat baza B = (a3, a4, a5). Variabilele x1 şi x2 sunt variabile secundare, deci au valoarea 0; reiese că ne-am găsit în vârful O (0,0) al poligonului OABCD, iar valoarea funcţiei obiectiv era z = 0. În continuare, variabila x1 intră în bază şi am obţinut programul x1 = 4, x2 = 0. Geometric aceasta înseamnă că din vârful O ne-am deplasat până în vârful A (4,0) de-a lungul muchiei OA. În continuare, din vârful A am ajuns în vârful B, mergând pe muchia AB (variabila x3 a păstrat tot valoarea 0, deci ne găseam pe dreapta d1). De aici am ajuns în vârful optim C, urmând muchia BC. Valoarea funcţiei obiectiv a crescut de la 0 la 8, apoi la 17 (în vârful B) şi, în sfârşit, la valoarea maximă 24. Acest lucru este valabil şi în cazul general: fiecărei baze admisibile a problemei adusă la forma standard îi corespunde un vârf al domeniului soluţiilor. Concluzie: Fiecare iteraţie simplex reprezintă o deplasare de la un vârf al domeniului soluţiilor, pe o muchie, până la un vârf, care conferă funcţiei obiectiv o valoare „mai bună”.
Exemplul 2.5. O companie produce trei tipuri de produse A, B, C. Fiecare dintre aceste produse trebuie prelucrate tehnologic aceeaşi maşină unealtă, timp de 2 ore, 3 ore respectiv 1 oră. Maşina unealtă este disponibilă pentru perioada analizată, 400 ore. Pentru produsele A şi C se folosesc componente speciale, câte o bucată pentru fiecare produs, firma având un stoc disponibil pe perioada analizată de 150 de unităţi din aceste componente. Tot pentru produsele A şi C se utilizează un aliaj special: pentru o unitate din produsul A se utilizează 2 kg de aliaj special, iar pentru o unitate din produsul C, 4 kg. Stocul disponibil este de 200 kg din acest aliaj special. Studiul de piaţă pentru produsul B arată că se pot vinde pe perioada analizată cel mult 50 de unităţi din acest produs. Beneficiul unitar al produselor A, B şi C este respectiv: 8 um (unităţi monetare), 5 um, 10 um. Compania doreşte să stabilească planul de producţie care maximizează beneficiul total pe perioada analizată. Elaborarea modelului matematic Notăm x1 = numărul de produse A x2 = numărul de produse B x3 = numărul de produse C unde x1, x2, x3 pentru modelul analizat reprezintă variabilele de decizie. 2 x1 + 3 x 2 + x3 ≤ 400 ° x + x ≤ 150 ° 1 3 ® x + 2 ° 1 4 x3 ≤ 200 °¯ x 2 ≤ 50 x1 ≥ 0 , x 2 ≥ 0 , x3 ≥ 0 z = max(8 x1 + 5 x 2 + 10 x3 ) Se observă că problema nu are formă standard. Introducem variabilele de compensare x4, x5, x6, x7 şi înlocuim max(z)=min(-z), dorind să aplicăm algoritmul simplex pentru probleme de minim. Calculele efectuate sunt grupate în tabelele simplex reunite în tabelul 2.4. Soluţia optimă este: x = (100, 50, 0, 50, 50, 0, 0), iar funcţia obiectiv este min (f)= 1050, deci max(z) = 1050 Interpretarea soluţiei: Variabilele de decizie au valorile : x1 = 100, x2 = 50, x3 = 0 33
Programare liniară
2 x1 + 3 x 2 + x3 + x 4 = 400 ° x + x + x = 150 ° 1 3 5 ® x + x + x6 = 200 2 4 3 ° 1 °¯ x 2 + x7 = 50
xi ≥ 0
(i = 1,7)
f = min(−8 x1 − 5 x 2 − 10 x3 ) Matricea coeficienţilor tehnico - economici este: ª2 3 1 1 0 0 0º «1 0 1 0 1 0 0 » » A=« «2 0 4 0 0 1 0» » « ¬0 1 0 0 0 0 1 ¼ Se vor fabrica 100 unităţi din produsul A, 50 unităţi din produsul B, zero unităţi din produsul C. Se va obţine beneficiul maxim, egal cu 1050 unităţi monetare. Semnificaţia variabilelor de compensare rezultă din modul cum au fost introduse. Verificând restricţiile iniţiale ale problemei cu soluţia optimă x1 = 100, x2 = 50, x3 = 0 şi comparând cu sistemul de restricţii în care s-au introdus variabilele de compensare, rezultă: - orele de lucru pe maşină nu s-au folosit integral, rămânând disponibile x4 = 50 ore; - componentele nu s-au folosit integral, rămânând x5 = 50 unităţi. - stocul de aliaj după efectuarea prelucrărilor este nul x6 = 0 - este satisfăcută condiţia de vânzare pentru B, x7 = 0. Tabelul 2.4 -8
-5
-10
0
0
0
V.V.B
xl
x2
x3
x4
x5
x6
x7
400
2
3
1
1
0
0
0
x5
150
1
0
1
0
1
0
0
0
x6
200
2
0
4
0
0
1
0
0
x7
50
0
1 5
0 10
0 0
0 0
0 0
1
8 -8
-5 -10
0
0
0
0
xl
x2
x3
x4
x5
x6
x7
B
V.B.
0
x4
0
C
0 CB 0
V.B. V.V.B
0
0
x4 x5
350
3/2
3
0
1
0
-1/4
0
100
1/2
0
0
0
1
-1/4
0
-10
x3
50
1/2
0
1
0
0
1/4
0
0
x7
50
0
1
0
0
0
0
1
3
5
0
0
0
5/2
0
-10
0
0
0
0
x3
x4
x5
x6
x7
-1/4
-3
-500
-8
-5
0
CB
V.B. V.V.B
0
x4
200
3/2
0
0
1
0
0
x5
100
1/2
0
0
0
1
1/4
0
-10
x3
0 1
1 0
0 0
1/4 0
0
x2
1/2 0
0
-5
50 50 -750
3
0
C
B
V.B. V.V.B
xl
x2
0
0 0
0
-8
-5 -10
0
xl
x2
x3
x4
0
0
x4
50
0
0
-3
1
0
x5
50
0
0
-1
0
-8
x1
100
x2
50
0 1
2
-5
1 0
0 0
-1050
0
0
0
34
0 -6
0 x5
1
5/2
-5
0
0
x6
x7
-1
-3
1
-1/2
0
0 0
1/2 0
0 1
0
-4
-5
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
2.3.3. Metode de determinarea unei soluţii de bază iniţiale
Algoritmul simplex necesită, pentru pornire, ca problema să fie dată în forma standard şi să aibă o soluţie admisibilă de bază. Prima dintre condiţii se realizează folosind transformări utilizate în programarea liniară. Pentru cea de-a doua condiţie alegerea la întâmplare a unei baze formată din m vectori ai matricei A, conduce la soluţii de bază nerealizabile cu care algoritmul simplex nu poate începe. Găsirea unei baze pur şi simplu prin încercări repetate nu este indicată, această căutare putând dura foarte mult. Rezolvarea problemei pleacă de la observaţia că singura bază pentru care calculul de mai sus se poate face imediat este matricea unitate, caz în care soluţia de bază corespunzătoare este chiar vectorul termenilor liberi. Aceasta presupune ca problema să aibă toţi termenii liberi mai mari sau egali cu 0 şi în matricea A să existe toate coloanele matricei unitate. În acest sens plecăm de la observaţia că existenţa unui vector din matricea unitate este echivalentă cu existenţa unei variabile care apare doar în ecuaţia corespunzătoare lui 1 din acel vector, cu coeficientul 1. Acest lucru poate fi obţinut în două moduri: Alegem o nouă funcţie obiectiv care să-şi atingă extremul printre soluţiile 1) pozitive chiar pentru y = 0 şi în momentul când am obţinut soluţia respectivă pornim cu aceasta ca soluţie iniţială algoritmul simplex pentru fosta problemă (Metoda celor două faze). Adăugăm la vechea funcţie obiectiv noi variabile y cu coeficienţi aleşi astfel 2) încât aportul variabilelor la valoarea funcţiei să fie contrar scopului dorit (infinit pozitiv într-o problemă de minim şi infinit negativ într-o problemă de maxim) (Metoda coeficienţilor de penalizare) Vom detalia în continuare cele două metode:
Metoda celor două faze Fie dată problema de programare liniară la forma standard de maxim: max c T' ⋅ x ° ® A⋅ x = b ° x≥0 ¯
(2.77)
în care am aranjat deja ca toţi termenii liberi să fie pozitivi .
Faza 1 Constă în rezolvarea unei probleme de programare liniară auxiliară, asociată problemei iniţiale. Astfel construim problema: f ( x a ) = min( x ma +1 + x ma + 2 + ... + x ma + n ) ° Ax + I m x a = b ® ° x ,xa ≥ 0 ¯
(2.78)
unde xa sunt variabilele artificiale ce se introduc în restricţiile problemei atât cât sunt necesare în scopul formării bazei unitare; Im matricea unitate de ordin m. Rezolvăm cu algoritmul simplex această problemă, pornind rezolvarea de la baza matrice unitate, putem ajunge la două situaţii: 35
Programare liniară
1. minimul funcţiei f este strict pozitiv, aceasta fiind echivalent cu faptul că egalitatea Ax + Imxa = b se poate obţine doar pentru Imxa > 0 sau altfel spus Ax > b pentru orice x ≥ 0, deci sistemul Ax = b nu are soluţii admisibile şi în concluzie problema iniţială nu are soluţie. 2. minimul funcţiei f este 0, în acest caz, soluţia optimă obţinută verifică Ax = b, fiind în concluzie o soluţie admisibilă de bază a primei probleme.
Faza 2 Începând de la soluţia găsită la Faza 1 se rezolvă problema iniţială cu algoritmul simplex. Se îndepărtează din tabelul simplex toate elementele corespunzătoare variabilelor artificiale (cu excepţia celor care rămân în bază), introducând coeficienţii funcţiei obiectiv din problema iniţială. Dezavantajul metodei constă în faptul că tabelul simplex final de la faza 1 trebuie modificat pentru a se obţine tabelul simplex iniţial de la faza 2, eliminându-se coloanele corespunzătoare lui y şi totodată nu vom avea în tabelele simplex ale problemei iniţiale inversa bazei (se găsea în dreptul coloanelor matricei unitate din prima fază) necesară în anumite variante ale algoritmului simplex. Metoda coeficienţilor de penalizare Fie problema de programare liniară la forma standard de minimizare: min c T x ° ® A⋅ x = b ° x≥0 ¯
(2.79)
în care toţi termenii liberi sunt pozitivi şi matricea A nu conţine nici un vector coloană unitar. Construim problema: f = max(c T x − My) ° A⋅ x + y = b ® ° x, y ≥ 0 ¯
(2.80)
în care M este o constantă presupusă foarte mare (mai mare decât orice constantă care ar putea apare în rezolvarea problemei). Rezolvăm problema cu algoritmul simplex pornind rezolvarea de la baza matrice unitate, putând ajunge la trei situaţii: 1) problema are optim infinit, în acest caz, problema iniţială are optim infinit ( nu prezintă interes din punct de vedere tehnico-economic). 2) problema are optim finit şi în soluţia de bază avem cel puţin o variabilă din vectorul y. În acest caz problema iniţială nu are soluţii admisibile. 3) problema are optim finit şi în soluţia de bază nu avem nici o variabilă din vectorul y. În acest caz problema iniţială are optim finit, soluţia optimă şi maximul funcţiei fiind aceleaşi cu cele ale problemei modificate. Se remarcă faptul că variabilele y nu au aceeaşi semnificaţie economică ca celelalte variabile, ele fiind introduse doar ca un artificiu de calcul pentru a putea porni algoritmul simplex.
Observaţii : • Dacă matricea restricţiilor conţine vectori unitari, atunci numărul variabilelor artificiale introduse este egal cu m, numărul vectorilor unitari, indiferent de tipul funcţiei obiectiv. 36
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
• Dacă la aplicarea algoritmului simplex, o variabilă artificială iese din bază ea nu va mai intra niciodată, ceea ce arată eliminarea din calculele ulterioare. Exemplu 2.6 Un atelier de prelucrări mecanice fabrică două produse P1 şi P2. Din structura de dezagregarea produselor se deduce că pentru realizarea produsului P1 sunt necesare 3 componente de tip A şi un component de tip B, iar pentru realizarea produsului P2 sunt necesare 1 component de tip A şi 4 componente de tip B. Atelierul dispune în stoc de 10 componente de tip A. Contractele cu furnizorii pentru componentele de tip B, arată că se poate realiza aprovizionarea cu acesta în cantitate de cel puţin două componente B. Beneficiul unitar pentru produsele P1 şi P2 sunt de 2 um, respectiv de 3um. Se doreşte să se stabilească planul de producţie care să maximizeze beneficiul total. Modelul matematic este următorul: f = max(2 x1 + 3 x 2 ) 3 x1 + x 2 ≤ 10 ° ® x1 + 4 x 2 ≥ 2 ° x ,x ≥ 0 ¯ 1 2 unde x1 , x 2 , reprezintă numărul de produse de tip P1 respectiv P2. Forma standard a problemei va fi: (max ) f = 2 x1 + 3 x2 3 x1 + x 2 + x3 = 10 ° ® x1 + 4 x 2 − x 4 = 2 ° x ,x ,x ,x ≥ 0 ¯ 1 2 3 4
În matricea A vom introduce variabila x5 cu coeficientul 1 în a doua ecuaţie şi împreună cu coeficienţii variabilei x3 în final vom avea de rezolvat problema prin cele două metode: Metoda celor două faze Metoda coeficienţilor de penalizare min( x5 ) max(2 x1 + 3 x 2 − Mx 5 ) 3 x1 + x2 + x3 = 10 3 x1 + x 2 + x3 = 10 ° ° ® x1 + 4 x2 − x4 + x5 = 2 ® x1 + 4 x 2 − x 4 + x 5 = 2 ° x ,x ,x ,x ,x ≥ 0 ° x ,x ,x ,x ,x ≥ 0 ¯ 1 2 3 4 5 ¯ 1 2 3 4 5 Aplicând Metoda celor două faze vom obţine succesiv tabele: cB 0 1
xB x3 x5
xB 10 2 2
cB 0 0
xB x3 x2
xB 19/2 1/2 0
0 x1 3 1 1 0 x1 11/4 1/4 0
0 x2 1 4 4 0 x2 0 1 0
37
0 x3 1 0 0 0 x3 1 0 0
0 x4 0 -1 -1 0 x4 1/4 -1/4 0
1 x5 0 1 0 1 x5 -1/4 1/4 -1
Programare liniară
Am obţinut optimul egal cu 0 în soluţia de bază (x3,x2) care va fi soluţia iniţială pentru algoritmul simplex aplicat problemei iniţiale în a doua fază. Eliminăm din tabel coloana lui x5, înlocuim valorile coeficienţilor funcţiei obiectiv şi deci şi valoarea acesteia, valorile z Bj − c j şi rezolvăm problema în continuare, plecând de la baza primal admisibilă determinată, cu algoritmul simplex primal, obţinând tabelele de mai jos: cB 0 3
xB x3 x2
xB 19/2 1/2 3/2
cB 0 2
xB x3 x1
xB 4 2 4
cB 0 2
xB x4 x1
xB 4/3 10/3 20/3
cB 0 3
xB x4 x2
xB 38 10 30
2 x1 11/4 1/4 -5/4 2 x1 0 1 0 2 x1 0 1 0 2 x1 11 3 7
3 x2 0 1 0 3 x2 -11 4 5 3 x2 -11/3 1/3 -7/3 3 x2 0 1 0
0 x3 1 0 0 0 x3 1 0 0 0 x3 1/3 1/3 2/3 0 x3 4 1 3
0 x4 1/4 -1/4 -3/4 0 x4 3 -1 -2 0 x4 1 0 0 0 x4 1 0 0
Soluţia optimă a primei probleme este deci x1 = 0 şi x2 = 10 care dă un maxim al funcţiei egal cu 30. Aplicând Metoda coeficienţilor de penalizare vom obţine succesiv următoarele tabele: cB 0 -M
xB x3 x5
xB 10 2 -2M
cB 0 3
xB x3 x2
xB 19/2 1/2 3/2
cB 0 2
xB x3 x1
xB 4 2 4
cB 0 2
xB x4 x1
xB 4/3 10/3 20/3
cB 0 3
xB x4 x2
xB 38 10 30
2 x1 3 1 -M -M-2 2 x1 11/4 1/4 -5/4 2 x1 0 1 0 2 x1 0 10/3 0 2 x1 11 3 7
3 x2 1 4 -4M -4M-3 3 x2 0 1 0 3 x2 -11 4 5 3 x2 -11/3 1 -7/3 3 x2 0 1 0
38
0 x3 1 0 0 0 0 x3 1 0 0 0 x3 1 0 0 0 x3 1/3 1/3 2/3 0 x3 4 1 3
0 X4 0 -1 M M 0 x4 ¼ -1/4 -3/4 0 x4 3 -1 -2 0 x4 1 0 0 0 x4 1 0 0
-M x5 0 1 -M 0 -M x5 -1/4 1/4 M+3/4 -M x5 -3 1 2+M -M x5 -1 0 M -M x5 -1 0 M
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
2.3.4. Interpretarea a algoritmului simplex primal
Se consideră problema de optimizare a activităţii unei firme producătoare. Aceasta realizează n produse , cu un profit unitar cj , j = 1, n . Firma utilizează mai multe resurse prime
Ri , i = 1, m , disponibile în cantităţile limitate bi. Consumurile specifice de resurse pentru fiecare produs sunt aij , i = 1, m , j = 1, n . Obiectivul firmei este obţinerea unui profit total maxim, cu restricţiile ce provin din consumul integral al resurselor disponibile . Modelul de optimizare a activităţii firmei este reprezentat de problema de programare liniară în forma standard : (max) z = c T x ° ® Ax = b ° x≥0 ¯
(2.81)
în care xj , j = 1, n , este cantitatea din produsul j ce urmează a fi fabricată. Consumarea (utilizarea) integrală a resurselor nu este strictă, deoarece în lista operaţiilor productive se poate include un număr de operaţii fictive (corespunzătoare variabilelor ecart) ale căror valori să reprezinte cantitatea din resurse neconsumată. În soluţia de bază a algoritmului simplex numărul componentelor nenule nu depăşeşte numărul restricţiilor. De aceea, în orice soluţie optimă a problemei, numărul produselor ce urmează a fi fabricate nu depăşeşte numărul resurselor folosite . Coloanele a(j) din baza B ce corespund operaţiilor j le vom numi operaţii de bază, celelalte fiind operaţii secundare. Programul optim prevede obţinerea, numai prin operaţiile de bază, a produselor, astfel încât să fie consumate integral resursele disponibile. O posibilitate de a obţine un program mai bun constă în identificarea unor operaţii secundare care să înlocuiască o parte din operaţiile de bază curente. Pentru acesta este necesar un criteriu de comparare a operaţiilor secundare cu cele de bază . În ipoteza că baza B=[a(1), a(2), …..,a(m)], din relaţia (2.59)
yBj=B-1a(j) , j = 1, n
(2.82)
A(j)= ByBj , j = 1, n
(2.83)
deducem :
care se poate scrie B ( m) A( j ) = y1Bj A(1) + y 2Bj A( 2 ) + ... + y mj A
(2.84)
Relaţia de mai sus are următoarea semnificaţie din punct de vedere tehnico-economic, B fabricarea unei unităţi de produs j este echivalentă cu fabricarea cantităţilor y1B, j , y 2Bj ,..., y mj din produsele operaţiilor de bază. Ca urmare, pentru fabricarea unei unităţi din produsul j este B necesar a diminua producţia operaţiilor de bază cu cantităţile y1Bj , y 2Bj ,..., y mj .
39
Programare liniară
Aportul produsului j la creşterea profitului firmei poate fi comparat cu aportul valoric B al cantităţilor y1B, j , y 2Bj ,..., y mj . În consecinţă, dacă: B z Bj − c j = c1 y1Bj + c2 y 2Bj + ... + c m y mj −cj ≥0
(2.85)
fabricarea produsului j nu este rentabilă întrucât nu conduce la o majorarea valorii (profitului) producţiei curente. Dacă pentru toate operaţiile secundare avem
z Bj − c j ≥ 0 , j = 1, n
(2.86)
atunci programul de fabricaţie curent este optim. Acesta este, criteriul de optimalitate al algoritmului simplex. Dacă z Bj − c j < 0 , atunci activitatea secundară j conduce la o majorare a profitului realizabil prin programul curent, egală cu − ( z Bj − c j ) . Dintre operaţiile secundare j ∈ J rentabile în raport cu operaţiile de bază se va alege acea operaţie k care asigură cea mai mare viteză de creştere a valorii curente a producţiei ( interpretarea criteriului de intrare în bază). O altă problemă care se mai pune este stabilirea cantităţii din produsul j care se poate realiza în condiţiile date. Fabricarea unei cantităţi θ din acest produs implică diminuarea producţiei din produsele operaţiilor de bază astfel: B x1 = x1B − θy1Bk , x 2 = x 2B − θy 2Bk ,..., x m = x mB − θy mk
(2.87)
Evident, desfăşurarea unei activităţi la un nivel negativ este lipsită de sens economic. Astfel este necesar ca : xi = xiB − θyikB ≥ 0 , i = 1, m
(2.88)
de unde obţinem condiţia:
θ ≤ θ 0 = min
xiB
(2.89)
i yikB y B >0 ik
Presupunem că valoarea θ 0 se obţine pentru indicele 1. Atunci: xB xl = xlB − θ 0 ylkB = xlB − l ylkB = 0 ylkB
(2.90)
Ca urmare, operaţia l nu va mai fi folosită, iar în locul ei se va utiliza operaţia k, care asigură creşterea maximă a valorii curente a producţiei şi, implicit, maximizează profitului firmei. 40
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Aceasta este interpretarea a criteriului de ieşire din bază al algoritmului simplex. Cazul optimului infinit, ca soluţie a problemei de programare liniară, nu este semnificativ din punct de vedere economic. 2.4.
Dualitatea în programarea liniară
2.4.1. Problema duală. Fundamente teoretice.
Problema duală Dualitatea în programarea liniară ocupă un rol important atât din punct de vedere teoretic cât şi din punct de vedere practic. Pe teoremele de dualitatea se bazează mulţi algoritmi de rezolvare a problemelor de programare liniară. Fie problema de programare liniara dată sub forma generală numită problema primală : a11 x1 + a12 x 2 + a13 x3 ≥ b1 °a x + a x + a x = b 22 2 31 3 2 °° 21 1 ® a31 x1 + a32 x 2 + a33 x3 ≤ b3 ° x ≥ 0 ; x arbitrar ; x ≤ 0 2 3 ° 1 °¯ min c1 x1 + c2 x 2 + c3 x3
(
problema primală
(2.91)
)
Numim problemă duală a problemei de programare liniara următoarea problema de programare liniara:
(
)
max b ′u + b ′u + b ′u ° ′ 1 1′ 2 2 ′ 3 3 ° a11 u1 + a 21 u 2 + a31 u 3 ≤ c1 ° ′ ®a12 u1 + a 22′u 2 + a32′u 3 = c2 ° ′ ′ ′ ° a13 u1 + a 23 u 2 + a33 u 3 ≥ c3 °¯ u1 ≥ 0 ; u 2 arbitrar ; u 3 ≤ 0
problema duală
(2.92)
Observăm că duala problemei dualei este chiar problema primală. Datorită legăturii strânse ce se stabileşte între aceste probleme care sunt duale una celeilalte, vom spune ca problema (2.91) şi problema (2.92) formează un cuplu de probleme duale. Problema duală se obţine din problema primală folosind următoarele transformări : -
Termenii liberi din problema primală devin coeficienţi ai funcţiei obiectiv din problema duală. Coeficienţii funcţiei obiectiv din problema primală devin termeni liberi în problema duală. O problemă de maximizare primală devine problemă de minimizare duală. Matricea coeficienţilor din problema duală este transpusa matricei coeficienţilor din problema primală Variabilele duale corespunzătoare unor restricţii concordante din problema primală sunt nenegative, iar cele corespunzătoare unor restricţii primale neconcordante sunt nepozitive. Variabilele primale negative le corespund în problema duală restricţii concordante, iar variabilelor primale pozitive le corespund în problema duală restricţii neconcordante.
41
Programare liniară
- Variabilele duale corespunzătoare restricţiilor primale care sunt ecuaţii, pot fi de semn oarecare. - Variabilelor primale oarecare le corespund restricţii duale care sunt ecuaţii. Exemplul 2.7 Determinaţi duala problemei de programare liniară: f = max(2x1 – 5x2 + 4x3)
x1 − x2 + 4 x3 ≥ 7 ° x − 5x + 3x = 6 ° 2 1 3 ® x1 + 2 x3 ≤ 3 ° °¯− x3 + 2 x1 − 5x2 ≥ 8 x1 ≤ 0, x2 oarecare, x3 ≥ 0 Conform regulilor de mai sus vom avea: − duala este de minim deoarece primala este de maxim; − variabilele dualei vor fi: corespunzătoare restricţiei: x1 – x2 + 4x3 ≥ 7 u1 corespunzătoare restricţiei: x2 – 5x1 + 3x3 = 6 u2 u3 corespunzătoare restricţiei: x1 + 2x3 ≤ 3 corespunzătoare restricţiei: –x3 + 2x1 - 5x2 ≥ 8 u4 − funcţia obiectiv a dualei va fi produsul dintre termenii liberi ai restricţiilor primalei cu variabilele corespunzătoare din duală: g = 7u1 + 6u2 + 3u3 + 8u4 − duala va avea 3 restricţii, câte variabile are primala, ele obţinându-se astfel: Prima restricţie (asociată variabilei x1) - termenul stâng al restricţiei se obţine înmulţind coeficienţii variabilei x1 din cele 4 restricţii ale primalei cu variabilele corespunzătoare acestora din duală: u1 –5u2 + u3 + 2u4 - termenul liber al restricţiei va fi coeficientul lui x1 din funcţia obiectiv a primalei, adică b1 = c1 = 2 - deoarece variabila corespunzătoare acestei restricţii, x1, este negativă, restricţia va fi neconcordantă şi deoarece duala este problemă de minim rezultă că va fi cu ≤. În concluzie, prima restricţie va fi: u1 –5u2 + u3 + 2u4 ≤ 2 Analog se vor determina şi celelalte două restricţii: -u1 + u2 - 5u4 = -5 4u1 + 3u2 + 2u3 - u4 ≥ 4 − restricţiile de semn ale variabilelor dualei vor fi: u1 ≤ 0, deoarece restricţia corespunzătoare este neconcordantă; u2 oarecare, deoarece restricţia corespunzătoare este egalitate; u3 ≥ 0, deoarece restricţia corespunzătoare este concordantă; u4 ≤ 0, deoarece restricţia corespunzătoare este neconcordantă. În final, problema duală este: (min) 7u1 + 6u2 + 3u3 + 8u4 u1 − 5u 2 + u 3 + 2u 4 ≤ 4 ° ® − u1 + u 2 − 5u 4 = −5 °4u + 3u + 2u − u ≥ 4 2 3 4 ¯ 1
u1 ≤ 0, u2 oarecare, u3 ≥ 0, u4 ≥ 0 42
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Exemplul 2.8 Să se scrie duala problemei de programare liniară dată în formă canonică: max (3 x1 + 2 x 2 + 5 x3 + x 4 ) ° x − x + 3 x + x ≤ 15 2 3 4 °° 1 ®2 x1 − x3 − x 4 ≤ 5 ° x + 2 x − x ≤ 10 3 4 ° 2 ¯° x1 ,..., x 4 ≥ 0 Se construieşte tabelul cu datele problemei iniţiale: max min u1 u2 u3
3
2
5
1
1
-1
3 -1 2 x3
1
0 1 x2
2 0 x1
-1 -1 x4
15 5 10
Aşadar, problema duală este: min (15u1 + 5u 2 + 10u 3 ) °u + u ≥ 3 2 ° 1 °°− u1 + u 3 ≥ 2 ® °3u1 − u 2 + 2u 3 ≥ 5 °u1 − u 2 − u 3 ≥ 1 ° °¯u1 , u 2 , x3 ≥ 0
Fundamente teoretice Fără a restrânge din generalitate ne vom ocupa în continuare de cuplul de probleme duale (2.91) - (2.92), prima fiind considerată problema primală, iar cea de-a doua, problema duală. Se notează
{
}
P = x ∈ R n Ax = b, x ≥ 0
{
m
T
(2.93)
}
D = u ∈ R A u ≤ c, u ≥ 0
2.94)
Mulţimile soluţiilor admisibile (sau programelor) ale problemei primale (2.91), respectiv, duale (2.92). Teorema 2.8. Dacă x ∈ P şi u ∈ D , atunci c T x ≥ b T u . Teorema 2.9. Fie x * ∈ P , u * ∈ D şi c T x * ≥ b T u * . Atunci x* nu este soluţie optimă a problemei primale, iar u* este soluţie optimă a problemei duale Propoziţia 2.1. Dacă L este o matrice antisimetrică (LT = -L), atunci sistemul de inegalităţi liniare
43
Programare liniară
l ⋅ t ≥ 0 ® ¯t ≥ 0
(2.95)
are cel puţin o soluţie t astfel încât L ⋅t > 0
(2.96)
Teorema 2.10. (Teorema fundamentală a dualităţii) Fie cuplul de probleme duale (2.91) (2.92). Atunci una şi numai una din următoarele situaţii este posibilă : a) Ambele probleme au soluţii admisibile. În acest caz, ambele probleme au soluţii optime şi valori optime ale funcţiilor obiectiv sunt egale. b) Una din probleme are soluţii admisibile, iar cealaltă nu are (este incompatibilă). În acest caz, problema compatibilă are optim infinit. c) Nici una dintre probleme nu are soluţii admisibile. Teorema 2.11. (Teorema ecarturilor complementare). Fie cuplul de probleme duale canonice (2.91) - (2.92). Atunci x ∈ P şi u ∈ D sunt soluţii optime pentru cele două probleme dacă şi numai dacă:
( (
)
°u T A x − b = 0 ® T °¯u c − AT u = 0
(2.97)
)
Exemplul 2.9 Într-un atelier mecanic se produc două de tipuri de piese P1, P2. Timpii unitari de prelucrarea celor două piese pe cele două maşini unelte M1, M2, profitul unitar şi disponibilul de timp al maşinilor unelte sunt date în tabelul de mai jos:
M1 M2 Profit unitar
P1
P2
4 1 3um
3 2 7um
Disponibil resurse 16sp 6sp
Modelul matematic pentru problema dată este:
f = max(3 x1 + 7 x 2 ) °4 x + 3 x ≤ 16 ° 1 2 ® ° x1 + 2 x 2 ≤ 6 °¯ x1 , x 2 ≥ 0 Mulţimea soluţiilor admisibile ale problemei (primale) este reprezentată în fig. 2.6. *
*
Problema admite soluţia optimă x1 = 0 , x 2 = 3 , pentru fiecare funcţia obiectiv are valoarea f max = 21 .
44
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie x2
d1
C(0,3)
B(14/5,8/5) d2 0
A(4,0)
x1
Fig.2.6 Problema duală este:
g = min(16 u 1 + 6 u 2 ) °4u + u ≥ 3 ° 1 2 ® °3u 1 + 2u 2 ≥ 7 °¯u 1 , u 2 ≥ 0 Mulţimea soluţiilor admisibile ale problemei duale este reprezentată în fig.2.7. u2 d2 d1
0
A(0,3/4)
u1
B(0,7/2)
Fig.2.7 *
*
Problema admite soluţia optimă u 1 = 0 , u 2 = 7 / 2 .Valoarea funcţiei obiectiv este g min = 21 , evident aceeaşi ca şi în cazul problemei primale. Din cele arătate se constată că prin rezolvarea uneia dintre cele două probleme duale se poate determina şi soluţia celeilalte. Tabelul simplex final corespunzător uneia dintre probleme conţine componentele soluţiilor optime ale ambelor probleme. Aceste rezultate teoretice se utilizează în practica industrială în cazul când planul de producţie conţine o varietate mare de produse ce se fabrică în aceleaşi condiţii tehnico economice. 2.4.2. Algoritmul simplex dual
Fie problema de programare liniară în forma standard min c T x ° ® Ax = b °x ≥ 0 ¯ n unde x, c ∈ R , b ∈ R m , A ∈ M m×n , cu rang A = m < n.
45
(2.98)
Programare liniară
Duala acestei probleme este : max b T u °° ' ®A u ≤ c °u arbitrar °¯
(2.99)
Definiţia 2.9 O bază B formată cu m coloane liniar independente a lui A se numeşte dual admisibilă dacă sunt satisfăcute condiţiile z Bj − c j ≤ 0, j = 1, n
(2.100)
Propoziţia 2.2. Dacă B este o bază dual admisibilă, atunci u BT = c TB B −1
(2.101)
este o soluţie a problemei duale (2.98). Teorema 2.12. (Teorema de optimalitate). Fie B o bază dual admisibilă pentru problema
{
B
}
primală (2.98). Fie mulţimea I _ = i ∈ I x i < 0 I_=∅, atunci soluţia de bază asociată bazei B
B, x = B −1b , este o soluţie optimă a problemei (2.98). Teorema 2.13. (Teorema de incompatibilitate a problemei primale). Fie B o bază dual admisibilă pentru problema primală (2.92), iar I_≠∅, Deci există i ∈ I _ astfel încât y ijB ≥ 0, ∀j ∈ J , atunci problema (2.92) nu are soluţii. Teorema 2.14. (Teorema de îmbunătăţire a soluţiei) Fie B o bază dual admisibilă pentru problema primală (4.29), iar I_≠∅. Dacă pentru orice i ∈ I _ există j ∈ J astfel încât y ijB < 0 , şi dacă se alege l ∈ I _ arbitrar, iar k ∈ J astfel încât să fie satisfăcută condiţia :
° z Bj − c j ½° z kB − c k min ® ¾= B j y y lkB ° °¿ B lj ylj <0 ¯
(2.102)
atunci matricea B’ obţinută din B prin înlocuirea coloanei A(l) cu coloana A(k) este o bază dual admisibilă, iar programul dual asociat uB’ este cel puţin la fel de bun ca programul uB Algoritmul simplex dual Pentru problema primală de minimizare sau maximizare este: Pasul 1. Se determină o bază dual admisibilă iniţială B. B
B
Pasul 2. Se calculează x , z , y Bj , z Bj , − c j , j = 1, n .
46
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Pasul 3. Se determină mulţimea
{
B
}
I _ = i ∈ I xi < 0
Dacă I_≠∅, atunci STOP : x următor.
B
este program optim al problemei; astfel se trece la pasul
Pasul 4. Se determină indicele k ∈ I _ cu criteriul de ieşire din bază
{} B
B
min x i = x l i∈I _
Dacă y ijB ≥ 0, j = 1, n , atunci STOP : problema nu are soluţii; astfel se determină indicele k ∈ J cu criteriul de intrare în bază:
° z Bj − c j min ® B j ° y lj yljB <0 ¯
½° z B − c k k ¾= B y lk °¿
Pasul 5. Fie baza B’ obţinută din B prin înlocuirea coloanei A(l) cu coloana A(k). Se trece la Pasul 2, înlocuind peste tot baza B cu baza B’.
Algoritmul simplex dual poate fi exprimat sintetic sub forma schemei logice din fig.2.8 START
Construieste tabel simplex initial
Exista variabile de baza cu valori negative ?
Nu
Indica solutia optima
STOP
Da Determina linia pivotului
Exista valori negative in linia pivotului?
Nu
Da Determina coloana pivotului
Calculeaza un nou tabel simplex
Fig.2.8
47
Nu exista solutii
STOP
Programare liniară
Exemplul 2.10 Să se rezolve problema de programare liniară: max(− 3 x1 − 2 x 2 ) ° x − 2 x + 3x ≥ 4 ° 1 2 3 ® 2 + − x x x 2 3 ≥ 2 ° 1 °¯ x1 , x 2 , x3 ≥ 0
Se aduce problema la forma standard prin introducerea variabilelor de compensare x4, x5 şi se înmulţesc cu –1 cele două restricţii: max(− 3x1 − 2 x 2 ) °− x + 2 x − 3 x + x = −4 ° 1 2 3 4 ® °− 2 x1 − x 2 + x3 + x5 = −2 °¯ x1 ,..., x5 ≥ 0
Baza iniţială B este matricea unitate formată cu coloanele A(4), A(5) . Tabelul simplex asociat are ca variabile de bază pe x4 şi x5: -3 -2 cB 0 0
V.B. V.V.B. x1 x2 x4 -1 2 -4 x5 -2 -2 -1 3 2 0
0
0
x3 -1
x4 1
1 0
0 0
0 x5 0 1 0
Baza iniţială este dual admisibilă deoarece z Bj − c j ≥ 0 . Se poate aplica deci algoritmul simplex dual. Soluţia asociată bazei B admisibilă întrucât: x1 = x 2 = x 3 = 0 , x 4 = −4 , x 5 = −2 . Mulţimea I _ = {4,5} . Conform criteriului de ieşire din bază avem:
{}
min x i = min{− 4,−2} = −4 = x 4 ; se obţine l = 4 , deci din bază va ieşi vectorul A(4). B
B
i∈I _
Conform criteriului de intrare în bază avem: ° z Bj − c j min ® B j ° y4 j y4B j < 0 ¯
½° 3 0 ½ zB − c , =0= 3 B 3 ; ¾ = min ® ¾ y43 °¿ y4B jj<0 ¯ − 1 − 1 ¿
se obţine k = 3, deci în bază va intra vectorul corespunzător variabilei x3. Noul tabel simplex este: -3 -2 cB 0 0
V.B. V.V.B. x1 x2 x4 1 -2 4 x5 -6 -3 1 3 2 0
48
0
0
x3
x4
0 x5
1
-1 1
0 1
0
0
0 0
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Soluţia nu este optimă întrucât x 5 = −6 . Din bază va ieşi vectorul corespunzător variabilei x3=5 şi va intra vectorul corespunzător variabilei x1. Se obţine tabelul simplex : -3 -2 cB
0
0
0 x5
V.B. V.V.B. x1 x2 x3 x4 x4 0 -5/3 1 -2/3 1/3 2 x 1 -1/3 0 -1/3 -1/3 -3 5 2 1 0 1 0 0 3
0
2.4.3 Interpretarea economică a dualităţii
Introducerea dualităţii este motivată din mai multe puncte de vedere: Teoretic. Una din problemele centrale ale programării matematice este caracterizarea situaţiilor în care există optimul unei probleme şi găsirea unor metode prin care să recunoaştem optimalitatea unei soluţii. Teorema fundamentală a dualităţii şi teorema ecarturilor complementare reprezintă rezultate chiar în acest sens, în care se foloseşte dualitatea. Practic. Putem rezolva o problemă rezolvând problema duală a acesteia sau cunoscând soluţia dualei. În unele cazuri, rezolvarea dualei este mult mai uşoară decât rezolvarea primalei, de exemplu când numărul de restricţii al primalei este mai mare decât numărul de variabile al acesteia sau când primala necesită mai multe variabile suplimentare decât duala. Economic. În cele mai multe probleme economice, a căror rezolvare se face printr-un model de programare liniară, soluţia dualei aduce o serie de informaţii suplimentare despre problema studiată. Semnificaţia economică a soluţiei dualei depinde de specificul problemei şi trebuie găsită de la caz la caz. Având în vedere că max[f(x)] = min [g(u)], rezultă că, dacă, cantitatea disponibilă din resursa Ri creşte cu o unitate, atunci valoarea funcţiei obiectiv creşte cu ui, deci ui măsoară creşterea valorii funcţiei obiectiv determinată de creşterea cu o unitate a cantităţii disponibile bi. Aceste evaluări obţinute dintr-un program optim au fost denumite în literatura de specialitate "preţuri umbră"(„shadow price”). Preţul umbră ui arată cu cât se modifică funcţia obiectiv a problemei duale, atunci când termenul liber al restricţiei Ri se "relaxează" cu o unitate. A "relaxa" are semnificaţia de a spori cantitatea disponibilă bi a unei resurse deficitare sau, pentru restricţiile de tip calitativ cu n
limită inferioară impusă ( ¦ a ij x j ≥ bi), de a reduce nivelul termenului liber bi. j=1
Este evident că, dacă o resursă nu este utilizată în întregime pentru satisfacerea n
programului optimal xB ( ¦ a ij x j < bi), atunci ui = 0 iar funcţia obiectiv nu este afectată de j=1
sporire a cantităţii disponibile bi. Preţurile umbră (preţuri duale) aduc informaţii suplimentare pentru analiza eficienţei economice a resurselor şi a diferiţilor indicatori economici sau tehnici care apar în restricţiile unei probleme de programare liniară. Pe baza lor se pot fundamenta deciziile privind alocarea judicioasă a resurselor, se pot stabili măsuri de stimulare a consumului raţional al resurselor, se determină cât mai corect nivelul minim şi maxim al diferiţilor indicatori tehnici şi economici de care depinde structura planului optim. 49
Programare liniară
Soluţia optimă obţinută prin utilizarea datelor iniţiale poate constitui un punct de plecare pentru analiza economică privind alocarea eficientă a resurselor. Pentru problemele în care se cere maximizarea funcţiei f(x), indicatorii zj reprezintă costul unitar de fabricaţie al produsului j, rezultat din evaluarea coeficienţilor aij prin preţurile umbră ataşate restricţii1or. Rezultă că, prin calcularea diferenţei zj-cj, se compară acest cost unitar cu coeficientul cj (preţ unitar, beneficiu unitar etc.) din funcţia obiectiv. Dacă există diferenţe negative (zj-cj < 0) înseamnă că, la activităţile respective, preţul umbră al produsului j (costul unitar de fabricaţie exprimat în indicatori ui) este mai mic decât venitul realizat şi de aceea activitatea aj este eficientă. Aşa se explică faptul că va intra în bază vectorul a(k) ce corespunde diferenţei (zj-cj) minime. În momentul în care toate diferenţele sunt pozitive (zj-cj ≥ 0) rezultă că nu mai există activităţi eficiente şi prin urmare soluţia de bază analizată este optimă. În cazul problemelor de minim, indicatorii zj se pot interpreta ca venituri, exprimate în preţurile umbră ale restricţiilor, ce se obţin prin realizarea unei unităţi din produsul j. Prin urmare, dacă există diferenţe pozitive (zj-cj > 0), activităţile aj corespunzătoare sunt eficiente, deoarece se realizează un venit unitar mai mare decât costul unitar de fabricaţie (zj > cj). De aceea, va intra în bază activitatea ak, corespunzătoare diferenţei maxime, iar soluţia de bază se consideră optimă atunci când toate diferenţele (zj-cj) sunt nepozitive . Exemplul 2.11 O firmă fabrică trei tipuri de produse P1, P2, P3, utilizând patru tipuri de resurse R1, R2, R3, R4. Procesul tehnologic de realizare a celor trei produse, timpul disponibil al fiecărei resurse, cererea minimă şi maximă din fiecare produs conform studiului de marketing, precum şi profitul unitar sunt date în tabelul 2.5.
Tabelul 2.5 Produs
Cerere
min
max
P1 20 200 P2 0 100 P3 70 180 Timp disponibil pe resursă
Timp de prelucrare pe unitatea de produs SN 400
FU32
RU320
R4
Profitul unitar um/buc
Banc de control
0.10 0.12 0.15 36
0.06 0.05 0.09 30
0.18 0 0.07 37
0.13 0.10 0.08 38
10 12 15 -
R1
R2
R3
Să se determine programul de producţie astfel încât să se asigure satisfacerea cererii cu un profit total maxim. Notă m cu x1, x2 x3 variabilele de decizie ce reprezintă cantităţile din produsele P1, P2 respectiv P3 ce trebuie fabricate astfel încât să se atingă obiectivul propus. Modelul matematic liniar al problemei cuprinde restricţiile problemei, ce provin din limitarea disponibilităţii resurselor şi a cererii produselor pe piaţă, funcţia obiectiv ce maximizează profitul total şi condiţiile de nenegativitate care sunt evidente din punct de vedere economic. Modelul matematic al problemei este următorul:
50
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
f = max(10 x1 + 12 x 2 + 15 x3 ) ° 0.1x + 0.12 x + 0.15 x ≤ 36 1 2 3 ° °0.06 x1 + 0.05 x 2 + 0.09 x3 ≤ 30 ° 0.18 x1 + 0.07 x 2 ≤ 37 ° ° ® 0.13 x1 + 0.1x 2 + 0.08 x3 ≤ 38 ° 20 ≤ x1 ≤ 200 ° 0 ≤ x 2 ≤ 100 ° ° 70 ≤ x3 ≤ 180 ° x1 , x 2 , x 3 ≥ 0 ¯° Programul de producţie este dat de variabilele de decizie şi este următorul: x1 = 135 ° x 2 = 100 ° ® x3 = 70 ° °¯ F .O. = 3.600u.m Din produsul P1 se produc 135 unităţi, din produsul P2 se produc 100 unităţi, din produsul P3 se produc 70 unităţi. În aceste condiţii valoarea funcţiei obiectiv este de 3.600 unităţi monetare. Variabilele de compensare (ecart) arată utilizarea resurselor astfel: Y1 = 100 - preţ umbră • x4 = 0, 0.1 ⋅ 135 + 0.12 ⋅ 100 + 0.15 ⋅ 70 = 36 = 36 Prima restricţie este satisfăcută cu semnul „=” ceea ce înseamnă că resursa R1 este utilizată în totalitate, deci R2 este o resursă rară – resursă a cărei lipsă / indisponibil ar limita sau modifica. În acelaşi timp dacă în prima restricţie mărim timpul disponibil cu o unitate (din 36u.t. la 37u.t.), valoarea F.O. se modifică în sens pozitiv tocmai cu valoarea preţului umbră, deci profitul va fi de 3.700 u.m. Y2 = 0 - preţ umbră • x5 = 10.6 0.06 ⋅ 135 + 0.05 ⋅ 100 + 0.09 ⋅ 70 = 19.4 < 30 cu 10.6 u.t. A doua restricţie este satisfăcută cu semnul „<”, deci din resursa R2 rămâne un timp disponibil de 10.6 u.t. care nu este utilizat în procesul de producţie, astfel resursa R2 nu este o resursă rară însă lipsa ei poate limita producţia, preţul ei umbră fiind nul. Y3 = 0 - preţ umbră • x6 = 5.7 0.18 ⋅ 135 + 0.07 ⋅ 100 = 31.3 < 37 cu 5.7 u.t. A treia restricţie este satisfăcută cu semnul „<”, deci din resursa R3 rămâne un timp disponibil de 5.7 u.t. care nu este utilizat în procesul de producţie, astfel resursa R3 nu este o resursă rară însă lipsa ei poate limita producţia, preţul ei umbră fiind nul. Y4 = 0 - preţ umbră • x7 = 4.85 0.13 ⋅ 135 + 0.1 ⋅ 100 + 0.08 ⋅ 70 = 33.15 < 38 cu 4.85 u.t. A patra restricţie este satisfăcută cu semnul „<”, deci din resursa R4 rămâne un timp disponibil de 4.85 u.t. care nu este utilizat în procesul de producţie, astfel resursa R4 nu este o resursă rară însă lipsa ei poate limita producţia, preţul ei umbră fiind nul. Y5 = 0 - preţ umbră • x8 = 65 1 ⋅ 135 = 135 < 200 cu 65 unităţi de produs P1.
51
Programare liniară
Restricţia cinci este satisfăcută cu semnul „<”, deci din produsul P1 rămân nevândute o cantitate de 65 unităţi de produs (u.p), astfel P1 nu este o resursă rară deci are preţul umbră nul. Y6 = 0 - preţ umbră • x9 = 115 1 ⋅ 135 = 135 > 20 cu 115 unităţi de produs P1. Restricţia şase este satisfăcută cu semnul „>”, deci produsul P1 are o cerere maximă de 115 u.p., astfel P1 nu este o resursă rară deci are preţul umbră nul. • x10 = 0 Y7 = 0 - preţ umbră 1 ⋅ 100 = 100 = 100 Restricţia şapte este satisfăcută cu semnul „=” ceea ce arată că produsul P2 este vândut în totalitate – deci este o resursa rară, deci preţul umbră ar trebui să fie nenul. El totuşi este nul, lucru uşor de explicat din teorema ecarturilor complementare: condiţia necesară şi suficientă ca două soluţii admisibile X,Y să fie soluţii optime respectiv la problema primală şi duală este să fie simultan satisfăcute relaţiile: Y T ( P0 − AX ) = 0 ® T ¯ (Y A − C ) X = 0 Pentru ca un produs să fie zero este necesar ca un termen sa fie zero sau ambii egali cu zero. Prin creşterea cu o unitate a restricţiei în loc de 100 să avem 101 valoarea funcţiei obiectiv rămâne aceeaşi F.O.=3.600u.m. Y8 = 0 - preţ umbră • x11 = 110 1 ⋅ 70 = 70 < 180 cu 110 unităţi de produs P3 Restricţia opt este satisfăcută cu semnul „<”, deci din produsul P3 rămân nevândute o cantitate de 110 unităţi de produs (u.p), astfel P3 nu este o resursă rară deci are preţul umbră nul. Y9 = 0 - preţ umbră • x12 = 0 1 ⋅ 70 = 70 = 70 Restricţia şapte este satisfăcută cu semnul „=” ceea ce arată că produsul P3 este vândut în totalitate şi cererea maximă este corectă – deci este o resursa rară, deci preţul umbră ar trebui să fie nenul. El totuşi este nul, lucru uşor de explicat din teorema ecarturilor complementare. Prin creşterea cu o unitate a restricţiei în loc de 70 să avem 71 valoarea funcţiei obiectiv rămâne aceeaşi F.O.=3.600u.m. În concluzie acelaşi plan de producţie se putea face, cu acelaşi profit şi dacă restricţiile problemei erau următoarele: f = max(10 x1 + 12 x 2 + 15 x3 ) ° 0.1x + 0.12 x + 0.15 x ≤ 36 1 2 3 ° °0.06 x1 + 0.05 x 2 + 0.09 x3 ≤ 19.4 ° 0.18 x1 + 0.07 x 2 ≤ 31.3 ° ° ® 0.13 x1 + 0.1x 2 + 0.08 x3 ≤ 33.15 ° 115 ≤ x1 ≤ 135 ° 0 ≤ x 2 ≤ 100 ° ° 65 ≤ x3 ≤ 70 ° °¯ x1 , x 2 , x 3 ≥ 0
52
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
CAPITOLUL 3 PROGRAMAREA LINIARĂ DE TIP TRANSPORT 3.1.
Formularea unei probleme de transport
Se consideră că un produs este disponibil în m centre producătoare (fabrici, depozite) notate cu Pi (i = 1,…m ). Acest produs trebuie transportat la n centre consumatoare (de desfacere, destinatari), notaţi cu C j
(
j = 1, … m ) .
Transportul se poate efectua de la orice Pi la orice C j
(
j = 1, … m ) , iar costul unitar
de transport este ci j . Acest cost depinde de distantele respective, de mijloacele de transport folosite şi altele, ceea ce se presupune cunoscut. Se cunosc de asemenea şi cantităţile disponibile, aflate în cele m centre producătoare, notate cu a i cu (i = 1, … m ) şi cantităţile necesare în cele n centre consumatoare, notate b j cu
( j = 1,… n ) .
Se notează cu xi j , cantitatea transportată în condiţiile de mai sus iar datele problemei de transport sunt sintetizate conform tabelului 3.1 ce este prezentat mai jos: Tabelul 3.1 Pi
Cj P1
P2 Pi Pm bj
C2
Cj
Cn
c11
c12
c1 j
c1n
a1
c21 ci1
c22 ci 2
c2 j c2 n cij cin
a2 ai
cm1 cm 2 cmj cmn b1 b2 b j bn
am
C1
ai
Caracteristicile unei probleme de transport clasice sunt: - fiecare centru producător aprovizionează cel puţin un centru consumator şi fiecare centru consumator este aprovizionată de la cel puţin un centru producător; - pot exista perechi producător - consumator între care nu se poate face transfer; - nu există limitări în ceea ce priveşte cantitatea transportată pe fiecare rută; - fiecărei rute i s-a asociat un cost care nu depinde de sensul de parcurgere. Obiectivul problemei de transport este găsirea cantităţilor care trebuie transportate pe fiecare rută astfel încât să se asigure necesarul fiecărui centru consumator, în limitele cantităţilor aflate în centru producător, şi aceasta cu costuri minime. Teorema 3.1 : O problemă de transport echilibrată admite întotdeauna programe (soluţii); orice program este mărginit dacă valorile sale a i , b j sunt mărginite (finite ). Numim model matematic echilibrat, dacă cantitatea disponibila totală este egală cu cererea totală. Modelul matematic de mai sus se poate înlocui cu un model echivalent în care toate restricţiile sunt ecuaţii.
In forma sa matematică modelul problemei de transport se poate scrie ca în relaţia 3.1.
53
Programare liniară de tip transport
· § m n −1 ¨ ¦¦ ci j xi j ¸ min ° ¸ ¨ ° ¹ © i =1 j =1 _____ ° n −1 °° ¦ xi j ≤ a i , i ∈ 1, m ® m j =1 _______ ° xi j ≥ b j , j ∈ 1, n − 1 ¦ ° i =1 ° m, n −1 °¦ a i > ¦ b j , a i ≥ 0 , b j ≥ 0 °¯ i =1 j =1
(3.1)
Astfel în urma acestor transformări se va obţine următorul model matematic echilibrat (3.2): § m n −1 · ° min¨¨ ¦¦ ci j xi j ¸¸ ° © i =1 j =1 ¹ _____ ° n −1 ° ¦ xi j = a i , i ∈ 1, m ® j =1 °m _______ °¦ xi j = b j , j ∈ 1, n − 1 ° i =1 °¯ xi j ≥ 0
(3.2)
Orice problemă poate fi transformată într-o problemă de tipul (3.2). Acest caz este foarte rar în practică, însă el este cel mai simplu din punct de vedere matematic şi astfel va fi ales pentru formalizarea problemei. O astfel de problemă se numeşte problemă de transport echilibrată. In practică pot exista următoarele cazuri: -
m
n
i =1
j =1
Dacă ¦ ai < ¦ b j , se poate adăuga un depozit fictiv Pm+1 care are un disponibil a m +1 , astfel încât costurile de transport de la depozitul Pm+1 la centrele C j sunt nule.
-
m
n
i =1
j =1
Daca ¦ ai > ¦ b j , se poate adăuga un centru fictiv C n +1 ce necesita bn +1 unităţi,
astfel încât costurile să fie nule. Numărul total de restricţii este de m+n şi sunt o combinaţie liniară de celelalte, deci numărul celor independente este de m+n-1. Orice problema de transport admite soluţii admisibile, adică sistemul de ecuaţii este compatibil. O astfel de problema are soluţia următoare : xi j =
ai b j
(3.3)
n
¦a
i
i =1
Aplicarea algoritmului simplex este dificilă în acest caz datorită numărului foarte mare de necunoscute şi a determinării soluţie admisibile de bază. Într-o problemă de transport nu poate apărea decât varianta de optim finit, existând întotdeauna soluţii admisibile, iar minimul –∞ nu este posibil, ţinând cont că avem de minimizat o funcţie liniară cu toţi coeficienţii pozitivi pe o mulţime de soluţii cu toate componentele pozitive. 54
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Algoritmul specific problemelor de transport au următoarele etape: 1. Se determină o soluţie admisibila de baza de pornire X, prin folosirea uneia din următoarele metode : coltului N-V, metoda costului minimal, metoda costului minim pe linie, metoda costului minim pe coloană. 2. Determinarea soluţiei optime pornind de la soluţia X. 3.2.
Exemple de probleme de tip transport
Probleme de transport cu capacităţi limitate
Se consideră o problemă de tip transport în care există limitări ale capacităţilor de transport pe anumite rute. Se notează cu α ij > 0 capacitatea maximă ce poate fi transportată pe ruta de la centru producător i la centrul consumator j. Modelul matematic al acestei probleme, cu păstrarea semnificaţiilor notaţiilor cunoscute, este următoarea: m n min( ¦ ¦ cij xij ) ° i =1 j =1 ° ° n x = a , i = 1, m ij i ° j¦ ® =1 °m ° ¦ xij = b j , j = 1, n °i =1 °0 ≤ xij ≤ α ij , i = 1, m, j = 1, n ¯
(3.4)
Condiţiile necesare şi suficiente de existenţa a soluţiilor pentru problema (3.4) sunt: n m °¦ ai = ¦ b j j =1 ° i =1 n °° ®¦ α ij ≥ ai , i = 1, m ° j =1 ° n °¦ α ij ≥ b j , j = 1, n °¯ j =1
(3.5)
Acestei probleme i se poate asocia un tabel de forma celui de la problema de transport, în care se specifică şi capacităţile maxime de transport α ij , i = 1, m, j = 1, n . Tabelul 3.2 Pi / Cj
Cl
P1
c1l α1l x1l ... cil αil xil ... cml αml xml
... Pi ... Pm bj
bl
...
Cj
...
... c1j ... α1j x1j ... ... ... ... cij αij xij ... ... ... ... cmj ... αmj xmj ... ... bj
55
Cn c1n α1n x1n ... cin αin xin ... cmn αmn xmn bn
ai al ... ai ... am
Programare liniară de tip transport
Probleme de transport cu centre intermediare
În practica industrială există cazuri în care transportul direct de la un centru producător la un centru consumator nu este economic. Ca urmare, el poate trece prin mai multe centre intermediare, de tranzit, o astfel de problemă numindu-se problemă de transport cu centre intermediare sau problemă de transfer. Se consideră p centre intermediare şi se notează cu β k , k = 1, p , capacităţile acestora. Modelul matematic al acestei probleme are forma: p n m p ' ' '' '' + min( c x ∑ ∑ ∑ ∑ c kj x kj ) ik ik i =1 k =1 k =1 j =1 p xik' = ai , i = 1, m k∑ =1 m ∑ x ' = β , k = 1, p k ik i =1 n '' ∑ x kj = β k , k = 1, p j =1 n '' x kj = b j , j = 1, n k∑ =1 xik' , x kj'' ≥ 0, i = 1, m, k = 1, p, j = 1, n
(3.6)
unde: xik' - reprezintă cantitatea ce urmează a fi transportată de la centrul producător i la centrul intermediar k ; cik' - costul unitar de transport dintre centrele i şi k ; x kj'' - cantitatea ce urmează a fi transportată de la centrul k la centrul consumator j ; c kj'' - costul unitar de transport dintre centrele k şi j. Condiţia necesară şi suficientă de existenţă a soluţiilor pentru problema (3.6) este: p
m
¦a = ¦β i
i =1
k =1
n
k
= ¦bj
(3.7)
j =1
Având în vedere faptul că fiecare intermediar este atât centru destinaţie cât şi centru sursă, se pot considera următoarele două probleme de transport: m p ' ' ¦ cik xik ) °min(i¦ =1 k =1 ° p ° ¦ x ' = a , i = 1, m ° ik i ®k =1 °m ' ° ¦ xik = β k , k = 1, p ° i =1 °¯ xik' ≥ 0, i = 1, m, k = 1, p
(3.8)
56
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
şi p n '' '' min( ¦ ¦ c kj x kj ) ° k =1 j =1 ° ° n x '' = β , k = 1, p kj k ° j¦ ® =1 ° p '' ° ¦ x kj = b j , j = 1, n ° k =1 ° x kj'' ≥ 0, k = 1, p, j = 1, n ¯
(3.9)
( ) ( ) '
''
Se poate arăta că x ik şi x kj reprezintă o soluţie optimă a problemei de transport cu
( ) este o soluţie optimă a problemei de '
centre intermediare (3.6) dacă şi numai dacă x ik
( ) ''
transport (3.8), iar x kj este o soluţie a problemei de transport (3.9). În consecinţă, rezolvarea problemei (3.6) este echivalentă cu rezolvarea celor două probleme (3.8) şi (3.9).
Probleme de repartiţie Într-un atelier mecanic există m utilaje, care au disponibilul de timp a i , i = 1, m . Pe acestea se vor prelucra n tipuri de piese, în cantităţile b j , i = 1, n . Se cunosc randamentul orar, rij , şi cheltuielile de producţie, cij , la utilajul i ale piesei j. Se pune problema de a determina o repartiţie a sarcinilor, respectiv a timpului în care utilajul i prelucrează piesele de tip j astfel încât cheltuielile totale de producţie sa fie minime. Se notează cu xij numărul de ore în care utilajul i prelucrează piesele de tip j. Modelul matematic al problemei este de forma (3.10): m n min( ∑ ∑ cij xij ) i =1 j =1 n x ≤ a , i = 1, m i ij j∑ =1 m ∑ rij xij = b j , j = 1, n i =1 xij ≥ 0, i = 1, m, j = 1, n
3.3.
(3.10)
Determinarea unei soluţii de baza iniţiale a problemei de transport.
Soluţia admisibile de baza iniţiale, care are cel mult (m+n-1) componente nenule, este o soluţie nedegenerată. Dacă numărul soluţiilor este mai mic decât (m+n-1) soluţia este degenerată.
Metoda colţului Nord-Vest (NV) Această metodă se mai numeşte Metoda diagonalei principale sau Metoda lui Dantzing. Metodă nu ţine cont de costurile de transport cij şi numai de cantităţile disponibile în centrele producătoare şi cererea centrelor consumatoare. 57
Programare liniară de tip transport
Etapele metodei: Se alege x11 = min (a1b1 ) ( (1,1) fiind colţul stânga sus – NV). Sunt posibile următoarele cazuri: 1) min(a1 , b1 ) = a1 x11 = a1 , iar x1 j = 0, j = 1, n . Necesarul centrului C1 devine b1 − a1 . •
2) min(a1 , b1 ) = b1 x11 = b1 , iar xi1 = 0, i = 1, m . Disponibilul centrului P1 devine a1 − b1 . 3) a1 = b1 x11 = a1 = b1 , iar x1 j = 0, j = 1, n şi xi1 = 0, i = 1, m . • Se elimină de sus în jos sau de la stânga la dreapta prima linie respectiv prima coloană din tabel. Următoarele componente strict pozitive ale soluţiei de bază iniţiale se determină în mod analog, considerând colţul NV rămas după eliminarea anterioară.
Exemplul 3.1 : Pentru problema de transport ale cărei date sunt centralizate în tabelul 3.3 să se determine soluţia de bază iniţială utilizând metoda lui Dantzing.
Q1
Q2
P1
7
8
P2
2
4
P3
6
3
5
9
Tabelul 3.3 Q3 Q4 5 3 11 5 9 11 1 2 8 9 7 30
Notăm cu xij cantităţile ce urmează a fi transportate în condiţiile indicate în tabelul iniţial. Pasul 1 Problema dată poate fi scrisă ca în tabelul 3.4. min(a1 , b1 ) = b1 x11 = min(11,5) = 5 , iar xi1 = 0, i = 1, m şi a1' = a1 − b1 = 11 − 5 = 6 (tab.3.5) x11
x12
x13
x14
11
5
x12
x13
x14
6
x 21 x 31
x 22 x32
x 23 x33
x 24 x 34
11 8
0 0
x 22 x 32
x 23 x33
x 24 x 34
11 8
0
9
5
9 9 tabelul 3.4
7
min(a1 , b2 ) = a1
Pasul 2 Calculăm:
9 7 tabelul 3.5
x12 = min(6 ,9 ) = 6 , iar
x1 j = 0, i = 1, m
x 22 = min(11,3) = 3 , iar
xi 2 = 0, i = 1, m şi
şi
b2' = b2 − a1 = 9 − 6 = 3 (tab.3.6) Pasul 3 Calculăm: min(a 2 , b2 ) = b2 a 2'
= a 2 − b2 = 11 − 3 = 8 (tab.3.7)
5
6
0
0
0
5 6
0
0
0
0 0
x 22 x 32
x 23 x33
x 24 x 34
11 8
0 3 0 0
x 23 x33
x 24 x34
8 8
0
3
9
7
0 0
9
7
58
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
tabelul 3.6 Pasul 4 Calculăm: min(a 2 , b3 ) = a 2
x 23
tabelul 3.7 = min(8,9) = 8 , iar
x 2 j = 0, i = 1, m
şi
x33 = min(8,1) = 1 , iar
xi 3 = 0, i = 1, m
şi
b2'' = b3 − a 2 = 9 − 8 = 1 (tab.3.8) Pasul 3 Calculăm: a3'
min(a3 , b3 ) = b3
= a3 − b3 = 8 − 1 = 7 (tab.3.9) 5 6
0
0
0
5 6 0 0 0
0 3 0 0
8 x33
0 x34
0 8
0 3 8 0 0 0 0 1 7 0
0 0 1 7 tabelul 3.8
0 0 0 0 tabelul 3.9
Soluţia admisibila de baza X este data de tabelul 3.9 . Dacă notăm cu V(X) valoarea funcţiei de optimizat a problemei date, pentru soluţia admisibilă X, avem: V(X) = 7*6 + 8*6 + 3*4 + 8*5 + 1*1 + 7*2 =150
Metoda costului minimal Metodă ţine cont atât de costurile de transport cij cât şi de cantităţile disponibile în centrele producătoare şi cererea centrelor consumatoare. •
( )
Se alege clk = min cij . Se determină x lk = min(al , bk ) Sunt posibile următoarele cazuri:
1) min(al , bk ) = al x lk = al , iar xlj = 0, j = 1, n . Necesarul centrului Cj devine bk − al . 2) min(al , bk ) = bk x lk = bk , iar xik = 0, i = 1, m . Disponibilul centrului Pi devine al − bk . 3) al = bk x lk = al = bk , iar xlj = 0, j = 1, n şi xik = 0, i = 1, m . • Se elimină de sus în jos sau de la stânga la dreapta linia respectiv coloană din tabel. Se determină în mod analog, considerând variabila de cost minim din subtabelul rămas după eliminarea anterioară. Dacă sunt mai multe costuri minime egale, atunci se ia în considerare mai întâi variabile care ia valoare maximă. 3.4.
Metoda de determinare a soluţiei optime pentru probleme de transport. Metoda potenţialelor.
Generalităţi Rezolvarea problemei de transport prin metoda simplex este, în general, puţin eficientă. Câteva dintre motive sunt următoarele: - numărul mare de variabile, egal cu m, n - absenţa unei baze iniţiale. Varianta de rezolvare prin considerarea unor variabile auxiliare pentru fiecare linie şi coloană şi aplicarea metodei celor două faze este laborioasă; - apariţia frecventă a cazurilor de degenerare datorită numărului mare de elemente ale matricei coeficienţilor A egale cu 0 şi 1 . Metoda potenţialelor reprezintă o metodă specială de testare şi îmbunătăţire a soluţiei unei probleme de transport. 59
Programare liniară de tip transport
Procesul de îmbunătăţire a unei soluţii constă în a trece de la o soluţie la o alta mai bună. Pentru aceasta se recurge la problema duală a problemei de transport şi anume : n §m · ° max¨ ¦ ai u i + ¦ b j v j ¸ ¨ ¸ ° j =1 © i =1 ¹ ° ®u i + v j ≤ cij , i = 1, m, j = 1, n ° ui arbitrar , i = 1, m ° ° v j arbitrar , j = 1, n ¯
(3.11)
Conform teoremei ecarturilor complementare aplicată cuplului de probleme duale, rezultă că soluţia de bază x ij a problemei primale şi soluţia (u i , v j ) a problemei duale sunt optime dacă şi numai dacă satisfac condiţiile: (cij − u i − v j ) ⋅ x ij = 0, i = 1, m, j = 1, n )
(3.12)
Pentru ca relaţia de mai sus să fie satisfăcută este suficient ca (u i , v j ) să fie soluţii ale sistemului
ui + v j = cij , ∀(i, j ) ∈ J
(3.13)
în care s-a notat mulţimea de indici J = {(i, j ) xij este variabila de bază }.
Propoziţia 3.1 Sistemul de ecuaţii are o infinitate de soluţii. Dacă (ui0 , v 0j ) este o soluţie particulară şi k o constantă oarecare, atunci orice soluţie a sistemului este de forma: °u i = ui0 + k , i = 1, m (3.14) ® 0 °¯v j = v j − k , j = 1, n Pentru rezolvarea sistemului se poate fixa arbitrar una dintre necunoscute, fără a influenţa optimalitatea soluţie problemei de transport; de obicei se alege ui = 0 . Observaţie. Rezolvarea sistemului se poate efectua direct pe tabelul de rezolvare al problemei. Valorile variabilelor ui şi v j se înscriu la marginile tabelului ; din acest motiv ele se mai numesc şi valori marginale . Algoritmul metodei potenţialelor
Pasul 1. Se determină o soluţie de bază iniţială ( x ij ) . Pasul 2. Se calculează valorile variabilelor duale ui şi v j ca soluţii ale sistemului de ecuaţii u i + v j = cij , ∀(i, j ) ∈ J
Pasul 3. Se calculează valorile δ ij = ui + v j − cij , ∀(i, j ) ∉ J Dacă δ ij ≤ 0, ∀(i, j ) ∉ J , atunci STOP: soluţia ( x ij ) este optimă; în caz contrar se trece la pasul 4 60
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
Pasul 4. Se calculează cu criteriu de intrare în bază δ ij = max{δ ij ∀(i, j ) ∉ J } Variabila xlk ce va intra în bază . Se construieşte pentru căsuţa (l, k) un ciclu care porneşte din căsuţa (l, k), care trece numai prin căsuţe (i, j) ocupate cu valori x ij > 0 , cu treceri alternative pe linii şi coloane, şi care revine la căsuţa (l, k). Se adoptă un sens oarecare de parcurgere al acestui ciclu şi se numerotează căsuţele sale începând cu căsuţa (l, k). Pasul 5. Se calculează criteriul de ieşire din bază θ = x st = min{x ij (i, j ) este căsuţă de rang par în ciclu }şi se determină variabila x st va ieşi din bază.
Pasul 6. Se determină o nouă soluţie de bază admisibilă (~ xij ) cu ajutorul formulelor de schimbare a bazei x ij − θ , (i, j ) are rang par in ciclu ° ~ xij = ® x ij + θ , (i, j ) are rang impar in ciclu ° x ij , (i, j ) nu apartine ciclului ¯ Se revine la pasul 2 cu noua soluţie de bază obţinută.
Observaţii : 1) Soluţia iniţială de bază obţinută la pasul 1 al algoritmului depinde de metoda folosită pentru determinarea ei. Aceasta nu influenţează, soluţia optimă a problemei, ci eventual numărul de iteraţii pentru obţinerea soluţiei optime. 2) Alegerea sensului de parcurgere al ciclului în cadrul pasului 4 al algoritmului este arbitrară. 3) Tabelele ce se vor construi la aplicarea algoritmului vor fi formate din căsuţe (i, j) ce pot avea una din configuraţiile cij +(-)
cij xij
δ ij xij=0
Prima indică o căsuţă corespunzătoare unei valori de bază ( xij > 0 ), iar cea de-a doua o căsuţă corespunzătoare unei valori nebazice ( xij = 0 ) , pentru care se calculează valoarea
δ ij . Simbolurile + sau – apar dacă căsuţa face parte din ciclul construit la pasul 4 al algoritmului. Simbolul + indică o căsuţă de rang impar , iar simbolul – indică o căsuţă de rang par.
Exemplul 3.2 Fie date trei fabrici producătoare (P1, P2, P3) ale aceluiaşi produs, care trebuie să aprovizioneze cu acest produs patru consumatori (C1, C2, C3, C4). În tabelul 3.10 sunt date cantităţile disponibile în centrele producătoare (ai), cantităţile necesare în centrele consumatoare (bj) şi costurile pe unitatea de transport. Să se determine planul optim de transport în condiţiile costurilor minime. 61
Programare liniară de tip transport
Tabelul 3.10 Pi / Cj P1 P2 P3 bj
C1 8 4 3 15
C2 7 6 4 12
C3 3 7 2 14
C4 6 3 5 14
ai 19 20 16 55 3
Problema de transport este echilibrată deoarece
¦ ai = i =1
4
¦ b j = 55 ,
iar pentru
j =1
rezolvarea ei se va aplica metoda potenţialelor si pentru determinarea soluţiei de bază se va aplica metoda costului minim din tabel.
Iteraţia 1. Pasul 1. Prin metoda costului minimal se determină soluţia de bază iniţială iar calculele sunt prezentate în tabelul 3.11: Tabelul 3.11 7 6 2 15 13 7 0
12 0 0 12
0 0 14 14 0
0 14 0 14 0
19 20 16
12 6 2
0 0
Se obţine următoarea soluţie de bază iniţială : x11 = 7, x12 = 12, x 21 = 6, x 24 = 14, x 31 = 2, x 33 = 14. Valoarea funcţiei obiectiv corespunzătoare acestei soluţii iniţiale este : z = 8 ⋅ 7 + 7 ⋅ 12 + 4 ⋅ 6 + 3 ⋅ 14 + 2 ⋅ 14 = 240 . Soluţia de bază iniţială este înscrisă în tabelul 3.12 alături de costurile unitare de transport date iniţial: Tabelul 3.12 8
7 7
4
3 12
6
7
6 3
6 0
0 4
0 2
2
0
0 3 14 5
14
0
Pasul2. Se rezolvă sistemul: ui + v j = cij , (i, j ) ∈ J , unde J = {(1,1), (1,2), (2,1), (2,4), (3,1), (3,3)}, pornind de la u1 = 0 Tabelul 3.13 u1=0
v1=8 8
u2=-4
4
v2=7 7 7 6 6
u3=-5
3
4 2
v3=7 v4=7 3 4 6 1 12 0 0 -3 7 -4 3 0 0 14 -2 2 5 -3 0 14 0
Pasul 3. Valorile δ ij = ui + v j − cij , (i, j ) ∉ J sunt scrise în tabelul 3.13. Deoarece δ ij ≤ 0, ∀(i, j ) ∉ J rezultă că soluţia nu este optimă.
62
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie
{
}
Pasul 4. Se calculează δ lk = max δ ij / (∀)(i, j ) ∉ J = δ 13 = 4 variabila x13 va intra în bază Se construieşte ciclul : (1,3), (1,1), (3,1), (3,3), (1,3) care este indicat în tabelul 3.13. Pasul 5. Se determină θ = x st = min xij / (i, j )este casuta de ordin par = min{7,14} = x11 = 7 variabila x11 va
{
}
ieşi din bază. Pasul 6. Se modifică valorile căsuţelor din ciclul de mai sus: x13 = 0 + 7 = 7, x11 = 7 − 7 = 0, x 31 = 2 + 7 = 9, x 33 = 14 − 7 = 7 . Noua soluţie de bază admisibilă este înscrisă in tabelul 3.14 Tabelul 3.14 v1=4 v2=7 v3=3 v4=3 8 -4 7 3 6 -3 7 12 7 0 4 6 1 7 -4 3 6 0 0 14 3 4 2 2 5 -3 9 0 7 0
u1=0 u2=0 u3=-1
Valoarea funcţiei obiectiv devine : z = 7 ⋅ 12 + 3 ⋅ 7 + 4 ⋅ 6 + 3 ⋅ 14 + 3 ⋅ 9 + 2 ⋅ 7 = 212 Iteraţia a 2 Pasul 2. Se rezolvă ui + v j = cij , (i, j ) ∈ J , unde J = {(1,2), (1,3), (2,1), (2,4), (3,1), (3,3)}, iar soluţia este indicată în tabelul 3.14. Pasul 3. Se calculează valorile δ ij = ui + v j − cij , (i, j ) ∉ J Deoarece δ ij ≤ 0, ∀(i, j ) ∉ J , soluţia nu este optimă (tab.3.14).
Pasul 4. δ lk = δ 23 = 2 variabila x32 va intra în bază . Se construieşte ciclul (3,2), (3,3), (1,3), (1,2), (3,2) (tab.3.14) Pasul 5 . θ = min{7,12} = x 33 = 7 x33 va ieşi din bază . Pasul 6. Se modifică valorile căsuţelor din ciclul de mai sus : x 32 = 0 + 7 = 7, x 33 = 7 − 7 = 0, x13 = 7 + 7 = 14, x12 = 12 − 7 = 5 (tab.3.15) Valoarea funcţiei obiectiv devine : z = 7 ⋅ 5 + 3 ⋅ 14 + 4 ⋅ 6 + 3 ⋅ 14 + 3 ⋅ 9 + 4 ⋅ 7 = 198 Iteraţia 3 . Rezultatele sunt consemnate în tabelul 3.15, deoarece δ ij < 0, ∀(i, j ) ∉ J rezultă că soluţia este optimă . Tabelul 3.15 v1=6 v2=7 8 -2 7 0 5 4 6 -1 6 0 3 4 9 7
u1=0 u2=-2 u3=-3
v3=3 3 14 7 -6 0 2 -2 0
v4=5 6 -1 0 3 5
14 -3 0
S-a obţinut soluţia optimă a problemei de transport : *
*
*
*
*
x 12 = 5, x 13 = 14, x 24 = 14, x 31 = 9, x 32 = 7. Căreia îi corespunde costul total al transportului minim z*=198 63
Elemente de teoria grafurilor
CAPITOLUL 4 ELEMENTE DE TEORIA GRAFURILOR 4.1.
Fundamente în teoria grafurilor
Teoria grafurilor s-a constituit ca un capitol de sine stătător în cadrul cercetărilor operaţionale, datorită multiplelor avantaje pe care le oferă activităţii de planificare şi analiza tehnico - economică. Cu ajutorul grafurilor se surprind şi se analizează în detaliu legăturile dintre componentele sistemului tehnico - economic, iar elaborarea modelului este mult mai uşoară. 4.1.1. Noţiunea de graf Prin definiţie un graf este o pereche (X, U ) unde mulţimea X este numită mulţimea nodurilor (sau vârfurilor) iar mulţimea U este mulţimea muchiilor.
Notaţii utilizate : X = mulţime finită şi diferită de mulţimea vidă de orice natură. X = ®x1, x2, …..xn¾ - unde xi = elemente numite vârfuri sau noduri X poate fi infinită, dar numărabilă. U = submulţime nevidă a produsului cartezian X x X U= ®( xi,xj ) / ( xi,xj) ≠ ( xj , xi ) ¾ - unde ( xi , xj) = pereche ordonată de vârfuri numită arc. Arcul u este orientat de la nodul xi, numit extremitatea iniţială, la nodul xj, numit extremitatea finală. A ( xj , xj ) se numeşte buclă. G =( X ,U) = graf orientat (digraf) U = mulţime de de arce neorientate care reprezintă perechi ordonate de vârfuri din X U = ®( xi,xj ) / ( xi,xj)=( xj , xi ) ¾ - ( xi,xj) este un arc neorientat numit muchie G =( X , U ) = graf neorientat In practică un graf neorientat se poate înlocui cu un graf orientat astfel: fiecarei muchii ( xi,xj) ∈ U îi corespund două arce de semne contrare (x1 , x2) şi (x2 , x1). In cazul în care se asociază arcelor grafului o valoare sau o funcţie valoare v : U → R sau v : U → R unde v( xi,xj) ∈ R funcţia valoare ataşată arcelor. G ( X, U, v ) = se numeşte graf valuat ( evaluat, ponderat )
4.1.2. Orientare şi neorientare în graf Cazul grafurilor orientate Prin următorul exemplu vom pune în evidenţă un graf orientat: „În practica industrială pentru realizarea unei lucrări de investiţii sunt necesare o serie de activităţi distincte: alegerea amplasamentului, întocmirea proiectului, avizarea acestuia, aprobarea lui, contractarea utilajelor tehnologice, organizarea şantierului ş.a. Aceste activităţi sunt condiţionate între ele şi execuţia fiecărei activităţi nu poate fi începută înainte de terminarea altor activităţi. Există şi activităţi care se execută în paralel. Pentru realizarea modelului de graf corespunzător proiectului de investiţii se stabilesc condiţionările între activităţi. Nodul reprezintă momentul în care se termină o activitate şi începe o alta. 64