Toto je starší verze dokumentu!
param n; /* product count */ param m; /* season count */ param R, integer, >= 0; /* max capacity of warehouse */ /* uzly vyrobku*/ set V1 := 1..n; set V2 := 1..m; #set E, within V1 cross V2; set E := V1 cross V2; /* set of arcs */ /* unit cost, i - product in j - season */ param c{(i,j) in E},>=0; /* units demand, i - product in j - season */ param d{(i,j) in E},>=0; /* production capacity, i - product in j - season */ param u{(i,j) in E},>=0; /* unit holding storage cost, i - product from j - season (to j+1) season */ param h{(i,j) in E}, >=0; /* unit production, i - product in j - season */ var x{(i,j) in E}, integer, >=0; /* chceme platit co nejmene. Vyprodukujeme x produktu, za kazdy zaplatime c dle sezony + holding cost, pokud jsme ho neprodali */ #minimize total: sum{(i,j) in E} (x[i,j] * c[i,j] + ((x[i,j] - d[i,j]) * h[i,j])); #minimize total: sum{j in {1..m-1} ( sum{i in {1..n}} (x[i,j] * c[i,j]))# + h[i,j] * sum{k in {1..j}} ((x[i,k] - d[i,k])) ) + sum{i in {1..n}} (x[i,m] * c [i,m]); minimize total: sum{j in {1..m-1}} ( sum{i in {1..n}} ((x[i,j] * c[i,j]) + h[i,j] * sum{k in {1..j}} ((x[i,k] - d[i,k]))) ) + sum{i in {1..n}} (x[i,m] * c [i,m]); /* vsechno, co jsme vyrobili, se proda */ s.t. satisfactionTotal: sum{(i,j) in E} x[i,j] = sum{(i,j) in E} d[i,j]; /* nemuzeme vyrobit vic, nez kolik je kapacita v sezone */ s.t. maxproduction{(i,j) in E}: x[i,j] <= u[i,j]; /* vyrobime aspon tolik, aby vsechna poptavka danou sezonu byla uspokojena */ s.t. satisfactionSeasonal{(i,j) in E}: x[i,j] >= ( d[i,j] - sum{l in {1..j-1}}(x[i,l] - d[i,l]) ); /* Po sezone uskladnime maximalne R vyrobku. Coz je soucet dosud vyrobenych - dosud prodanych. */ /* Tato podminka nezmeni vysledek. Je zajimave, ze kdyz je sklad velky 90, NO PRIMAL SOLUTION FOUND. Vys je cena trochu vetsi nez optimal. Zrejme je nekde maximalni kapacita u mala a musime ulozit do skladu... EDIT: Tuto podmínku ale unkomentujme. Protože na cviku se model testoval s daty Testing_wearhousing.dat, které se objevily v moodlu, a pro ty je třeba. */ s.t. maxstorage{j in {1..m}}: sum{(k,l) in {1..n,1..j}} ((x[k,l] - d[k,l])) <= R; solve; printf "Optimal solution: %d\n", sum{j in {1..m-1}} ( sum{i in {1..n}} ((x[i,j] * c[i,j]) + h[i,j] * sum{k in {1..j}} ((x[i,k] - d[i,k]))) ) + sum{i in {1..n}} (x[i,m] * c [i,m]); printf("From node To node Total cost\n"); printf{(i,j) in E: x[i,j]} " %3d %3d %8g\n", i, j, c[i,j]; data;
- Nevite nekdo, jak na to? - Ano, ale kdo odevzdá plagiát, žene do záhuby! - Zatím přepisuju podle komentářů a až na jiné názvy proměnných se mi to shoduje na 80% s původní verzí. Jinak se to moc vymyslet nedá, nechcu-li zabřednout do syntaxe zápisu, což je jinak jen „obfuscation“. (Uvedený kód nějak narušil wiki syntax) - V „Upravil stránku“ je původní kód bez wiki-syntaxe. Ještě jsem unkomentoval podmínku s R.