EVO: cvičení 2 - Optimalizace pomocí genetického algoritmu



V rámci této laboratorní úlohy budeme využívat obvodový simulátor NGSPICE. Obraz distribuce Linux Mint, kterou použijeme v prostředí VirtualBox, již obsahuje vše potřebné. Alternativně je možné použít vlastní notebook. Pokud vám v tom případě bude chybět instalace simulátoru NGSPICE, lze postupovat např. dle návodu níže:
  1. https://sourceforge.net/projects/ngspice/
  2. ./configure --prefix=$HOME/ngspice --with-ngshared
  3. make
  4. make install


Je zadán elektrický obvod, máme za úkol nastavit hodnoty součástek tak, aby bylo dosaženo určité chování.

http://www.falstad.com/circuit/...

Můžeme měnit hodnoty rezistorů R1, R2, Rc, Re a kondenzátorů Cin, Cout, Ce.
Jedná se o zesilovač s jedním bipolárním tranzistorem, vstupem je signál s malou amplitudou, na výstupu chceme sinusový signál s amplitudou 2 V.

Genetické algoritmy - princip


Řešená úloha

Program na stderr vypisuje průběžné údaje (fitness v populaci, nejlepší jedinec).
Po doběhnutí zobrazí průběhy výstupního signálu u nejlepších jedinců z poslední generace ve formátu pro gnuplot. Př.:
make gnuplot:
        ./evo2 | gnuplot - --persist


Fitness funkce?

Každého jedince ohodnotíme pomocí simulace v NGSPICE. Výsledkem simulace je diskrétní řada vzorků (3 periody) fce[x]. Chceme vyhodnotit, jak moc se blíží ideálnímu průběhu -2sin(x).
Výsledek simulace musíme přepočítat na fitness!

  1. Stáhněte si archív se zdrojovým kódem:
  2. Dodělejte fitness funkci (vyzkoušejte více variant).
  3. Jakou největší amplitudu je schopna evoluce získat?
  4. Experimentujte s nastavením parametrů. Nalezněte správné řešení obvodu (= sinusovka, 2 V)!
  5. Nalezněte takové nastavení parametrů a fitness, aby algoritmus nacházel správná řešení opakovaně.