Sunteți pe pagina 1din 12

?? ?

?
Problema de transport

Programare evolutivă
și algoritmi genetici
Problema de transport

 
Enunț
Se cunosc:
 Ofertă (surse, producători, furnizori): vector - m surse
 Cerere (destinație, consumatori): vector - n destinații
 Costuri distribuție (transport): matrice ,
, (oferta pe linie, cererea pe coloană)
 = costul transportării unei unități de la furnizorul i la consumatorul j

Ipoteza de lucru
 Cererea este egală cu oferta
Problema de transport

 
Cerință
 Găsirea unui plan de transport – matrice , astfel încît
 Toată producția este consumată (pe fiecare linie)

 Toată cererea este satisfăcută (pe fiecare coloană)

 Costul de transport total este minim


GA – Problema de transport

Exemplu
Costuri: T_costuri3.txt
Oferta: 15 20 15 T_oferta3.txt 51 62 35 45 56
59 68 50 39 46
Cerere: 11 12 9 10 8 T_cerere3.txt 49 56 53 51 37

Apel: s,c=GTR.GA_Transport('T_oferta3.txt','T_cerere3.txt','T_costuri3.txt',10,50,0.8,0.1)

Cel mai bun cost găsit: 2316.0


Soluția de transport:
[[ 6. 0. 9. 0. 0.]
[ 2. 0. 0. 10. 8.]
[ 3. 12. 0. 0. 0.]]
Oferta rămasă: [0. 0. 0.]
Oferta e consumată perfect
Cerere rămasă: [0. 0. 0. 0. 0.]
Cererea acoperită perfect
GA – Problema de transport

Exemplu
Oferta:
Cel mai100
bun
150cost găsit:
80 90 10 60 39736.1
80 50 20 70 T_oferta.txt
Soluția de transport:
Cerere: 0 70 40
4030 90 020 180 0110 50 060 60 0 T_cerere.txt
0 0 0 60
60 0 0 90 0 0 0 0 0 0
Costuri: T_Costuri.txt
0 0 0 0 0 20 0 0 60 0
70.99 53.18 89.77 77.93 67.40 80.26 75.45 62.14 87.86 54.82
0 0 10 0 0 10 70
64.86 61.97 76.43 62.72 77.97 74.28 86.72 87.24 99.97 72.20
0 0 0
91.190 71.170 89.990 55.03 0 97.71 0 52.82 10 71.80 0 82.17 0 53.29 0 0
58.65
61.810 59.900 64.260 52.82 0 74.06 0 51.92 0 50.5210 71.58 50 53.50 0 0
93.85
10 65.990 98.730 90.86
81.45 0 91.73 0 53.49 70 76.74 0 98.62 0 71.39 0 0
79.93
84.570 83.760 80.680 75.21 0 66.32
20 61.44 0 50.4230 52.04 0 63.41 0 63.94
0
56.740 54.150 82.49 20 96.970 50.98 0 55.63 0 76.74 0 73.75 0 79.75 0 69.61
0
87.400 59.010 92.540 66.54 0 53.28 0 98.27 70 58.61 0 80.19 0 66.16 0 73.79
0
83.54 52.72 61.28 99.81 83.14 87.87 94.46 54.19 89.65 56.37
Oferta rămasă: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
86.02 62.15 74.17 75.00 74.71 52.56 76.67 58.20 57.74 56.53
Oferta e consumată perfect
Cerere rămasă: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Apel: s,c=GTR.GA_Transport('T_oferta.txt','T_cerere.txt','T_Costuri.txt',150,300,0.8,0.1)
Cererea acoperită perfect
GA – Rezolvarea unei probleme

Stabilire Generare
Problemă reprezentare și populație
funcție obiectiv inițială
Generație
curentă

Generație
Rezultat Populație finală
nouă
Multiset părinți

Decodificare Soluție
Descendenți Descendenți
(mutație) (încrucișare)
GA – Problema de transport

 
Reprezentare – codificare Oferta
 Planul de transport se construiește Oferta Plan transport
alocînd, pe rînd, resurse = cît se rămasă
transportă de la sursa i către destinația j

 Prin alocare se consumă parțial resurse oi xij


de la sursa i și se acoperă parțial cererea
Orice permutare j
constituie
 oferta rămasă, cerere rămasă acceptabil,
un cromozom
deoarece asigură
respectarea restricțiilor
aloc maximul posibil de la sursa i la destinația j Cerere
problemei Cerere cj
rămasă
 Ordinea de alocare: pe rînd, cîte. un element  permutare = cromozom
 1 k
pk
 Poziția k în ordinea de alocare  alocă elementul , unde
GA – Problema de transport

 
Exemplu

surse, destinații

Alocă resurse pentru transport în ordinea:


11 22 33 44 55 66 77 88 99 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20

9 5 14 2 15 10 18 3 20 6 13 1 7 8 17 16 19 4 12 11

Plan transport
9  alocă 11 22 33 44 55

5  alocă 11

14  alocă 22
2  alocă
15  alocă 33

10  alocă 44

12  alocă
11  alocă
GA – Problema de transport

 
Reprezentare – decodificare

 Construire plan de transport pe baza unei permutări (cromozom)


lin,col=numpy.unravel_index(int(permutare[i]),(m,n))
 Inițializează
 OR=oferta totală, o_r=vector ofertă, c_r=vector cerere, k=1, x=zeros(m,n)

 Cît timp OR>0


 prelucrează elementul curent () din permutare  ,

 alocă x(lin,col) = minim ( o_r(lin), c_r(col) )

 actualizează o_r(lin)=o_r(lin) – x(lin,col) c_r(col)=c_r(col)-x(lin,col)

 actualizează oferta totală rămasă OR=OR-x(lin,col)

 k=k+1
GA – Problema de transport

  Funcţia de evaluare
 necesită decodificarea cromozomului  plan de transport
 apoi calculează

 cost = funcție de minim, utilizează

Populația inițială
 fără restricții, se generează aleator
Condiția de terminare
 număr limitat de generații + diversitate (minim 2 calități diferite)
GA – Problema de transport

Operatori
 Selecția părinților: tip SUS cu FPS standard / cu sigma scalare
 FPS cu sigma scalare
 poate duce la erori pentru probleme de dimensiuni mici (toți indivizii au aceeași calitate)

 obține rezultate mai bune decît FPS standard pentru probleme de dimensiuni mai mari

 Recombinare: CX
 fără restricții
 Mutaţie: operatorul interschimbare
 fără restricții
 Selecția generației următoare: elitistă

Rezultat
 din populația finală se extrage cel mai bun individ și se decodifică  cel mai
bun plan de transport calculat
Spor la învăţat!

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