Search
Stránka není kompletní, na stránce se pracuje!!!
Vaším úkolem v této semestrální práci bude vybrat si či navrhnout vlastní optimalizační algoritmus pro black-box minimalizaci reálných funkcí. Odevzdávat budete
Za tuto úlohu lze získat až 30 bodů:
Šablony používají 2-sloupcový formát a poměrně malá písma, na celý report by vám měly stačit 1-2 strany. Na reportu budu hodnotit následující:
V archivu najdete 2 adresáře:
AUIProject
matlab
K vypracování reportu použijte jednu z šablon (pro Word a LaTeX).
V archivu najdete kompletní projekt v Netbeans. Tento projekt obsahuje jedinou třídu s metodou main - třídu TestRunner. Tato třída v zásadě definuje, jaké optimalizátory a jaké testovací problémy se mají použít, vytváří instance jednotlivých optimalizátorů a aplikuje je postupně na všechny testovací problémy. Pro každou kombinaci algoritmus-problém vytvoří jeden soubor se statistikami (přípona .sts), které se dále zpracovávají v MATLABu.
main
TestRunner
.sts
Po dokončení běhu testovacího frameworku si můžete výsledky prohlédnout. Zkopírujte všechny .sts soubory z adresáře projektu Netbeans do adresáře se soubory MATLABu a spusťte skript scrCompareAlgorithms.m. Tento skript uspořádá turnaj všech algoritmů způsobem každý s každým. Jinými slovy, pro každou dvojici algoritmů spočítá na kolika problémech byl lepší první algoritmus a na kolika druhý. Vytvoří tzv. performance matrix, PM, takovou, že prvek PM(i,j) udává, na kolika problémech byl i-tý algoritmus lepší než j-tý. K rozhodnutí, zda jsou výsledky jednoho algoritmu lepší než druhého, se používá neparametrický Wilcoxon-Mann-Whitneyho U test, jak je implementován ve funkci ranksum v MATLABu.
scrCompareAlgorithms.m
Z hodnot v PM se vypočte celkové skóre algoritmu jako počet problémů, na nichž jiné algoritmy porazil, mínus počet problémů, na nichž byl jinými algoritmy poražen (tj. řádkový součet PM mínus sloupcový součet PM). Na základě tohoto skóre se vypočte pořadí algoritmů.
Skript následně spustí GUI tzv. ResultBrowseru, v němž můžete jednotlivé dvojice algoritmů na jednotlivých problémech vizuálně porovnávat.
Vaším úkolem je naimplementovat (a následně odevzdat) třídu, která bude dědit od abstraktní třídy auiproject.AbstractOptAlgInstance. Minimálně musíte definovat její 3 metody:
auiproject.AbstractOptAlgInstance
initialize()
finish()
step()
Svou třídu (např. MySuperTrooperSolver) umístěte do balíku auiproject.alg. Aby o ní testovací framework věděl, musíte její plně kvalifikované jméno (auiproject.alg.MySuperTrooperSolver) přidat v metodě main() třídy TestRunner do seznamu solvers.
MySuperTrooperSolver
auiproject.alg
auiproject.alg.MySuperTrooperSolver
main()
solvers
Další detaily o implementaci frameworku najdete přímo ve zdrojových kódech jako javadoc.
javadoc