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.

Posudky

Posudek vedoucího

Hurta, Martin

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 .

Dílčí hodnocení
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.
Navrhovaná známka
B
Body
85

Posudek oponenta

Mrázek, Vojtěch

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 .

Dílčí hodnocení
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.
Navrhovaná známka
B
Body
85

Otázky

eVSKP id 162986