Gyártórendszerek modellezése MILP modell PNS feladatokhoz 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: 2008. november 16. 1 hegyhati@dcs.uni-pannon.hu http://dcs.uni-pannon.hu/hegyhati/oktatas
Alap jelölések M Anyagok halmaza, M = R I P R Nyersanyagok halmaza I Köztes anyagok halmaza P Termékek halmaza O M veleti egységek halmaza, ahol O (M) (M) ϕ (m) m M-et gyártani képes m veleti egységek halmaza ϕ + (m) m M-et felhasználni képes m veleti egységek halmaza
Paraméterek M veleti egységek paraméterei o O-hoz: cap o x o prop o M veleti egység mérete, mazimális kapacitása Kihasználtásgtól független x költség M ködési kapacitástól függ arányos költség
Paraméterek Nyersanyagok paraméterei r R-hez: price r max r Nyersanyag ára Piacon vásárolható nyersanyag emnnyisége
Paraméterek Köztes anyagok paraméterei i I -hez: price i penal i max i Köztes anyag ára (opcionális termék) Büntetés megmaradó köztes anyagra Fels korlát a megmaradó köztes anyag mennyiségére
Paraméterek Termékek paraméterei p P-hez: price p min p max p Termék ára Alsó korlát a gyártandó termék mennyiségére Felsó korlát a termékek mennyiségére, a piac maximális igénye
Paraméterek Anyag - M veleti egység kapcsolat paraméterei o O, m M-hez: ir o,m or o,m Az o m veleti egység bemenetében az m aránya Az o m veleti egység kimenetében az m aránya
Változók Változók o O-hoz: x o R + 0 az o m veleti egység m ködési kapacitása y o {0, 1} 1, ha az o m veleti egység be van kapcsolva, 0 ha nem
Korlátozási feltételek Korlátozási feltétel m veleti egységekre o O-hoz: x o y o cap o
Korlátozási feltételek Korlátozási feltétel nyersanyagokra r R-hez: o ϕ + (r) x o ir o,r max r
Korlátozási feltételek Korlátozási feltételek köztes anyagokra i I -hez: 0 x o or o,i x o ir o,i max i o ϕ (i) o ϕ + (i)
Korlátozási feltételek Korlátozási feltételek termékekre p P-hez: min p x o or o,p x o ir o,p max i o ϕ (p) o ϕ + (p)
Célfüggvény Célfüggvény: prot maximalizálás z = pricep x o or o,p p P + i I r R o ϕ (p) (price i penal i ) pricer o ϕ + (r) o ϕ (i) x o ir o,r o ϕ + (p) x o or o,i x o ir o,p o ϕ + (i) x o ir o,i o O (x o y o + prop o x o )
Modell GLPK modell A megadott modell kissé máshogy épül fel, mint az el z fejezetben leírt, de természetesen ekvivalens azzal. Két új változóhalmaz került bevezetésre a könnyebb átlálthatóság kedvéért, melyek tárolják az egyes anyagokhoz az azokból gyártott, illetve felhasznált mennyiséget.
Modell Halmazok set O; set R; set I; set P; set M := P union I union R;
Modell Paraméterek param price{m in M}; param penal{i in I}; param max{m in M}; param min{p in P}; param cap{o in O}; param fix{o in O}; param prop{o in O}; param iratio{o in O, m in M}; param oratio{o in O, m in (P union I)};
Modell Változók var x {o in O} >=0; var y {o in O} >=0,<=1,integer; var consumed {m in M}; var produced {m in (P union I)};
Modell Korlátozási feltételek s.t. Unit_Capacity {o in O}: x[o]<=y[o]*cap[o]; s.t. Consumed_Material {m in M}: consumed[m]=sum{o in O}(x[o]*iratio[o,m]); s.t. Produced_Material {m in (P union I)}: produced[m]=sum{o in O}(x[o]*oratio[o,m]); s.t. Raw_Max {r in R}: consumed[r]<=max[r]; s.t. Intermediate_Min_Max {i in I}: 0<=produced[i]-consumed[i]<=max[i]; s.t. Product_Min_Max {p in P}: min[p]<=produced[p]-consumed[p]<=max[p];
Modell Célfüggvény maximize profit: + sum{m in (P union I)}(price[m]*(produced[m]-consumed[m])) - sum{i in I}(penal[i]*(produced[i]-consumed[i])) - sum{r in R}(price[r]*consumed[r]) - sum{o in O}(x[o]*prop[o]+y[o]*fix[o]) ;
Példa Adatok Példa Adatok / 1 set O := O1 O2 O3; set R := A B; set I := C D; set P := E;
Példa Adatok Példa Adatok / 2 param price := A 1 B 2 C 0 D 0 E 30; param penal:= C 0 D 5;
Példa Adatok Példa Adatok / 3 param max:= A 10 B 20 C 0 D 100 E 100; param min:= E 5; param cap:= O1 10 O2 10 O3 10;
Példa Adatok Példa Adatok / 4 param fix:= O1 5 O2 10 O3 5; param prop:= O1 5 O2 10 O3 0;
Példa Adatok Példa Adatok / 5 param iratio: A B C D E:= O1 0.5 0.5 0 0 0 O2 0.3 0.7 0 0 0 O3 0 0 1 0 0; param oratio: C D E:= O1 1 0 0 O2 0 0 1 O3 0 0.3 0.7;
Futtatás Futtatás bash# glpsol -m PNS_MILP.model -d PNS_MILP.data -o PNS_MILP.solution --log PNS_MILP.log PNS_MILP.model A modellt tartalmazó fájl PNS_MILP.data A példát tartalmazó fájl PNS_MILP.solution A megoldást tartalmazó fájl PNS_MILP.log A glpsol kimenetét tartalmazó fájl
Futtatás PNS_MILP.log Reading model section from PNS_MILP.model... 47 lines were read Reading data section from PNS_MILP.data... 59 lines were read Generating Unit_Capacity... Generating Consumed_Material... Generating Produced_Material... Generating Raw_Max... Generating Intermediate_Min_Max... Generating Product_Min_Max... Generating profit... Model has been successfully generated glp_simplex: original LP has 17 rows, 14 columns, 42 non-zeros glp_simplex: presolved LP has 9 rows, 8 columns, 18 non-zeros lpx_adv_basis: size of triangular part = 9 0: objval = 0.000000000e+00 infeas = 1.000000000e+00 (0) 1: objval = 8.650000000e+01 infeas = 0.000000000e+00 (0) * 1: objval = 8.650000000e+01 infeas = 0.000000000e+00 (0) * 3: objval = 2.930000000e+02 infeas = 0.000000000e+00 (0) OPTIMAL SOLUTION FOUND Integer optimization begins... + 3: mip = not found yet <= +inf (1; 0) + 3: mip = 2.930000000e+02 <= 2.930000000e+02 0.0% (1; 0) + 3: mip = 2.930000000e+02 <= tree is empty 0.0% (0; 1) INTEGER OPTIMAL SOLUTION FOUND Time used: 0.0 secs Memory used: 0.2 Mb (164283 bytes) lpx_print_mip: writing MIP problem solution to `PNS_MILP.solution'...
Futtatás PNS_MILP.solution fontos részei Problem: PNS_MILP Rows: 17 Columns: 14 (3 integer, 3 binary) Non-zeros: 42 Status: INTEGER OPTIMAL Objective: profit = 293 (MAXimum) 293 (LP) No. Row name Activity Lower bound Upper bound ------ ------------ ------------- ------------- ------------- 12 Raw_Max[A] 8 10 13 Raw_Max[B] 12 20 14 Intermediate_Min_Max[C] 0 0 = 15 Intermediate_Min_Max[D] 3 0 100 16 Product_Min_Max[E] 17 5 100 17 profit 293 No. Column name Activity Lower bound Upper bound ------ ------------ ------------- ------------- ------------- 1 x[o1] 10 0 2 x[o2] 10 0 3 x[o3] 10 0 4 y[o1] * 1 0 1 5 y[o2] * 1 0 1 6 y[o3] * 1 0 1