Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem



Podobné dokumenty
Experimentální hodnocení kvality algoritmů

Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou

2. úkol MI-PAA. Jan Jůna (junajan)

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU

MI-PAA. úkol č.3. Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Aritmetika s velkými čísly na čipové kartě

Příklad bezprostředně navazuje na předchozí příklad č. 17. Bez zvládnutí příkladu č. 17 není možné pokračovat

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Střední škola informačních technologií a sociální péče, Brno, Purkyňova 97. Vybrané části Excelu. Ing. Petr Adamec

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

Výpočetní složitost I

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

Implementace numerických metod v jazyce C a Python

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

UNIVERSITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA. KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY školní rok 2009/2010 BAKALÁŘSKÁ PRÁCE

Anotace. Dynamické programování, diskrétní simulace.

Příloha 1 - stav oběhu papírových dokumentů před implementací systému

3. D/A a A/D převodníky

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

BAKALÁŘSKÁ PRÁCE. Numerické metody jednorozměrné minimalizace

SYLABUS PŘEDNÁŠKY 6a Z INŽENÝRSKÉ GEODÉZIE (Polohové vytyčovací sítě) 4. ročník bakalářského studia studijní program G studijní obor G

Elliottovy vlny. Daniel DAVID Základy teorie, souhrn pravidel a praktické příklady využití.

TVORBA VÝROBNÍ DOKUMENTACE

ROČNÍKOVÁ PRÁCE Tříúběžníková perspektiva

Město Rokytnice v Orlických horách, náměstí Jindřicha Šimka 3, Rokytnice v Orlických horách

Náhodný pokus každá opakovatelná činnost, prováděná za stejných nebo přibližně stejných podmínek, jejíž výsledek je nejistý a závisí na náhodě.

Mgr. Karel Pazourek. online prostředí, Operační program Praha Adaptabilita, registrační číslo CZ.2.17/3.1.00/31165.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA INFORMAČNÍCH TECHNOLOGIÍ. Uživatelská příručka k programu FloodFilling Art

VY_32_INOVACE_C 07 16

6. T e s t o v á n í h y p o t é z

0. Lineární rekurence Martin Mareš,

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

1 Test 1 naivní vs standardní

Kirchhoffovy zákony

Úvod do mobilní robotiky AIL028

ZADÁVACÍ DOKUMENTACE K VEŘEJNÉ ZAKÁZCE: DODÁVKA VÝPOČETNÍ TECHNIKY. Stránka 1 z 13

PŘÍTECH. Klarinet Vlastnosti zvuku

Jak pracovat s absolutními hodnotami

Operační systémy. Přednáška 8: Správa paměti II

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

Zadávací dokumentace k výzvě k podání nabídky na dodávku 11 Notebooků dle specifikace

Příloha P.1 Mapa větrných oblastí

ZADÁVACÍ DOKUMENTACE

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Zadání vzorové úlohy výpočet stability integrálního duralového panelu křídla

Elektronizace správních řízení a jejich příprava na základní registry

2 Základy práce v matematickém programu Sage

Břetislav Fajmon, UMAT FEKT, VUT Brno. Poznámka 1.1. A) první část hodiny (cca 50 minut): představení všech tří metod při řešení jednoho příkladu.

Studentská tvůrčí a odborná činnost STOČ 2015

- kvalitní dokumentace k SW je vyžadovaným STANDARDEM. vzájemná provázanost SW (IS) ve velkých společnostech. aktuální přehledná srozumitelná

Lineární programování

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE. Teze diplomové práce

Digitalizace signálu (obraz, zvuk)

Umělá inteligence I. Roman Barták, KTIML.

Téma je podrobně zpracováno ve skriptech [1], kapitola

Zpráva února Jana Thomasová. Manažerský dotazník Thomas. Soukromé & důvěrné

Kupní smlouva o dodávce IT vybavení 2013

Zadávací dokumentace

12. Aproximační algoritmy

Principy operačních systémů. Lekce 3: Virtualizace paměti

Měření odporu ohmovou metodou

NEXIS 32 rel Generátor fází výstavby TDA mikro

Zadávací dokumentace

Jak nasadit Windows 10 ve škole

Koncept Hayekova stroje pro řízení robotů Khepera IV

Rekurze - tvorba a zápis algoritmů v jazyce Pascal

Fyzikální praktikum č.: 2

= = 2368

Popis prostředí MOSAIC Programové prostředí MOSAIC nastavení prostředí. Po spuštění Mosaiku se objeví okno Výběr skupiny projektů

Spojování rezistorů I

5 Rekurze a zásobník. Rekurzivní volání metody

Projektové řízení a rizika v projektech

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

ZADÁVACÍ DOKUMENTACE

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

1.1.7 Rovnoměrný pohyb I

Vektorové mapy. Ing. Martin Bak, vedoucí týmu vývoje

Filtrace snímků ve frekvenční oblasti. Rychlá fourierova transformace

(Auto)korelační funkce Statistické vyhodnocování exp. dat M. Čada ~ cada

Spojování rezistorů I

- + C 2 A B V 1 V 2 - U cc

universální monitorovací program

Zadávací dokumentace

Řešení elektronických obvodů Autor: Josef Sedlák

5.3.3 Interference na tenké vrstvě

DOSTUPNÉ METODY MĚŘENÍ JÍZDNÍCH DYNAMICKÝCH PARAMETRŮ VOZIDEL

Výzva k předložení nabídek

Logaritmická rovnice

POLYMERTEST Tř.T.Bati 299, Zlín

1. SYSTÉMOVÉ POŽADAVKY / DOPORUČENÁ KONFIGURACE HW A SW Databázový server Webový server Stanice pro servisní modul...

Analýza rozptylu dvojného třídění

Standardně máme zapnutý panel nástrojů Formátování a Standardní.

přetrénování = ztráta schopnosti generalizovat vlivem přílišného zaměření klasifikátorů na rozeznávání pouze konkrétních trénovacích dat

Vzdělávání v egoncentru ORP Louny

Transkript:

2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem 1 SPECIFIKACE ÚLOHY Cílem tohoto úkolu bylo naprogramovat řešení problému batohu a to metodou dynamického programování, metodou větví a hranic a aproximativním algoritmem. Zpráva také obsahuje srovnání těchto algoritmů z hlediska časového výkonu a v případě aproximativního algoritmu pak diskuzi závislosti chyby na výpočetním času a srovnání teoretické chyby s reálně naměřenou. Více informací viz odpovídající stránka na Eduxu. 2 ROZBOR MOŽNÝCH VARIANT ŘEŠENÍ V části řešení pomocí dynamického programování jsme se mohli rozhodnout, zda problém řešit odshora s dopřednou a zpětnou fází, anebo odzdola pouze se zpětnou fází. V prvním případě bychom postupovali od cílové úlohy, ale protože potřebné podvýsledky nejsou ještě k dispozici, postupně bychom se zanořovali až k triviálním podúlohám, které bychom vyřešili. Odtud bychom zahájili zpětnou fázi a z již známých podřešení konstruovali řešení nadúloh. Já jsem zvolil řešení odzdola a mám tedy pouze zpětnou fázi. V tomto řešení začínáme řešit problém od triviálních problémů a postupně postupujeme směrem nahoru k řešení složitějších úloh za použití výsledků podúloh. Také bylo možné se rozhodnout, zda provést dekompozici podle celkové ceny nebo kapacity batohu. Zvolil jsem celkovou cenu, abych mohl řešení použít u třetí části úlohy. 3 POPIS POSTUPU ŘEŠENÍ A ALGORITMU Program nejdříve načte data ze vstupních souborů a namapuje data z textové podoby na interní objekty, jako jsou např. KnapsackInstance či KnapsackItem. 1

2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk 3.1 METODA VĚTVÍ A HRANIC (B&B) 1 1 1 1 1 1 1 1 1 1 1 1 Klíčem řešení metodou B&B je generátor kombinací, který např. pro instanci problému o velikosti třech věcí vygeneruje kombinace viz tabulka vlevo. Je to z toho důvodu, protože tato metoda je založena na optimalizaci metody hrubé síly. O vyřešení konkrétního problému se stará třída BaBKnapsackSolver, které je předána instance problému. Tento solver pracuje téměř stejně, jako BruteKnapsackSolver (viz předchozí zpráva). Základní rozdíl zde je však v tom, že při detekci kombinace, která batoh přetěžuje (nebo nemůže mít lepší cenu), dojde k odříznutí dané větve kombinací, místo toho, aby byla pouze přeskočena daná kombinace. O odřezávání se stará metoda cutbranch, která na vstupu dostává kombinaci, kterou je třeba odříznout. Příklad takové kombinace: -1-1-1--1----. Metoda nalezne poslední výskyt jedničky, čímž identifikuje kořen předmětů. V tuto chvíli již víme, že přidávání jakýchkoliv dalších předmětů nemůže batohu nijak pomoci (jak to víme, viz níže), a proto nastaví všechny tyto zbývající pozice na hodnotu 1, čímž v našem příkladu vznikne: -1-1-1--1-1-1-1-1. Toto je provedeno s ohledem na generátor kombinací, který v programu používám. Generátor kombinací dostává na vstupu kombinaci předchozí a generuje na jejím základě kombinaci následující. Ze vzniklé kombinace proto vygeneruje kombinaci -1-1-1-1-----. Jak je vidět, došlo k přeskočení všech kombinací s daným kořenem a program se přesunul ke kořenu následujícímu. Identifikace kombinace, kterou je možné odříznout, provádíme dvěma způsoby: 1. Odřezávání zdola podle ceny 2. Odřezávání shora podle váhy V prvním případě spočítáme cenu hranice, na které se právě nacházíme. Tedy zjistíme, jak nám mohou zbývající předměty zlepšit současný stav za předpokladu, že by je bylo možné použít všechny (nezávisle na jejich váze). Pakliže součet tohoto zlepšení se současnou cenou není lepší, než dosavadní nejlepší řešení, nemá smysl tuto větev řešit dále. V druhém případě pouze ověříme, zda současné předměty již batoh nepřetěžuj. Pakliže ano, logicky jakýkoliv další předmět může batoh pouze ještě více přetížit. 3.2 METODA DYNAMICKÉHO PROGRAMOVÁNÍ Základem řešení metodou dynamického programování je dvourozměrné pole, které tvoří tabulku. V této tabulce jsou na jedné ose jednotlivé předměty a na druhé všechny přípustné ceny batohu (horní hranice této osy je tedy součet všech cen předmětů dané instance problému). Obsahem tabulky jsou pak váhy. O vyřešení problému metodou dynamického programování se stará třída DynamicProgramming- KnapsackSolver. Skládá se ze dvou částí a sice: 1. Vyčíslení tabulky 2. Backtracking řešení Vyčíslení tabulky začíná na pozici [][], odkud metoda enumeratefromposition vypočte dva možné následující kroky. 2

2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk 1. Následující předmět se nepoužije 2. Následující předmět se použije V prvním případě pouze opíšeme hodnotu (váhu) do buňky napravo z té současné. V druhém případě se také posuneme na ose x o políčko doprava, ale zároveň se posuneme i na ose cen a to o hodnotu nově přidávaného předmětu. Váha bude nastavena na hodnotu výchozí buňky + váha nově přidávaného předmětu. Po tom, co vypočteme tyto dvě možnosti pro následující předmět, rekurzivně zavoláme tuto metodu znova pro dvě nově vyplněné pozice (tedy metoda vždy rekurzivně volá sebe sama dvakrát, pokud jsou tyto pozice různé). Výjimkou je, pokud současná váha předmětů již překračuje maximální váhu batohu, v tom případě již větev přidávání dalšího předmětu nevoláme pro ušetření času. 3.2.1 Kolize Problém nastává, pokud se do nějaké buňky tabulky můžeme dostat více cestami (např. součet cen předmětů 1 a 3 je stejná jako předmětů 1 a 5). V tomto případě musíme porovnat váhy jednotlivých řešení a zvolit tu nižší. 3.3 METODA FPTAS ALGORITMU Tato metoda (Polynomial-time approximation scheme) je pouze modifikací metody dynamického programování, a proto je i v kódu mého programu použita stejná řešící třída, tedy DynamicProgramming KnapsackSolver. Třída byla pouze rozšířena o nový konstruktor, přijímající hodnotu relativní chyby, jakou je klient ochotný akceptovat. Metoda FPTAS řeší problém psudopolynomiálnosti metody dynamického programování tedy to, že je složitost závislá nejen na velikosti instance, ale také je citlivá na data (velikosti cen). FPTAS metoda nám dává polynomiálně složitý algoritmus, který je závislý na relativní chybě, kterou jsme ochotni akceptovat. Implementaci je možné vidět v metodě getamountofbitsbyrelativeerror. Tato metoda spočte ze zadané relativní chyby počet bitů, které je možné zanedbat dle vzorce b = [log 2(ε.C max / n)]. Tento počet bitů je poté použit následujícím způsobem na všechny ceny předmětů: cena = cena / 2 b. Tímto dosáhneme toho, že s každým zvýšením počtu zanedbávaných bitů dojde k dvojnásobnému zmenšení ceny. Např. 4 / 2 1 = 2 a 4 / 2 2 = 1. Samotný průběh algoritmu je zcela stejný, jako když problém řešíme pomocí dynamického programování bez snižování cen. Důsledkem snížení ceny předmětů je snížení paměťové a tedy i časová náročnosti (jeden rozměr tabulky dynamického programování je dán součtem všech cen předmětů). 3

2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk 4 NAMĚŘENÉ VÝSLEDKY 4.1 HW / SW KONFIGURACE TESTOVACÍHO SYSTÉMU CPU Intel Core 2 Duo; 2.26 GHz, 2.27 GHz 4 GB RAM OS Windows 8 64-bit Java 7 4.2 ZPŮSOB MĚŘENÍ Čas byl měřen pomocí třídy ThreadMXBean a byl průměrován přes všechny instance dané velikosti. Pro úlohy příliš malé velikosti bylo měření spuštěno v cyklu vícekrát a následně vyděleno počtem běhů. Chyby cen FPTAS aproximaci oproti hrubé síly jsem počítal dle vzorce ε = ( C(OPT) - C(APX) ) / C(OPT) a chyby byly počítány průběžně, ne na finálním součtu cen. 4.3 VÝSLEDKY Počet předmětů Hrubá síla [ns] B&B [ns] dynamické programování [ns] FPTAS (ε =,3) [ns] 4 125 3122 684 574 1 11899 9366 46488 29744 15 436828 12488 7384 6279 2 16857468 717646 219254 18721 22 721616 2916186 85855 5343 25 6159543484 153816986 824621286 7987251 27 27779987 6684389 263766498 741475 Pro lepší názornost jsem vytvořil dva grafy. Jeden bez hrubé síly a jeden s ní, protože doby běhu těchto algoritmů se velmi liší. 4.3.1 Čas běhu metody větví a hranice (B&B) Metoda větví a hranic je sice úplná a její asymptotická složitost je stejně jako u hrubé síly O(2 n ), ale jak je vidět, reálně je B&B mnohem rychlejší. Složitost se nedá exaktně určit, protože je závislá na konkrétních datech (s jednou instancí se nám může podařit odříznout většinu stavového prostoru malým počtem řezů, s jinou se nám nemusí podařit odříznout nic). 4

Doba běhu [ns] Doba běhu [ns] 2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk 3E+9 Doba běhu 2,5E+9 2E+9 1,5E+9 1E+9 5-5E+8 5 1 15 2 25 3 Počet dostupných předmětů B&B dynamické programování FPTAS (.3) 3E+1 Doba běhu - včetně algoritmu hrubé síly 2,5E+1 2E+1 1,5E+1 1E+1 5E+9-5E+9 5 1 15 2 25 3 Počet dostupných předmětů hrubá síla B&B dynamické programování FPTAS (.3) 5

2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk 4.3.2 Čas běhu metody dynamického programování Metoda dynamického programování má asymptotickou složitost O(n 2 *C max), kde C max je součet všech cen předmětů a n počet předmětů k dispozici. Toto znamená, že je algoritmus polynomiální vzhledem k délce vstupu, nikoliv však k velikosti vstupu. Problém nastane, pokud dostaneme zadané vysoké ceny nebo v nediskrétní množině. Tento problém řeší následující metoda. 4.3.3 Čas běhu metody FPTAS Metoda FPTAS řeší problém možného růstu složitosti do nekonečna s cenami předmětů. Řešením je zanedbání určitého počtu bitů cen, čímž omezíme maximální možnou velikost ceny. Ztratíme tím však přesnost algoritmu, a proto je vhodné mít možnost definovat maximální povolenou chybu. Pokud použijeme pro výpočet počtu bitů k zanedbání vzorec b = log 2(ε*C max / n), který jsme odvodili ze vzorce pro výpočet relativní chyby ε = n*2 b / C max, dostaneme se ze složitosti metody dynamického programování O(n 2 *C max) na složitost O(n 3 /ε), kde již není zahrnuta instanční hodnota C max. Algoritmus je tedy plně polynomiální. Jak je vidět na grafu, při použití ε =,3 je algoritmus rychlejší i než B&B. 4.3.4 Závislost chyby na zvolené nepřesnosti ε relativní povolená nepřesnost ε Počet,1,2,3,4,5,6,7,8,9 1 dostupných předmětů 4,1,29,4,58,136,174,22,298,339,385 1,1,12,34,72,152,193,216,343,52,641 15,2,11,42,76,141,224,261,296,339,551 2,1,9,32,62,13,178,194,219,337,542 22,2,7,25,46,13,185,192,223,279,579 25,2,6,24,44,1,172,215,274,327,6 27,1,4,26,5,12,183,199,243,283,578 Je vidět, že je přímo úměrná (polynomiálně) nastavené nepřesnosti ε. 6

Relativní 2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk,7 Závislost chyby na zvolené nepřesnosti ε,6,5,4,3,2,1 4 1 15 2 22 25 27 Počet dostupných předmětů,1,2,3,4,5,6,7,8,9 1 4.3.5 Závislost výpočetního času na zvolené nepřesnosti ε Doba běhu [ns] povolená nepřesnost ε Počet,1,2,3,4,5,6,7,8,9 1 dostupných předmětů 4 5865 5772 574 5725 579 5647 5616 5599 558 4 555 3 1 29952 29865 29744 2964 2953 5 15 6396 63123 6279 624 6162 2 399362 29952 1 22 2979619 16224 1 25 73694872 3326 594 27 538983455 27456 176 1872 1 534 3 79872 51 741 475 14352 4212 2 48672 31 4848 38 1372 8 288 1 1372 88 678 43 2943 2 6123 1248 2184 1 4368 2 156 1 2922 2 684 1185 6 1872 1 3744 2 144 9 2912 5967 1184 54 1716 1 3334 22 1248 8 29 16 594 35 112 499 156 1 312 2 624 4 287 4 581 1 112 32 14 4 249 61 78 5 7

Doba běhu [ns] 2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk Pro lepší názornost jsem do grafu zahrnul pouze tři různé velikosti instancí. Z naměřených hodnot a grafu je vidět, že se zvýšením povolené nepřesnosti ε o,1 dojde přibližně k dvojnásobnému zrychlení výpočtu. 6 Závislost výpočetního času na zvolené nepřesnosti ε 5 4 3 2 1 22 25 27 Počet dostupných předmětů,1,2,3,4,5,6,7,8,9 1 4.3.6 Srovnání skutečné chyby (naměřené) s teoreticky předpokládanou (vypočtenou) povolená nepřesnost ε předpokládaná instance velikosti 1 instance velikosti 22 skutečná zanedbaných bitů (vypočteno na základě ε) předpokládaná skutečná zanedbaných bitů (vypočteno na základě ε),1,138,1 4,128,2 3,2,277,12 5,256,7 4,3,439,34 5,492,25 5,4,554,72 6,513,46 5,5,761,152 6,738,13 6,6,879,193 6,985,185 6,7,971,216 6,998,192 6,8 1,19,343 7 1,26,196 6,9 1,314,52 7 1,114,279 7 1 1,522,641 7 1,477,579 7 8

Skutečná (naměřená) 2. 1. 213 MI-PAA úkol č. 2 Antonín Daněk Jak je vidět, poměr skutečné chyby k vypočtené (dle vzorce ε = n*2 b / C max) je přibližně stejný jak pro velké, tak pro malé instance. Skutečná je mnohem menší, než ta předpokládaná.,7 Srovnání skutečné chyby (naměřené) s teoreticky předpokládanou (vypočtenou),6,5,4,3 instance velikosti 1 instance velikosti 22,2,1,2,4,6,8 1 1,2 1,4 1,6 Předpokládaná (vypočtená) 5 ZÁVĚR Ačkoliv teorie naznačuje něco jiného, na základě měření je v případě problému batohu metoda B&B rychlejší, než dynamické programování. To se stane rychlejším jen při kombinaci s metodou FPTAS a smířením se s určitou úrovní relativní chyby. Několik zjištění stran metody FPTAS a nastavené nepřesnosti ε: 1. FPTAS dělá z pseudopolynomiální složitosti dynamického programování plně polynomiální. 2. Nastavení větší přesnosti (snížení ε) FPTAS zvýší dobu výpočtu, avšak tato závislost je nanejvýš polynomiální (dle měření jde o dvojnásobek). Toto se děje proto, že s každým dalším zanedbaným bitem dojde k zmenšení stavového prostoru o polovinu oproti předchozímu stavu. 3. FPTAS je silným nástrojem především tehdy, když potřebujeme diskretizovat optimalizační kritérium (cena s desetinou čárkou). 4. I malé množství zanedbaných bitů může velmi urychlit výpočet při zachování dobré kvality výsledků. Např. při zanedbání 5 bitů (ε=,3 u instancí velikosti 22 s danými cenami) došlo k relativní chybě pouze,25, avšak zrychlení výpočtu je přibližně 17x. 9