Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
courses:a4b35ko:ukol5 [2012/04/09 22:12] sulcanto |
courses:a4b35ko:ukol5 [2025/01/03 18:28] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Úkol 5 ====== | ====== Úkol 5 ====== | ||
+ | Výsledek: | ||
+ | === 2013/2014 === | ||
+ | {{:courses:a4b35ko:ko-2014-hw-bin-image.jpg?700|}} | ||
=== 2011/2012 === | === 2011/2012 === | ||
- | Výsledek | + | |
{{:courses:a4b35ko:result.png|}} | {{:courses:a4b35ko:result.png|}} | ||
- | ~~DISCUSSION~~ | ||
+ | |||
+ | Následující kód nepatří k předchozímu obrázku a konverguje trochu náladově za 23-30 kroků. Posílám ho sem, abychom se na facebooku nebavili bez podkladu a protože mě překvapuje, že mi to konverguje za 23 kroků přestože podle zadání by to mělo doběhnout někde na 40ti. Dokážte mi s tím někdo poradit? | ||
+ | |||
+ | PS: Kód je psaný pro obecné rozměry R a C. | ||
+ | |||
+ | PPS: Za par minut odevzdavam, tak doufam, ze to do te doby nikdo neobslehne tak jak to tulezi a bezi =) | ||
+ | |||
+ | function I = binrec(R,C) | ||
+ | |||
+ | % rozmery vysledneho obrazku... | ||
+ | n1 = size(R,2); | ||
+ | n2 = size(C,2); | ||
+ | nn = n1+n2; | ||
+ | | ||
+ | % vysledny obrazek init... | ||
+ | I = repmat(0,n1,n2); | ||
+ | | ||
+ | % pomocny vektor pro zapamatovane ceny z minule iterace... | ||
+ | cprev = repmat(0,nn,nn); | ||
+ | | ||
+ | % zdroje a spotrebice... | ||
+ | b = [ R' ; -C' ]; | ||
+ | | ||
+ | % lower-bounds na vsechny trubky je nula... | ||
+ | l = repmat(0,nn,nn); | ||
+ | | ||
+ | % upper-bounds je jedna pro trubky vedouci ze zdrojů R do spotřebičů C... | ||
+ | u = [repmat(0,n1,n1), repmat(1,n1,n2);... | ||
+ | repmat(0,n2,n1), repmat(0,n2,n2)]; | ||
+ | | ||
+ | % měli bychom to stihnout za icount iterací... | ||
+ | icount = 40; | ||
+ | for ic = 1:icount | ||
+ | c = fce(cprev,I); | ||
+ | cprev = c; | ||
+ | g = graph; | ||
+ | F = g.mincostflow(c,l,u,b); | ||
+ | | ||
+ | % nedoslo ke zmene, ukoncujeme..? | ||
+ | if (I == F(1:n1,n2+1:end)) | ||
+ | binplot(ic,I); | ||
+ | break; | ||
+ | end | ||
+ | | ||
+ | I = F(1:n1,n2+1:end); | ||
+ | | ||
+ | binplot(ic,I); | ||
+ | end | ||
+ | end | ||
+ | |||
+ | Funkce binplot obsahuje subplot a vse co je presne popsane v zadani pro vykresleni. | ||
+ | |||
+ | Funkci ''fce'' necham na laskavem ctenari, jsou to dva forcykly a v nich sest ifů presne jak jsou popsane v zadani =D | ||
+ | |||
+ | |||
+ | ~~DISCUSSION~~ |