GeneticSim
Na problémy evolučně
V červencovém Chipu jsme v obecném příspěvku o genetických algoritmech slíbili, že se také podíváme na konkrétní software, který této zajímavé disciplíny využívá k praktickým výpočtům. Závazek plníme zprávou o původním českém programu GeneticSim od firmy Ing. Viktor Janouch.

Kořeny genetických algoritmů sahají vlastně až do devatenáctého století, kdy Charles Darwin sepsal a publikoval svou evoluční teorii a Georg Mendel formuloval genetické zákonitosti křížení rostlin. Patří k nádherným paradoxům vědy, že se jejich myšlenky o sto let později nemalou měrou podílejí na vývoji a aplikacích umělé inteligence, tedy oboru, o němž oba ve své době nemohli mít ani tušení.

Trocha teorie
Princip evolučních algoritmů v umělé inteligenci spočívá v tom, že se cyklicky tvoří tzv. generace nových jedinců a z nich přežívají a vítězí v konkurenci při tvorbě nových potomků jen ti nejlepší. Tím je zajištěn vývoj daného druhu. Tyto principy byly “zmatematizovány" a používají se na řešení mnohých problémů, klasickými cestami mnohdy obtížně řešitelných. Vývoj, který na Zemi probíhal miliony let, jsme dnes schopni simulovat na počítačích ve zjednodušených modelech během několika dnů či hodin a využít jej i pro řešení velmi komplikovaných problémů, jako je např. volba optimální trajektorie robota apod. 
Do třídy evolučních algoritmů patří také genetické algoritmy, které byly odvozeny nejen na základě teorie evoluce, jež ovlivňuje vývoj všeho živého na této planetě, ale také biologické genetiky. Při vývoji jednotlivých druhů mají geny veliký význam. Základem všeho je DNA – deoxyribonukleová kyselina, ve které je zakódován kompletní popis daného jedince. (Jak víme, nedávno se vědci pochlubili, že už tento popis znají pro člověka...). Věnujme tomuto obdivuhodnému kódovacímu systému matky přírody alespoň odstaveček.
DNA je dlouhý molekulární řetězec tvořený monotónní páteří (…deoxyribóza – fosfát – deoxyribóza…), na jejíchž deoxyribózových článcích jsou navěšeny čtyři odlišné báze. Uspořádání těchto složek reprezentuje genetický kód. Dva takové řetězce DNA jsou prostřednictvím protilehlých, k sobě přiléhajících bází vzájemně spojeny (vždy adenozin s tymidinem a guanozin s cytidinem). Posloupnost článků jednoho z řetězců je tak vždy “zrcadlovým obrazem” druhého. Díky tomu může sloužit jeden řetězec jako matrice k nové syntéze komplementárního řetězce s identickým informačním obsahem (replikace). Dvojité šroubovice DNA (helix, až 7 cm dlouhé) jsou ovšem svinuty a složeny do záhybů, čímž vznikají 10 m dlouhé chromozomy. 
Také u genetických algoritmů v počítačovém prostředí se setkáváme s pojmy, které jsou běžné v biologii – např. chromozom se skládá s tzv. genů, které coby kompletní genetický popis organismu tvoří tzv. genotyp. V souvislosti s genotypem se ještě uvádí i tzv. fenotyp, který je v podstatě fyzickým projevem genotypu (např. jestliže je v binárním pojetí genotyp “0101”, pak fenotyp je jeho dekadická hodnota, tedy 5). 
Tolik co nejstručněji k základním pojmům z biologické genetiky a pojďme už k principům, na nichž je založena činnost programu GeneticSim. 

GeneticSim
GeneticSim je určen k vyhledávání řešení a optimalizaci systémů, které lze popsat libovolným množstvím parametrů a vzájemných vztahů. Tyto vztahy mohou být lineární nebo nelineární. Princip výpočtu spočívá v aplikaci genetického algoritmu, který simuluje biologický vývoj, tedy náhodný výběr (selekci), křížení a mutaci. Tyto postupy představují velmi silný a robustní vyhledávací algoritmus a takový je i princip hledání řešení pomocí programu GeneticSim. Jeho uživatel postupně provádí tyto kroky:

1. Definuje základní parametry systému (znaky), jimiž mohou být různé proměnné popisující daný problém.
2. Definuje další parametry vycházející ze základních parametrů (znaků) s využitím matematických operací (sčítání, odčítání, násobení, dělení, mocnina, přirozený a dekadický logaritmus).
3. Definuje vlastní podmínky pro hledané řešení (hodnoty jednotlivých znaků). Těmito podmínkami se rozumí rozsah hodnot pro základní parametry (znaky), omezení pro další parametry, popř. stanovení jejich optimality. Tímto souborem podmínek se nadefinuje a popíše celý systém. Cílem je najít takovou množinu znaků (hodnoty základních parametrů – proměnných), které umožní jedincům (hodnoty ostatních parametrů vycházejících ze základních znaků) splnit veškerá omezení a podmínky systému, příp. dosáhnout optimálního nebo suboptimálního řešení. Celý proces vývoje jednotlivých generací lze po spuštění výpočtu sledovat, je možné prohlížet dílčí řešení, zobrazit konkrétní situaci o plnění zadaných mezí a řadu dalších informací. 
Program GeneticSim nachází uplatnění v nejrůznějších oblastech a oborech; pro začátečníky je v něm kvůli přiblížení možností programu připravena řada příkladů. Nejčastěji je produkt využíván v oblasti finanční analýzy a finančního plánování (součástí programu jsou již předdefinované šablony tabulek rozvahy a výkazu zisků a ztrát), v matematice (hledání řešení soustav nelineárních rovnic a nerovnic), v oblasti optimalizace výrobního procesu a v dalších systémech, které lze popsat soustavou parametrů a vztahů mezi nimi.
Instalace programu je velmi jednoduchá. Po vložení CD stačí jen spustit program setup.exe, který je plně profesionální a odpovídá úrovni dnešních instalačních procedur. Po nainstalování program ovšem vyžaduje zadání poměrně dlouhého licenčního hesla (více než 50 znaků!), takže pozor na překlepy.
Po spuštění se objeví prostičké základní uživatelské rozhraní (obr. 1), které obsahuje několik základních menu zahrnujících jak standardní sady funkcí, jako je např. Help či práce se soubory, tak i speciální funkce, umožňující přístup více uživatelů a jednoduchou správu souborů. 
Vlastní řešení problémů se pak skládá z několika logicky navazujících kroků. V prvním je potřeba nadefinovat novou vstupní tabulku (obr. 2), která slouží k zadání základních dat, z nichž bude prováděn další výpočet. Vytvoření vstupní tabulky může proběhnout několika způsoby. Data lze vkládat ručně, nebo pomocí obecného importu dat. Pokud data pocházejí z výstupu tabulkových procesorů, popř. z databázového souboru typu dbf, můžete data importovat přímo z těchto souborů.
Poté následuje výpočet, který lze provést buď za asistence průvodce, nebo standardní cestou. Předem je však ještě nutno nadefinovat potřebné množství a počet parametrů, které daný problém jednoznačně určují. Přitom je nutné pečlivě uvážit a správně specifikovat charakter parametrů, např. je-li daný parametr přirozené číslo, nebo ne a v jakých intervalech se může pohybovat. Toto omezení je velmi důležité, protože bez něj by evoluční šlechtění mohlo vést k fyzikálně nerealizovatelnému řešení (např. záporná tloušťka tlakové nádoby, u níž byly minimalizovány výrobní náklady, apod.)
Pokud byste si zpočátku nevěděli rady, najdete v programu GeneticSim kromě nápovědy a průvodců také bohatou škálu demonstračních příkladů z různých oblastí průmyslu a vědy, které názorně předvedou schopnost tohoto programového produktu řešit i značně složité problémy a mohou posloužit i jako velmi praktický návod, jak program využít.

Závěr
Program GeneticSim je zcela určitě kvalitní program, který nabízí uživateli možnost řešit optimalizační problémy metodou, která je velmi moderní, ale hlavně také robustní ve smyslu nalezení velmi dobrého řešení. Výhodou aplikovaného genetického algoritmu je hlavně jeho univerzálnost, umožňující řešit různorodé problémy “tímtéž” způsobem. Ať tedy máte problém z oblasti financí, letecké aerodynamiky či chemie, GeneticSim k nim přistupuje de facto stejně.
Program ovšem nejen přináší kvalitu, ale zároveň také zaplňuje jistou mezeru na trhu programů určených pro optimalizaci. Lze ho doporučit nejen expertům, ale také každému, kdo potřebuje řešit své problémy efektivně, elegantně a kvalitně.
Ivan Zelinka (zelinka@zlin.vutbr.cz)

GeneticSim
Optimalizační program využívající genetických algoritmů pod Windows 9x/NT/2000
Hardwarové nároky: počítač pro Windows
Výrobce/poskytl: Ing. Viktor Janouch, Hradec Králové
Cena: 4900 Kč (bez DPH)