Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

courses:a4b35ko:ukol-2015-5 [2015/04/26 19:44]
jendan vytvořeno
courses:a4b35ko:ukol-2015-5 [2025/01/03 18:28] (aktuální)
Řádek 1: Řádek 1:
 ====== Warehousing ====== ====== Warehousing ======
  
-Nevite nekdojak na to?+<​code>​ 
 +param n; /* product count */ 
 +param m; /* season count */ 
 +param Rinteger, >= 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 */ 
 +#POZN. myslim, ze tahle podminka je zbytecna a neresi vubec nic 
 +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; 
 +</​code>​
  
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
 +- 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, myslím tím, že nejde odrážkovat,​ diskuze se nezobrazí)
 +- V "​Upravil stránku"​ je původní kód bez wiki-syntaxe. Ještě jsem unkomentoval podmínku s R.
 +
 +- Trocha přidání do vstupních dat (h proměnná) pro domácí úlohu malinko zpřehlední výpočet optimalizační funkce. Flow[] je x[] v původní verzi.
 +<​code>​
 +h....
 +....
 +1 13 0
 +2 13 0
 +3 13 0
 +4 13 0
 +5 13 0
 +6 13 0
 +7 13 0
 +8 13 0
 +9 13 0
 +10 13 0
 +
 +minimize total: sum{(product,​season) in E}(flow[product,​season] * c[product,​season]) +  sum{(product,​season) in E}( h[product,​season] * sum{k in {1..season}} ((flow[product,​k] - d[product,​k]))) ;
 +</​code>​
  
courses/a4b35ko/ukol-2015-5.1430070260.txt.gz · Poslední úprava: 2025/01/03 18:24 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0