Sunteți pe pagina 1din 12

CURSUL 6

Aplicatii la tema 2
Problema comisvoiajorului
1. Agentia de turism HAI SA HAIDEM, in colaborare cu Primaria intentioneaza sa
organizeze pentru turistii straini sositi in Capitala un tur al orasului cu vizitarea a sase
obiective de interes turistic: muzee, cladiri istorice, biserici. Autocarul va pleca din fata
Primariei si se va intoarce tot acolo.Pozitiile relative ale Primariei locatia 0 si ale
celor sase obiective locatiile 1,,6 sunt date in figura 1. In tabelul 1 sunt date
distantele dintre locatiile 0,1,,6 masurate in linie dreapta in hectometri ( 1hm = 100m)
Latura patratului caroiajului masoara 10hm = 1km iar distantele reale nu difera
semnificativ de cele indicate. Din motive evidente (timp,cost) se doreste ca lungimea
totala a traseului sa fie cat mai mica.
i) Cate trasee distincte sunt posibile?
ii) Aplicati riguros euristica mergi la cel mai apropiat vecin pentru determinarea unui
traseu complet cu punctul de plecare in 0;
iii) Daca este cazul, aplicati riguros euristica ajustare locala selectand inteligent
perechile de arce care vor fi inlocuite. Se cer minimum doua ameliorari ale lungimii
traseului initial;
iv) Reluati euristica mergi la cel mai apropiat vecin plecand de asta data din nodul 3.
Atentie: nu uitati sa calculati lungimile traseelor generate!

0
1
4
2

1 2 3
0 14 30 42
1 22 28
30
2

3
4
5

4
45
32
41
14

Tabelul 1

6
Figura 1

5
60
51
67
42
28

6
58
45
36
20
32
58

Rezolvare
i) Exista

1
6! 320 trasee diferite.
2

ii) Traseul dat de euristica mergi la cel mai apropiat vecin


5

Euristica produce solutia unica:

01234560

Lungimea traseului:
2

3
14 + 22 + 30 + 14 + 28 + 58 + 58 = 224hm
= 22,4km
6
Figura 2

iii) Aplicam ajustarea locala ape arcele (1,2) si (6,0)


5

0
1

4
2

6
Figura 3a)

Figura 3b)

A rezultat traseul: 0 2 3 4 5 6 1 0 cu lungimea:


224-(22 + 58) + (30 + 45) = 219hm = 21,9km
Aplicam ajustarea locala pe arcele (2,3) si (6,1)

1
4

Figura 4a)

Figura 4b)

A rezultat traseul: 0 1 3 4 5 6 2 0 cu lungimea:


219 - (30 + 45) + (28 + 36) = 208hm = 20,8km
iv) Plecand din nodul 3 cu euristica mergi la cel mai apropiat vecin se obtine traseul din
figura 5 cu lungimea de 193hm = 19,3km care pare a fi cel mai scurt.

0
1
4
2

6
Figura 5

Problema postasului chinez


1. i) Pentru graful din figura 6 calculati gradele nodurilor si treceti-le in tabelul de mai
jos.
b

Figura 6
Nod
Grad

ii) Este posibil traversarea tuturor muchiilor grafului, fiecare o singur dat? Cum?
Rezolvare
i)
Nod
Grad

a
2

b
4

c
4

d
4

e
4

f
2

g
6

h
2

ii) Da, exista posibilitatea traversarii tuturor muchiilor o singura data cu plecarea si
intoarcerea in acelasi nod, deoarece toate nodurile au gradul par (teorema 1 a lui Euler,
cursul 5). Altfel spus, graful din figura 6 este eulerian.Pentru a gasi o asemenea
traversare, descompunem graful in cicluri elementare disjuncte (lucru posibil in baza
teoremei 2 a lui Veblen,cursul 5) pe care apoi le concatenam intr-un ciclu eulerian.
Atentie: in general, descompunerea nu este unica si ca urmare pot exista o sumedenie de
cicluri euleriene solutii de traversare a tuturor muchiilor o singura data! O rezolvare
este data in figura 7, cu plecarea si intoarcerea in nodul a.

d
f

Ciclul C2

Ciclul C1

Ciclul C3

concatenare
a

d a

Figura 7
2. Pentru graful din figura 8 determinati un traseu postal de valoare minima cu plecarea
si intoarcerea in nodul A.
5

A
6

4
4

6
3
D

10
7

5
E

Figura 8
Rezolvare
Graful nu este eulerian deoarece nodurile A si E au gradul impar 3.
Existand doar doua noduri de grad impar cuplajul de valoare minima coincide
cu lantul de cuplare dintre A si E cu cea mai mica valoare! Prin simpla inspectie se
gaseste lantul A B E cu valoarea 9.

Din graful dat derivam un nou graf G* dubland muchiile lantului A B E.


Prin constructie, noul graf este eulerian si ca urmare exista posibilitatea traversarii
muchiilor sale o singura data cu plecarea si intoarcerea in nodul A. Procedand ca in
exercitiul precedent se determina un ciclu eulerian in G* (exista o groaza de solutii) In
raport cu graful original, orice ciclu eulerian din G* este un traseu postal de valoare
minima! O solutie este data in figura 9 ; muchiile traversate de doua ori au fost
ingrosate!

C
Graful eulerian G*

Un ciclu eulerian in G* un traseu postal de valoare minima in graful original:


A

Figura 9
Valoarea traseului postal optim = suma valorilor tuturor muchiilor grafului dat + suma
valorilor muchiilor traversate de doua ori = 50 + 9 = 59

3. Pentru graful din figura 10 determinati un traseu postal de valoare minima cu plecarea
si intoarcerea in nodul A.
Rezolvare
Ca si in exercitiul precedent, existenta nodurilor de grad impar face ca in traseul postal
optim unele muchii sa fie traversate de doua ori! De aceasta data avem 4 noduri
B,C,F,G toate cu gradul impar 3. In tabelul 2 sunt afisate lanturile de cuplare dintre
cele 4 noduri si valorile acestora

A
2

8
B

C
1

1
1

D
5

E
3

2
3

F
4
G

1
2

9
K
c)

Figura 10
C

BDEC

BDF
4

BDG
5

B
Lanturile de
cuplare
si valorile lor: C
F

*
CEDF CEDG
3
*
FKG
Tabelul 2

Nodurile B,C,F,G se pot cupla, doua cate doua, in trei moduri:


B cu C si F cu G ; B cu F si C cu G ; B cu G si C cu F ;
Cautam cuplajul de valoare minima, vezi tabelul 3.

Posibilitati de cuplare Valoarea cuplajului


B cu C si F cu G

3+3=6

B cu F si C cu G

3+5=8

B cu G si C cu F

4+4=8

cuplajul de valoare minima

Tabelul 3
In graful dat, dublam muchiile lanturilor de cuplare:
B D E C si F K G
din cuplajul de valoare minima identificat mai sus. Obtinem un graf eulerian vizualizat
in figura 11

C
D

F
G

K
Figura 11

Lasam in grija cititorului sarcina determinarii algoritmice! a unui ciclu eulerian in


graful extins. In raport cu graful original, acest ciclu va fi un traseu postal de valoare
minima. Indiferent de solutia de traversare ( sunt foarte multe!) valoarea sa este egala
cu:
suma valorilor muchiilor grafului original + suma valorilor muchiilor din cuplajul
minimal (muchii traversate de doua ori!) = 46 + 6 = 52
Tema 3. Programarea matematica instrument alternativ de modelare a
proceselor decizionale din economie
3.1 Modelarea prin programare matematica. Chestiuni generale
A Ce este o problema de programare matematica
Problemele practice studiate in cadrul temelor 1 si 2 au avut o trasatura comuna: toate au
fost modelate cu ajutorul aceluiasi instrument un graf, adica un desen compus din
puncte si linii care unesc unele dintre aceste puncte.
Tema 3 introduce o modalitate alternativa de modelare a proceselor decizionale din
economie si anume programarea matematica.
In esenta, o problema de programare matematica sau simplu,program matematic
consta in
- maximizarea sau, dupa caz, minimizarea unei functii f(x) = f(x1,x2,,xn ) de
mai multe variabile x1,x2,,xn
(1)
ale caror valori trebuie sa satisfaca:
- un ansamblu de relatii matematice ecuatii si/sau inecuatii;
(2)
- unele conditii explicite cum ar fi: sa ia numai valori nenegative (0) sau sa ia
numai valori intregi,etc.
(3)
De obicei, un program matematic va fi notat cu sigla (P). Functia de optimizat
f(x1,x2,,xn) din (1), de multe ori notata simplu cu f, se numeste functia obiectiv a
problemei (P) iar relatiile implicite din (2) se numesc restrictii. Pentru variabilele
x1,x2,,xn vom folosi denumirea uzuala de variabile de decizie. Un set de valori
numerice x ( x1 , x2 ,...,xn ) asignate variabilelor de decizie, care satisfac restrictiile (2),
se va numi solutie a programului (P); daca componentele x1 , x2 ,...,xn satisfac si
conditiile explicite (3) vom spune ca x este o solutie admisibila. Multimea solutiilor
admisibile se va nota de regula cu A.

Rezolvarea problemei (P) adica maximizarea (sau minimizarea) functiei f inseamna


determinarea efectiva a acelei solutii admisibile x ( x1 , x2 ,...,xn ) A cu proprietatea
ca ofera functiei f cea mai mare (sau cea mai mica) valoare posibila. Solutia admisibila
x se va numi solutia optima a problemei de programare (P).
Daca functia obiectiv (1) si restrictiile (2) sunt liniare in variabilele x1,x2,,xn vom
spune ca (P) este o problema de programare liniara sau simplu un program liniar.
Neliniaritatea fie a functiei obiectiv fie a unora dintre restrictii plaseaza (P) in clasa
problemelor de programare neliniara.
Iata doua mici probleme de programare matematica:
(max) f 10 x1 12 x 2 (1)

5 x1 3x 2 90

( P1 ) 2 x1 3x 2 45 (2)

x1 3x 2 36

x1 0 , x 2 0
(3)

(max) f x1 x2 (1)

( P2 ) x1 x2 100
(2)
x 0 , x 0
(3)
2
1

Ambele se citesc la fel:


Sa se determine ansamblul (aici, perechea) de valori numerice x ( x1 , x2 ) care
satisfac sistemul de restrictii (2), conditiile de nenegativitate (3) si care ofera
functiei obiectiv (1) cea mai mare valoare posibila.
Programul (P1) este un program liniar deoarece atat functia obiectiv cat si cele trei
restrictii sunt liniare in variabilele x1, x2. In programul (P2) restrictia este liniara in x1, x2
dar functia obiectiv nu este, astfel ca (P2) este un program neliniar.
Sa privim mai aproape programul liniar (P1).Sunt firesti intrebarile:
Cate solutii admisibile are problema si cum arata multimea lor A ?
Care este solutia optima si cum se gaseste ea?
De exemplu, x = (0,0) adica x1 = 0,x2 = 0 este o solutie admisibila deoarece satisface
banal restriciile (2) si conditiile de nenegativitate (3). Valoarea functiei obiectiv in x
este 0. O solutie admisibila mai buna este x (9,9) - adica x1 = 9,x2 = 9 pentru ca
satisface restrictiile (2) pe prima cu inegalitate stricta si cu egalitate pe celelalte doua
si ofera functiei (1) valoarea 99. Ce mai buna solutie, adica solutia optima, se dovedeste
a fi x (15,5) x1 15, x2 5 (vom vedea de ce!).Ea satisface cu egalitate primele

doua restrictii si cu inegalitate stricta pe ultima, oferind functiei obiectiv (1) valoarea
maxima 210.
B. Schema generala de elaborare a unui model de programare matematica
O mare varietate de probleme de decizie economica au ca model o problema de
programare matematica, adesea liniara.Sa luam ca exemplu problema planificarii
productiei unei unitati economice pe o perioada viitoare.In problema sunt implicate doua
categorii de marimi:
- marimi constante, cunoscute cum sunt cantitatile de resurse (capacitati de
productie, materii prime, forta de munca, bani) disponibile pentru viitoarea perioada de
planificare, consumurile normate de resurse pentru fabricarea produselor finite, preturile
la care vor fi vandute produsele fabricate sau profiturile rezultate din vanzarea acestora,
tinte prestabilite la unii indicatori economici etc.
- marimile variabile, necunoscute, sunt in acest caz cantitatile de produse finite ce
urmeaza a fi realizate in urmatoarea perioada. Ansamblul lor constituie esenta
programului de activitate (planului) pentru perioada viitoare analizata. Fireste, exista
nenumarate combinatii in care pot fi fabricate produsele finite; importante sunt cele
admisibile, adica cele care pot fi efectiv realizate din resursele disponibile existente.
Programele admisibile de activitate pot fi comparate intre ele pe baza unui criteriu de
apreciere (denumit si criteriu de performanta) cum ar fi venitul sau profitul total rezultat
din vanzarea productiei obtinute.In principiu, planificatorii sunt interesati in
determinarea celui mai performant program potential de activitate.
Situatia descrisa poate fi modelata cu ajutorul unei probleme de programare matematica
in care:
- variabilele de decizie corespund marimilor variabile;
- functia obiectiv traduce in limbaj matematic criteriul de apreciere considerat;
- restrictiile formalizeaza conditiile limitative existente ca de exemplu incadrarea
consumului de resurse in disponibile, realizarea indicatorilor economici propusi etc;
- de regula, conditia explicita uzuala, impusa variabilelor de decizie, este conditia
de a lua numai valori nenegative (), derivata nemijlocit din semnificatia economica a
acestor variabile.
Daca functia obiectiv si restrictiile sunt liniare in variabilele de decizie modelul
rezultat este o problema de programare liniara.
Celelalte sectiuni ale temai vor avea in vedere, in exclusivitate, numai modele de
programare liniara!

C. Despre rezolvarea problemelor de programare liniara


Pentru programele liniare exista un procedeu iterativ de rezolvare: este vorba de
algoritmul simplex, elaborat in 1947 de catre matematicianul american George B.
Dantzig.
Uriasa experienta numerica acumulata pana in prezent a pus in evidenta eficacitatea si
robustetea procedeului in fata oricarei aplicatii practice si, din acest motiv, algoritmul
simplex a fost clasat in topul primilor 10 algoritmi ai secolului XX.
Primul program liniar cu adevarat mare, rezolvat cu acest algoritm, a fost o problema a
dietei cu 77 tipuri de alimente existente pe piata americana a anilor 40, precum laptele
praf, varza, fasolea, spanacul sau ficatul de vita si cu cerinte specifice pentru 9 principii
nutritive cum ar fi calorii, proteine, calciu, fier, vitaminele A si C s. a. Problema fusese
studiata inca din 1943 de catre George Stiegler (laureat al premiului Nobel in 1982) si de
ea era interesata si conducerea militara a SUA care dorea sa stie cam care ar fi efortul
financiar pentru hrana soldatilor de pe diversele fronturi de lupta. Rezolvarea s-a facut
chiar in 1947 de catre o echipa de 9 baieti buni la socoteli dotati cu calculatoare
mecanice de birou. (in vremea aceea nu existau computere) Efortul de calcul a fost
evaluat la aproximativ 120 om zile!
In timp, cercetarea teoretica si practica asupra algoritmului simplex (perfectionare,
extindere, variante) s-a desfasurat in ritm sustinut fiind impulsionata si motivand la
randul sau aparitia, dezvoltarea si perfectionarea mijloacelor automate de calcul. Astazi,
rezolvarea unui program liniar cu (zeci de) mii de variabile si/sau restrictii este un fapt
obisnuit.
Obiectivele si spatiul alocat acestui curs nu permit descrierea algoritmului simplex, al
carui fundament matematic este destul de consistent.Pentru mai buna intelegere a
programarii liniare am inclus o sectiune in care este descrisa metoda grafica de rezolvare
a problemelor cu doua variabile. Pentru problemele mai mari se va folosi utilitarul QM
al carui mod de lucru va fi descris in partea finala a cursului.

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