KOVÁČ, O. Knihovna pro kartézské genetické programování v jazyce Python [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2025.
Student ve své práci splnil zadání a navrhl a implementoval výpočetně efektivní knihovnu pro kartézské genetické programování v jazyce Python. Efektivita knihovny byla experimentálně ověřena a porovnána s volně dostupnými alternativami, přičemž dosáhla velmi dobrých výsledků. S ohledem na dosažené výsledky a aktivní přístup studenta v průběhu roku navrhuji celkové hodnocení stupněm B – velmi dobře .
| Kritérium | Známka | Body | Slovní hodnocení |
|---|---|---|---|
| Informace k zadání | Cílem této práce bylo prostudovat problematiku kartézského genetického programování (CGP) a efektivních způsobů provádění výpočetně náročných operací v programovacím jazyce Python. Na základě získaných poznatků pak bylo za úkol navrhnout a implementovat knihovnu pro CGP v jazyce Python. Implementaci pak bylo potřeba ověřit, experimentálně vyhodnotit z hlediska výpočetní efektivity a porovnat s volně dostupnými řešeními. Zadání této práce hodnotím jako středně obtížné. Základní návrh a implementace CGP knihovny nepředstavují zásadní technický problém. Náročným se však stává vytvoření takového řešení, které bude nejen snadno použitelné, ale zároveň efektivní natolik, aby umožňovalo řešení reálných, výpočetně náročných úloh. | ||
| Práce s literaturou | Student aktivně vyhledával relevantní zdroje, které vhodně využil. | ||
| Aktivita během řešení, konzultace, komunikace | Student po celou dobu řešení práce pracoval aktivně a samostatně navrhoval vlastní postupy řešení zadaných úkolů. Konzultací se účastnil pravidelně a vždy na ně byl pečlivě připraven. | ||
| Aktivita při dokončování | Student na tématu pracoval průběžně a text byl opakovaně konzultován, včetně finální verze. Finální podoba technické zprávy však vznikla až několik dní před odevzdáním. | ||
| Publikační činnost, ocenění | Publikační činnost není známa. |
Text práce je na vysoké úrovni, po implementační stránce je knihovna funkční. Autor neimplementoval CGP jednoduše, ale správně identifikoval a řešil kritické body návrhu, jako jsou generátory náhodných čísel či vhodná vektorizace. I přes drobné slabiny v evaluaci a v absenci automatického testování navrhuji souhrnné hodnocení stupněm B - velmi dobře .
| Kritérium | Známka | Body | Slovní hodnocení |
|---|---|---|---|
| Náročnost zadání | |||
| Rozsah splnění požadavků zadání | |||
| Rozsah technické zprávy | Text práce je na 81 vysázených stranách, což mírně přesahuje rozsah. Autor se v prvních 10 stranách věnuje obecné problematice genetického programování (CGP), což je z pohledu práce zbytečné. Více bych ocenil podrobnější analýzu existujících knihoven pro CGP a další implementace evolučních algoritmů v jazyce Python. | ||
| Prezentační úroveň technické zprávy | 95 | Práce je psaná srozumitelně a má adekvátní strukturu. Kapitoly na sebe navazují a text je pochopitelný. | |
| Formální úprava technické zprávy | 85 | Práce neobsahuje závažnější formální ani typografické nedostatky. Je psána dobrou angličtinou. Při prezentování grafů, zejména konvergenčních křivek (např. 6.10 a 6.11), bych doporučoval volit logaritmické měřítko osy x. | |
| Práce s literaturou | 85 | Vybraná literatura je adekvántní, autor se v textu na zdroje řádně odkazuje a převzaté části jsou jasně odlišeny. Slabinou je to, že teoretické jádro implementační části (kapitola 3.5 o efektivní implementaci v Cython) vychází pouze z jednoho zdroje. | |
| Realizační výstup | 80 | Autor ve své práci implementoval a vyhodnotil knihovnu pro kartézské genetické programování umožňující prohledávání řešení (návrh funkce) pro symbolickou regresi či číslicové obvody. Výkonnost je porovnána s dalšími implementacemi a i když navržená aplikace nedosahuje takové výkonnosti jak C++ implementace, je velmi rychlá a překonává často používané HAL-CGP. Knihovna je dobře dokumentovaná, v rámci zdrojových kódů můžeme najít šablony pro různé případy užití. Přestože je implementace na vysoké úrovni, chybí mi pro knihovnu zahrnutí technik CI/CD pro tvorbu udržitelného kódu. Pro knihovnu a její základní části není implementováno automatické testování (např. pomocí pytest), což by v kombinaci s dalšími moderními technikami jako je Github Workflows mohlo zaručit, že knihovna bude funkční (a otestovaná) i pro další verze Pythonu i podpůrných knihoven. Podobně by se dala řešit i automatická publikace knihovny v systému PyPi či pro nástroj pip. Autor testoval knihovnu na různých scénářích řešeného problému. Nicméně vše bylo testováno v jedné konfiguraci systému (Ubuntu Linux) s konkrétní verzí Pythonu a knihoven. Ocenil bych obsáhlejší testování jak pro různé verze zejména knihovny Numpy, tak i pro systém Windows. | |
| Využitelnost výsledků | Přestože existují i rychlejší implementace, navržené řešení přejímá výhody jazyka Python a mohlo by si najít své místo jak při výukových, tak i výzkumných účelech. Po doplnění automatického testování a případně i dalších variant výpočtu fitness funkcí (např. s využitím formální verifikace, či podporou dalších scénářů fitness jako je injekce chyb) by knihovna mohla být publikována jako open-source software. |
eVSKP id 162986