• No results found

Competitive Coevolution in Cartesian Genetic Programming

N/A
N/A
Protected

Academic year: 2021

Share "Competitive Coevolution in Cartesian Genetic Programming"

Copied!
48
0
0

Loading.... (view fulltext now)

Full text

(1)

VYSOK ´

E U ˇ

CEN´I TECHNICK ´

E V BRN ˇ

E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ

CN´ICH TECHNOLOGI´I

´

USTAV PO ˇ

C´ITA ˇ

COV ´

YCH SYST ´

EM ˚

U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS

SOUT ˇ

E ˇ

ZIV ´

A KOEVOLUCE V KART ´

EZSK ´

EM

GENETICK ´

EM PROGRAMOV ´

AN´I

BAKAL ´

A ˇ

RSK ´

A PR ´

ACE

BACHELOR’S THESIS

AUTOR PR ´

ACE

BARBORA SK ˇ

RIV ´

ANKOV ´

A

AUTHOR

(2)

VYSOK ´

E U ˇ

CEN´I TECHNICK ´

E V BRN ˇ

E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ

CN´ICH TECHNOLOGI´I

´

USTAV PO ˇ

C´ITA ˇ

COV ´

YCH SYST ´

EM ˚

U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS

SOUT ˇ

E ˇ

ZIV ´

A KOEVOLUCE V KART ´

EZSK ´

EM

GENETICK ´

EM PROGRAMOV ´

AN´I

COMPETITIVE COEVOLUTION IN CARTESIAN GENETIC PROGRAMMING

BAKAL ´

A ˇ

RSK ´

A PR ´

ACE

BACHELOR’S THESIS

AUTOR PR ´

ACE

BARBORA SK ˇ

RIV ´

ANKOV ´

A

AUTHOR

VEDOUC´I PR ´

ACE

Ing. MICHAELA ˇ

SIKULOV ´

A

SUPERVISOR

(3)

Abstrakt

Symbolick´a regrese je metoda hled´an´ı pˇredpis˚u funkc´ı, kter´e co nejpˇresnˇeji proch´az´ı dan´ymi body v rovinˇe nebo prostoru. V t´eto pr´aci je ˇreˇsena symbolick´a regrese s vyuˇzit´ım kart´ezsk´ e-ho genetick´eho programov´an´ı a soutˇeˇziv´e koevoluce. Tato ´uloha byla jiˇz dˇr´ıve ˇreˇsena po-moc´ı kart´ezsk´eho genetick´eho programov´an´ı a koevoluce prediktor˚u fitness. V t´eto pr´aci je zkoum´ano, zda-li jednoduˇsˇs´ı soutˇeˇziv´a koevoluce dok´aˇze dos´ahnout obdobn´ych v´ysledk˚u jako koevoluce prediktor˚u fitness. Symbolick´a regrese je v t´eto pr´aci testov´ana na pˇeti r˚uznˇe sloˇzit´ych ´uloh´ach. Pˇri testov´an´ı se uk´azalo, ˇze pˇri ˇreˇsen´ı jednoduˇsˇs´ıch ´uloh dosahuje soutˇeˇziv´a koevoluce oproti klasick´emu kart´ezsk´emu genetick´emu programov´an´ı v´yraznˇe vyˇsˇs´ıho zrychlen´ı neˇz koevoluce prediktor˚u fitness. Sloˇzitˇejˇs´ı ´ulohy, ve kter´ych koevoluce prediktor˚u fitness obst´ala stejnˇe dobˇre jako v jednoduˇsˇs´ıch, vˇsak soutˇeˇziv´a koevoluce vyˇreˇsit nedok´azala.

Abstract

Symbolic regression is a function formula search approach dealing with isolated points of the function in plane or space. In this thesis, the symbolic regression is performed by Cartesian Genetic Programming and Competitive Coevolution. This task has already been resolved by Cartesian Genetic Programming using Coevolution of Fitness Predictors. This thesis is concerned with comparison of Coevolution of Fitness Predictors with simpler Competitive Coevolution approach in terms of approach effort. Symbolic regression has been tested on five functions with different complexity. It has been shown, that Competitive Coevolution accelerates the symbolic regression task on plainer functions in comparison with Coevolution of Fitness Predictors. However, Competitive Coevolution is not able to solve more complex functions in which Coevolution of Fitness Predictors succeeded.

Kl´ıˇ

cov´

a slova

Symbolick´a regrese, evoluˇcn´ı algoritmy, kart´ezsk´e genetick´e programov´an´ı, koevoluce.

Keywords

Symbolic regression, evolutionary algorithms, cartesian genetic programming, coevolution.

Citace

Barbora Skˇriv´ankov´a: Soutˇeˇziv´a koevoluce v kart´ezsk´em

(4)

Soutˇ

ziv´

a koevoluce v kart´

ezsk´

em

genetick´

em programov´

an´ı

Prohl´

sen´ı

Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracovala samostatnˇe pod veden´ım Ing. Michaely ˇ

Sikulov´e.

. . . . Barbora Skˇriv´ankov´a

31. ˇcervence 2014

Podˇ

ekov´

an´ı

Na tomto m´ıstˇe bych r´ada podˇekovala svoj´ı vedouc´ı Ing. Michaele ˇSikulov´e za precizn´ı konzultace pln´e cenn´ych rad pro vypracov´an´ı t´eto pr´ace a v neposledn´ı ˇradˇe tak´e za ochotu pravidelnˇe konzultovat i za zt´ıˇzen´ych podm´ınek zp˚usoben´ych studijn´ım pobytem 2 000 km od univerzity.

© Barbora Skˇriv´ankov´a, 2014.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.

(5)

Obsah

1 Uvod´ 3

2 Teoretick´y z´aklad pr´ace 4

2.1 Evoluˇcn´ı algoritmy . . . 4

2.1.1 Terminologie . . . 4

2.1.2 Princip evoluˇcn´ıho algoritmu . . . 5

2.1.3 Genetick´y algoritmus. . . 7

2.1.4 Genetick´e programov´an´ı . . . 8

2.2 Kart´ezsk´e genetick´e programov´an´ı . . . 9

2.2.1 Definice CGP . . . 9

2.2.2 Genotyp-fenotyp mapov´an´ı . . . 12

2.3 Koevoluce . . . 12

2.3.1 Probl´emy ˇreˇsen´e s pomoc´ı koevoluce . . . 12

2.3.2 Princip koevoluce pro probl´emy zaloˇzen´e na testech . . . 13

2.3.3 Princip koevoluce prediktor˚u fitness . . . 15

2.4 Symbolick´a regrese . . . 15

3 N´avrh 16 3.1 Evoluce kandid´atn´ıch ˇreˇsen´ı . . . 16

3.1.1 Kandid´atn´ı ˇreˇsen´ı . . . 16

3.1.2 Generov´an´ı poˇc´ateˇcn´ı populace . . . 17

3.1.3 Hled´an´ı aktivn´ıch uzl˚u . . . 18

3.1.4 Spuˇstˇen´ı kandid´atn´ıho programu nad tr´enovac´ım vektorem . . . 18

3.1.5 Vyhodnocen´ı fitness . . . 18

3.1.6 V´ybˇer rodiˇc˚u . . . 19

3.1.7 Vytv´aˇren´ı nov´e generace . . . 19

3.2 Evoluce podmnoˇzin mnoˇziny vˇsech tr´enovac´ıch vektor˚u. . . 20

3.2.1 Test . . . 20

3.2.2 Archivy . . . 20

3.2.3 Vyhodnocen´ı fitness . . . 21

3.2.4 V´ybˇer rodiˇc˚u . . . 21

3.2.5 Vytv´aˇren´ı nov´e generace . . . 21

4 Implementace 23 4.1 Paralelizace . . . 23

4.2 Generov´an´ı pseudon´ahodn´ych ˇc´ısel . . . 24

4.3 Form´at vstupn´ıch soubor˚u . . . 24

(6)

4.3.2 Soubor s tr´enovac´ımi vektory . . . 25

4.4 Naˇc´ıt´an´ı vstupu. . . 25

4.5 Z´aznamy statistick´ych dat . . . 25

4.6 V´ypis ˇretˇezce ˇreˇsen´ı . . . 26

4.7 Kompilace a spuˇstˇen´ı. . . 26

5 Experiment´aln´ı vyhodnocen´ı 27 5.1 Nastaven´ı evoluce kandid´atn´ıch ˇreˇsen´ı . . . 27

5.2 Nastaven´ı evoluce test˚u . . . 29

5.3 Skripty pro testov´an´ı a vyhodnocov´an´ı . . . 29

5.4 Posuzovan´a krit´eria a v´ysledky . . . 31

5.4.1 Funkce f1 . . . 31 5.4.2 Funkce f2 . . . 31 5.4.3 Funkce f3 . . . 32 5.4.4 Funkce f4 . . . 33 5.4.5 Funkce f5 . . . 33 5.5 Shrnut´ı v´ysledk˚u . . . 34 6 Z´avˇer 35 A Obsah CD 37 B Grafy s rozˇs´ıˇren´ymi v´ysledky test˚u 38 B.1 Grafy k v´ybˇeru parametr˚u koevoluce . . . 38

B.2 Grafy k v´ysledk˚um testov´an´ı pro jednotliv´e funkce . . . 42

B.2.1 Funkce f1 . . . 42

B.2.2 Funkce f2 . . . 42

B.2.3 Funkce f3 . . . 43

B.2.4 Funkce f4 . . . 43

(7)

Kapitola 1

´

Uvod

V pr˚ubˇehu v´yvoje informaˇcn´ıch technologi´ı byly v´ypoˇcetn´ı n´astroje schopny ˇreˇsit sloˇzitˇejˇs´ı a sloˇzitˇejˇs´ı ´ulohy. Aˇz do dneˇsn´ı doby v´ykon hardwarov´ych komponent st´ale roste a tento trend nejsp´ıˇse bude nad´ale pokraˇcovat. V takov´e situaci je tˇreba vˇenovat se algoritm˚um, kter´e jsou schopny tˇechto pokrok˚u vyuˇz´ıt a dok´aˇz´ı hledat ˇreˇsen´ı probl´em˚u ve vˇetˇs´ıch a vˇetˇs´ıch prohled´avac´ıch prostorech. Jedn´ım z typ˚u tˇechto algoritm˚u jsou evoluˇcn´ı algo-ritmy, kter´ym je vˇenov´ana tato pr´ace.

Problematikou, kter´a je za pomoci evoluˇcn´ıch algoritm˚u v t´eto pr´aci ˇreˇsena, je symbo-lick´a regrese, tedy hled´an´ı pˇredpis˚u funkc´ı proch´azej´ıc´ıch mnoˇzinou izolovan´ych bod˚u. Kou-zlo symbolick´e regrese je v tom, ˇze hled´an´ı funkˇcn´ıch pˇredpis˚u je prov´adˇeno bez rozs´ahl´ych v´ypoˇct˚u. Lze ji tedy uplatnit i v laboratoˇr´ıch, kde nen´ı nutn´a znalost sloˇzit´ych v´ypoˇcetn´ıch metod. Prostor vˇsech moˇzn´ych ˇreˇsen´ı je systematicky prohled´av´an, dokud nen´ı nalezeno dostaˇcuj´ıc´ı ˇreˇsen´ı. Zp˚usoby optimalizace prohled´av´an´ı prostoru ˇreˇsen´ı jsou v souˇcasn´e dobˇe pˇredmˇetem v´yzkumu a tato pr´ace je vˇenov´ana pr´avˇe jednomu z nich – kart´ezsk´emu gene-tick´emu programov´an´ı s vyuˇzit´ım soutˇeˇziv´e koevoluce.

C´ılem t´eto pr´ace je sezn´amit se s problematikou evoluˇcn´ıch algoritm˚u, kart´ezsk´eho ge-netick´eho programov´an´ı a symbolick´e regrese. Na z´akladˇe tˇechto znalost´ı navrhnout a im-plementovat program ˇreˇs´ıc´ı symbolickou regresi jak pomoc´ı standardn´ıho kart´ezsk´eho ge-netick´eho programov´an´ı, tak s vyuˇzit´ım soutˇeˇziv´e koevoluce. Vytvoˇren´y program na sadˇe vybran´ych funkc´ı otestovat a v´ysledky porovnat s jin´ymi, dˇr´ıve vyzkouˇsen´ymi, metodami koevoluce v kart´ezsk´em genetick´em programov´an´ı.

Tato pr´ace je ˇclenˇena do ˇsesti kapitol. Kapitola 2 se zab´yv´a teoretick´ym z´akladem evoluˇcn´ıch algoritm˚u. V pr´aci jsou potom k ˇreˇsen´ı problematiky symbolick´e regrese (2.4) vyuˇzity algoritmy popsan´e v t´eto kapitole – algoritmus kart´ezsk´eho genetick´eho programo-v´an´ı (2.2), genetick´y algoritmus (2.1.3) a koevoluˇcn´ı mechanismy (2.3).

Kapitola3je podrobnˇe vˇenov´ana n´avrhu praktick´e ˇc´asti t´eto pr´ace – programu ˇreˇs´ıc´ımu symbolickou regresi. Je rozdˇelena do dvou ˇc´ast´ı –3.1, kter´a se vˇenuje algoritm˚um vybran´ym pro jednotliv´e f´aze kart´ezsk´eho genetick´eho programov´an´ı a 3.2, kter´a se vˇenuje v´ybˇeru algoritm˚u pro jednotliv´e f´aze genetick´eho algoritmu a koevoluce. Na tuto kapitolu navazuje kapitola 4, kter´a je vˇenov´ana implementaci. Je zde pops´ano ˇreˇsen´ı nˇekter´ych sloˇzitˇejˇs´ıch ot´azek v implementaci zadan´eho programu.

Kapitola 5 dokumentuje v´ybˇer co nejv´yhodnˇejˇs´ıch parametr˚u pro obˇe varianty pro-gramu. D´ale popisuje zp˚usob testov´an´ı, jeho v´ysledky a nakonec je zde provedeno srovn´an´ı v´ysledk˚u soutˇeˇziv´e koevoluce s v´ysledky koevoluce prediktor˚u fitness.

Z´avˇereˇcn´a kapitola 6 obsahuje shrnut´ı dosaˇzen´ych v´ysledk˚u a moˇzn´e smˇery dalˇs´ıho v´yvoje pr´ace.

(8)

Kapitola 2

Teoretick´

y z´

aklad pr´

ace

Mezi evoluˇcn´ı algoritmy se ˇrad´ı mnoho r˚uzn´ych algoritm˚u, z nichˇz jsou v t´eto pr´aci pouˇzity dva: genetick´y algoritmus a kart´ezsk´e genetick´e programov´an´ı. V t´eto kapitole jsou tyto dva algoritmy uvedeny do ˇsirˇs´ıho kontextu tˇr´ıd evoluˇcn´ıch algoritm˚u a jejich obecn´ych vlastnost´ı.

V ˇc´asti 2.1 jsou postupnˇe pˇredstaveny z´akladn´ı vlastnosti evoluˇcn´ıch algoritm˚u, jejich jednotliv´e f´aze a rozd´ıly r˚uzn´ych pˇr´ıstup˚u k nim. V ˇc´asti2.1.3je potom pˇredstaven genetick´y algoritmus tak, jak je pouˇzit v t´eto pr´aci. V ˇc´asti 2.2 je pˇredstaveno kart´ezsk´e genetick´e programov´an´ı.

ˇ

C´ast 2.3 pˇredstavuje mechanismy pro ˇreˇsen´ı evoluˇcn´ıch algoritm˚u s v´ıce populacemi pomoc´ı koevoluce. N´asleduje ˇc´ast2.4, kter´a uv´ad´ı problematiku symbolick´e regrese tak, jak je ˇreˇsena v t´eto pr´aci.

2.1

Evoluˇ

cn´ı algoritmy

Pod pojmem evoluˇcn´ı algoritmy se skr´yv´a cel´a skupina prohled´avac´ıch algoritm˚u, kter´e jsou inspirov´any Darwinovou teori´ı evoluce a neodarwinismem. Darwinova evoluˇcn´ı teorie vysvˇetluje adaptivn´ı zmˇeny vlastnost´ı popisovan´ych druh˚u takzvanou pˇrirozenou selekc´ı. Dle t´eto teorie pˇreˇz´ıvaj´ı (a d´ale se rozmnoˇzuj´ı) pouze jedinci s nejlepˇs´ımi vlastnostmi vzhle-dem k aktu´aln´ım okoln´ım podm´ınk´am. V pr˚ubˇehu generac´ı m´a tento proces za n´asledek postupn´e zmˇeny vlastnost´ı jedinc˚u a zlepˇsov´an´ı jejich schopnosti pˇreˇzit´ı v dan´em prostˇred´ı. Analogick´y princip jako v Darwinovˇe evoluˇcn´ı teorii je vyuˇz´ıv´an i v evoluˇcn´ıch algo-ritmech ve v´ypoˇcetn´ı technice. Cel´y algoritmus prob´ıh´a nad generac´ı kandid´atn´ıch ˇreˇsen´ı a v kaˇzd´e generaci jsou vˇsechna kandid´atn´ı ˇreˇsen´ı ohodnocena fitness funkc´ı. Jako rodiˇc pro dalˇs´ı generaci je vybr´an jedinec s nejlepˇs´ı hodnotou fitness.

Evoluˇcn´ı algoritmy se od tradiˇcn´ıch prohled´avac´ıch algoritm˚u odliˇsuj´ı t´ım, ˇze operuj´ı nad celou mnoˇzinou (populac´ı) kandid´atn´ıch ˇreˇsen´ı. Klasick´e prohled´avac´ı algoritmy se oproti tomu zab´yvaj´ı jedn´ım ˇreˇsen´ım. Evoluˇcn´ı algoritmy se ˇcasto pouˇz´ıvaj´ı pro ˇreˇsen´ı probl´em˚u, jejichˇz prohled´avac´ı prostor je velmi rozs´ahl´y, pˇr´ıpadnˇe pro ˇreˇsen´ı dynamick´ych probl´em˚u, u kter´ych se v pr˚ubˇehu v´ypoˇctu mˇen´ı poˇzadavky na ˇreˇsen´ı [2,10].

2.1.1 Terminologie

Stejnˇe jako vˇetˇsina specifick´ych obor˚u, tak i evoluˇcn´ı algoritmy maj´ı svoji zavedenou ter-minologii. Terminologie se v r˚uzn´e literatuˇre liˇs´ı, pro tuto pr´aci budou vyuˇzity pojmy

(9)

defi-novan´e v t´eto kapitole a potom d´ale v textu. Terminologie pro tuto pr´aci volnˇe vych´az´ı z literatury ([1,11]).

Gen – z´akladn´ı stavebn´ı jednotka chromozomu. V biologick´e evoluci jsou pomoc´ı gen˚u k´odov´any proteiny. V evoluˇcn´ıch algoritmech jeho hodnota patˇr´ı do abecedy specifick´e pro danou ´ulohu (bin´arn´ı ˇc´ısla, cel´a ˇc´ısla apod.). Gen m˚uˇze reprezentovat napˇr. hranu nebo uzel v grafu, logick´e ˇcleny, propojen´ı apod.

Chromozom – obvykle line´arn´ı pole gen˚u, v nˇekter´ych typech ´uloh m˚uˇze m´ıt promˇennou d´elku.

Genotyp – term´ın pouˇz´ıvan´y v evoluˇcn´ıch algoritmech pro k´odovan´y tvar ˇreˇsen´ı pomoc´ı jednoho nebo v´ıce chromozom˚u.

Fenotyp – kandid´atn´ı ˇreˇsen´ı probl´emu, kter´e je (obvykle deterministicky) sestavov´ano po-dle genotypu. Mapov´an´ı genotyp˚u na fenotypy a naopak je v jednotliv´ych evoluˇcn´ıch algoritmech rozd´ıln´e. Nˇekter´e evoluˇcn´ı algoritmy dokonce mezi genotypem a feno-typem v˚ubec nerozliˇsuj´ı.

Kandid´atn´ı ˇreˇsen´ı – jedinec se vˇsemi sv´ymi vlastnostmi a projevy.

Populace – mnoˇzina kandid´atn´ıch ˇreˇsen´ı, nad kterou pracuje evoluˇcn´ı algoritmus. Jej´ı velikost (poˇcet jedinc˚u v populaci) m˚uˇze znaˇcnˇe ovlivnit efektivitu cel´eho v´ypoˇctu. Fitness funkce – matematick´e vyj´adˇren´ı kvality kandid´atn´ıho ˇreˇsen´ı vzhledem k hledan´ym

vlastnostem. Jedn´a se o funkci, kter´a pˇriˇrazuje kaˇzd´emu jedinci hodnotu fitness, na jej´ımˇz z´akladˇe se d´a porovnat kvalita dvou r˚uzn´ych genotyp˚u.

2.1.2 Princip evoluˇcn´ıho algoritmu

Na obr´azku 2.1 je zn´azornˇen princip evoluˇcn´ıho algoritmu, jehoˇz jednotliv´e f´aze budou pops´any d´ale.

Vytvoˇren´ı poˇc´ateˇcn´ı populace

Na poˇc´atku algoritmu je vytvoˇrena poˇc´ateˇcn´ı populace. K vytv´aˇren´ı poˇc´ateˇcn´ı populace e-xistuje v´ıce zn´am´ych pˇr´ıstup˚u z´avisej´ıc´ıch na povaze ˇreˇsen´e ´ulohy. Pokud je c´ılem evoluˇcn´ıho v´yvoje optimalizace jiˇz existuj´ıc´ıho ˇreˇsen´ı probl´emu, v poˇc´ateˇcn´ı populaci se mohou objevit jedinci reprezentuj´ıc´ı r˚uzn´a, jiˇz existuj´ıc´ı, ˇreˇsen´ı. Pokud je vˇsak hled´ano zcela nov´e ˇreˇsen´ı zat´ım nevyˇreˇsen´ych probl´em˚u, poˇc´ateˇcn´ı populace b´yv´a generov´ana n´ahodnˇe [11].

Ohodnocen´ı populace

V dalˇs´ım kroku jsou jedinci v populaci ohodnoceni, coˇz znamen´a, ˇze kaˇzd´emu je pˇriˇrazena hodnota fitness. Hodnota fitness m˚uˇze b´yt vyj´adˇrena r˚uzn´ymi zp˚usoby, jako jsou:

Hrub´a fitness – pˇrirozen´e numerick´e vyj´adˇren´ı fitness, kdy vyˇsˇs´ı ˇc´ıslo znamen´a lepˇs´ı fit-ness.

Standardizovan´a fitness – hrub´a fitness transformovan´a tak, ˇze ˇz´adanˇejˇs´ı jsou niˇzˇs´ı hod-noty. ˇReˇsen´ı, kter´e ˇreˇs´ı pˇresnˇe zadanou ´ulohu m´a tedy fitness hodnotu 0.

Normalizovan´a fitness – leˇz´ı v intervalu <0, 1>. Vznik´a pod´ılem hrub´e hodnoty fitness zkouman´eho jedince a souˇctu hrub´ych hodnot fitness vˇsech jedinc˚u.

(10)

Obr´azek 2.1: Evoluˇcn´ı algoritmus.

V´ybˇer rodiˇc˚u

Na z´akladˇe ohodnocen´ı jednotliv´ych jedinc˚u jsou d´ale vyb´ır´ani ti nejvhodnˇejˇs´ı pro repro-dukci. Tomuto v´ybˇeru se ˇr´ık´a selekce a lze k n´ı pouˇz´ıt nˇekter´y z n´asleduj´ıc´ıch tˇr´ı selekˇcn´ıch mechanism˚u:

Deterministick´a selekce – nejjednoduˇsˇs´ı zp˚usob selekce. Jde o pˇr´ıpad, kdy je vˇzdy vybr´ a-no n jedinc˚u s nejvyˇsˇs´ı fitness v generaci.

Turnajov´a selekce – selekce pˇripom´ınaj´ıc´ı turnajov´a utk´an´ı. Z generace je n´ahodnˇe vybr´ a-no n jedinc˚u ´uˇcastn´ıc´ıch se turnaje. Ti jsou potom po dvojic´ıch porovn´av´ani, v´ıtˇez vˇzdy postupuje do dalˇs´ıho kola, dokud nen´ı z´ısk´an v´ıtˇez turnaje. Algoritmus je opako-v´an tolikr´at, kolik rodiˇc˚u je tˇreba pro dalˇs´ı generaci.

Proporcion´aln´ı selekce – algoritmus selekce, ve kter´em je interval<0, 1> rozdˇelen na n podinterval˚u. Kaˇzd´y podinterval patˇr´ı jednomu jedinci a m´a velikost odpov´ıdaj´ıc´ı jeho normalizovan´e fitness. Pomoc´ı rulety (vygenerov´an´ı n´ahodn´eho ˇc´ısla v intervalu <0, 1>) je potom vybr´an jedinec, do jehoˇz intervalu n´aleˇz´ı vygenerovan´a hodnota. Tento jedinec se stane rodiˇcem. Je zˇrejm´e, ze jedinci s vyˇsˇs´ı hodnotou fitness maj´ı vyˇsˇs´ı ˇsanci na v´ybˇer. Pokud m´a ale nˇekter´y jedinec fitness pˇr´ıliˇs vysokou, hroz´ı, ˇze dojde k degeneraci populace.

Vytvoˇren´ı nov´e generace

V dalˇs´ım kroku jsou z vybran´ych rodiˇc˚u vytvoˇreni potomci. K modifikaci rodiˇc˚u na potomky existuj´ı dva z´akladn´ı pˇr´ıstupy – mutace a kˇr´ıˇzen´ı.

Kˇr´ıˇzen´ı – kˇr´ıˇzen´ı prob´ıh´a na principu vyuˇzit´ı ˇc´asti gen˚u jednoho rodiˇce a ˇc´asti gen˚u druh´eho rodiˇce. Kˇr´ıˇzen´ı se dˇel´ı na jednobodov´e, v´ıcebodov´e a uniformn´ı (viz obr´azek

2.2). Pˇri jednobodov´em kˇr´ıˇzen´ı je n´ahodnˇe vygenerov´an bod kˇr´ıˇzen´ı a pot´e dojde k prohozen´ı gen˚u nach´azej´ıc´ıch se za bodem kˇr´ıˇzen´ı. U v´ıcebodov´eho kˇr´ıˇzen´ı se vy-generuje v´ıce kˇr´ıˇzic´ıch bod˚u a n´aslednˇe se prohod´ı kaˇzd´y druh´y podˇretˇezec ohraniˇcen´y

(11)

(a) jednobodov´e kˇr´ıˇzen´ı (b) dvoubodov´e kˇr´ıˇzen´ı (c) uniformn´ı kˇr´ıˇzen´ı

Obr´azek 2.2: Kˇr´ıˇzen´ı.

body kˇr´ıˇzen´ı. Pˇri vyuˇzit´ı uniformn´ıho kˇr´ıˇzen´ı je pro kaˇzd´y gen zvl´aˇst’ rozhodov´ano, zda-li dojde k jeho prohozen´ı nebo ne.

Mutace – mutace je n´ahodn´a zmˇena gen˚u chromozomu. V klasick´ych evoluˇcn´ıch algorit-mech se vyuˇz´ıv´a sp´ıˇse jako doplˇnkov´a zmˇena pro dosaˇzen´ı vˇetˇs´ı rozmanitosti v generaci neˇz jako hlavn´ı oper´ator tvorby potomk˚u. Pˇri mutaci je provedena n´ahodn´a zmˇena n´ahodn´eho genu jedince.

Ukonˇcovac´ı podm´ınka

Ukonˇcovac´ı podm´ınkou cel´eho v´ypoˇctu b´yv´a bud’to dosaˇzen´ı c´ılen´ych vlastnost´ı kandid´ atn´ı-ho ˇreˇsen´ı nebo proveden´ı urˇcit´eho poˇctu generac´ı. C´ılen´e vlastnosti kandid´atn´ıch ˇreˇsen´ı jsou obvykle vyj´adˇreny urˇcitou hodnotou fitness. Maxim´aln´ı poˇcet generac´ı je stanoven staticky a odv´ıj´ı se od n´aroˇcnosti ˇreˇsen´eho probl´emu.

2.1.3 Genetick´y algoritmus

Jak uv´ad´ı [1], p˚uvodn´ı pohled na evoluˇcn´ı algoritmy se soustˇred´ı pouze na Hollandovy genet-ick´e algoritmy (pˇredstaven´e v [4] v roce 1975), Kozovo genetick´e programov´an´ı (pˇredstaveno v roce 1992 v [6]), Fogelovo evoluˇcn´ı programov´an´ı (pˇredstaveno v roce 1966) a evoluˇcn´ı strategie podle Bienerta, Rechenberga a Schwefela. Tato pr´ace je vˇenov´ana genetick´ym al-goritm˚um a genetick´emu programov´an´ı, kter´e je d´ale specializov´ano na kart´ezsk´e genetick´e programov´an´ı.

Genetick´y algoritmus (d´ale GA) je principi´alnˇe velmi podobn´y evoluˇcn´ımu algoritmu uk´azan´emu na obr´azku 2.1. Generov´an´ı poˇc´ateˇcn´ı populace je provedeno n´ahodnˇe, kaˇzd´y fenotyp je zak´odov´an ˇretˇezcem, kter´y m´a pˇredem danou d´elku. Rodiˇce vybran´ı pomoc´ı selekˇcn´ıch algoritm˚u jsou kˇr´ıˇzeni, pˇr´ıpadnˇe mutov´ani a z jejich potomk˚u je vytvoˇrena dalˇs´ı generace. Pˇri tvorbˇe nov´e generace existuj´ı dvˇe moˇznosti:

Generaˇcn´ı varianta – cel´a dalˇs´ı generace je vytvoˇrena z potomk˚u pˇredchoz´ı generace. Rodiˇce, ani ˇz´adn´ı jin´ı ˇclenov´e pˇredchoz´ı generace nejsou ˇcleny generace n´asleduj´ıc´ı. Pˇrekr´yv´an´ı populac´ı – nov´a populace je vytvoˇrena ze smˇesi novˇe vygenerovan´ych

(12)

Obr´azek 2.3: Reprezentace programu ve formˇe bin´arn´ıho stromu.

Pouˇz´ıvan´e oper´atory

V genetick´ych algoritmech jsou vyuˇz´ıv´any jak oper´atory kˇr´ıˇzen´ı, tak oper´atory mutace. Vzhledem k tomu, ˇze jedinci jsou ˇcasto zak´odov´ani jako bin´arn´ıˇretˇezce, operace se prov´adˇej´ı nad bin´arn´ımi ˇc´ısly. Mutace nad bin´arn´ım ˇretˇezcem prob´ıh´a jako pˇrepnut´ı bitu na opaˇcnou hodnotu. Kˇr´ıˇzen´ı potom jednoduˇse aplikuje na line´arn´ı ˇretˇezce mechanismus kˇr´ıˇzen´ı defi-novan´y v´yˇse obr´azkem2.2.

2.1.4 Genetick´e programov´an´ı

Genetick´e programov´an´ı je modifikovanou variantou genetick´eho algoritmu. C´ılem gene-tick´eho programov´an´ı je vyvinout program, kter´y co nejlepˇs´ım zp˚usobem ˇreˇs´ı zadan´y pro-bl´em. Je tedy tvoˇrena sekvence pˇr´ıkaz˚u, kter´a je pˇr´ımo provediteln´ym programem. D´ale jsou pops´any vlastnosti genetick´eho programov´an´ı.

Reprezentace jedinc˚u

V genetick´em programov´an´ı jedinci reprezentuj´ı programy obvykle ve formˇe abstraktn´ıch syntaktick´ych strom˚u. Pˇr´ıklad velmi jednoduch´eho jedince genetick´eho programov´an´ı je zn´azornˇen na obr´azku2.3.

Mnoˇziny termin´al˚u a funkc´ı

Ve stromu se mohou vyskytovat dva druhy uzl˚u – termin´aln´ı uzel, kter´y ukonˇcuje vˇetev, ve kter´e se nach´az´ı, a uzel funkˇcn´ı, kter´y se vyskytuje uvnitˇr struktury stromu.

Termin´aly – mnoˇzina termin´al˚u obsahuje vˇsechny prvky, kter´e se ve stromov´e struktuˇre vyskytuj´ı na pozici listu. Jde o vstupy do programu, konstanty a funkce bez ar-gument˚u. Jako konstanty lze pouˇz´ıvat bud’to v´yˇcet definovan´ych konstant, nebo je moˇzn´e pˇri pouˇzit´ı konstanty vygenerovat n´ahodn´e ˇc´ıslo.

Funkce – mnoˇzina funkc´ı obsahuje funkce vhodn´e k ˇreˇsen´ı probl´emu nebo obecn´e mate-matick´e funkce. Kv˚uli n´aroˇcnosti v´ypoˇctu nen´ı vhodn´e zaˇrazovat pˇr´ıliˇs n´aroˇcn´e funkce. Aby nedoch´azelo k chyb´am za bˇehu, je tˇreba definovat v´ystupy funkce pro speci´aln´ı pˇr´ıpady, jako je napˇr´ıklad dˇelen´ı nulou.

Generov´an´ı poˇc´ateˇcn´ı populace

Do programu se n´ahodnˇe vyb´ıraj´ı termin´aly a funkce. Pro sestaven´ı stromu se vyuˇz´ıvaj´ı tˇri metody: Grow (n´ahodn´e stromy nepravideln´eho tvaru s termin´aly i funkcemi na kter´ekoliv

(13)

pozici), Full (stromy maxim´aln´ı hloubky) a Ramped Half-and-Half (polovina strom˚u meto-dou grow a polovina strom˚u metodou full s r˚uzn´ymi hloubkami) [11].

V´ypoˇcet fitness

Pˇri v´ypoˇctu hodnoty fitness je spouˇstˇen k´od kandid´atn´ıho ˇreˇsen´ı nad referenˇcn´ımi vstupy. Fitness je potom vypoˇctena z rozd´ılu v´ystupu kandid´atn´ıho programu oproti referenˇcn´ımu v´ystupu. Skupina referenˇcn´ıch vstup˚u a v´ystup˚u je naz´yv´ana tr´enovac´ı mnoˇzinou, pomoc´ı kter´e jsou jedinci hodnoceni bˇehem procesu evoluce. Po skonˇcen´ı evoluce je v´ysledn´e ˇreˇsen´ı ovˇeˇreno pomoc´ı testovac´ı mnoˇziny.

Pouˇz´ıvan´e oper´atory

Pouˇz´ıvaj´ı se bˇeˇzn´e oper´atory kˇr´ıˇzen´ı a mutace, lze je ale obohatit o dalˇs´ı oper´atory umoˇzˇnuj´ıc´ı vytv´aˇren´ı podprogram˚u, vkl´ad´an´ı modul˚u a podobnˇe.

Kˇr´ıˇzen´ı – kˇr´ıˇzen´ı je z´akladn´ı operac´ı genetick´eho programov´an´ı a funguje tak, ˇze z kaˇzd´eho rodiˇce je n´ahodnˇe vybr´an uzel a jeden jeho podstrom. Tyto podstromy jsou potom mezi rodiˇci prohozeny, ˇc´ımˇz vznikaj´ı dva potomci (viz obr´azek2.4).

Mutace – mutace je doplˇnkov´ym oper´atorem a neprov´ad´ı se vˇzdy. Prov´ad´ı se t´ım zp˚usobem, ˇze v jedinci je n´ahodnˇe vybr´an uzel a jeden jeho podstrom je nahrazen nov´ym, n´ahodnˇe vygenerovan´ym, podstromem.

2.2

Kart´

ezsk´

e genetick´

e programov´

an´ı

Kart´ezsk´e genetick´e programov´an´ı (d´ale CGP – Cartesian Genetic Programming) je vari-anta genetick´eho programov´an´ı, kter´a byla poprv´e pˇredstavena J. F. Millerem v roce 1999 [8]. V CGP je jedinec reprezentov´an pomoc´ı orientovan´ych graf˚u, kter´e jsou zak´odov´any jako dvourozmˇern´a pole v´ypoˇcetn´ıch uzl˚u. Tyto uzly se skl´adaj´ı z nˇekolika ˇc´ısel, kter´a urˇcuj´ı odkud dan´y uzel z´ısk´av´a svoje data a jakou operaci nad nimi prov´ad´ı.

2.2.1 Definice CGP

Kart´ezsk´y program je definov´an sv´ymi dev´ıti parametry: G – vlastn´ı matice vˇsech uzl˚u

ni – poˇcet prim´arn´ıch vstup˚u jedince

no – poˇcet prim´arn´ıch v´ystup˚u jedince

nn – arita v´ypoˇcetn´ıho uzlu

F – mnoˇzina dostupn´ych funkc´ı, b´yv´a uˇzivatelsky volena nf – poˇcet dostupn´ych funkc´ı

nc – poˇcet sloupc˚u kart´ezsk´eho programu

nr – poˇcet ˇr´adk˚u kart´ezsk´eho programu

l – l-back, ˇc´ıslo oznaˇcuj´ıc´ı, z kolika bezprostˇrednˇe pˇredch´azej´ıc´ıch sloupc˚u lze vyb´ırat hod-noty pro vstup aktu´aln´ıho uzlu.

(14)

Obr´azek 2.4: Princip kˇr´ıˇzen´ı dvou strom˚u.

Reprezentace jedinc˚u

Kart´ezsk´y program je reprezentov´an jako matice o nr ˇr´adc´ıch a nc sloupc´ıch obsahuj´ıc´ı

jednotliv´e v´ypoˇcetn´ı uzly. Ty jsou zak´odov´any jako textov´e ˇretˇezce. Na konec genotypu je pˇrid´ano no cel´ych ˇc´ısel oznaˇcuj´ıc´ıch kter´e uzly budou prim´arn´ımi v´ystupy kart´ezsk´eho

pro-gramu. Kaˇzd´y v´ypoˇcetn´ı uzel se skl´ad´a z dvou typ˚u gen˚u, kter´e k´oduj´ı jednotliv´e vlastnosti uzlu.

Funkcion´aln´ı gen – gen, kter´y znaˇc´ı, jakou operaci bude dan´y v´ypoˇcetn´ı uzel se sv´ymi vstupy prov´adˇet. V kaˇzd´em v´ypoˇcetn´ım uzlu se vyskytuje jen jeden.

Propojovac´ı geny – ostatn´ı geny uzlu (mimo funkcion´aln´ı) jsou tzv. propojovac´ı. Tyto geny urˇcuj´ı, odkud dan´y uzel bude naˇc´ıtat sv´e vstupy. Vstupem v´ypoˇcetn´ıho uzlu m˚uˇze b´yt bud’to prim´arn´ı vstup kart´ezsk´eho programu, nebo v´ystup nˇekter´eho uzlu z pˇredch´azej´ıc´ıch sloupc˚u. Vstupem uzlu nem˚uˇze b´yt v´ystup uzlu ze stejn´eho sloupce, ani uzlu ze sloupc˚u n´asleduj´ıc´ıch. Pˇri naˇc´ıt´an´ı v´ystupu uzlu z pˇredchoz´ıho sloupce mus´ı b´yt tak´e splnˇena podm´ınka pro l-back:

ci− cj ≤ l (2.1)

(15)

Obr´azek 2.5: N´ahodnˇe vygenerovan´e kandid´atn´ı ˇreˇsen´ı s n´asleduj´ıc´ımi parametry: ni = 2,

no = 1, nn = 2, nf = 4, nc = 3, nr = 3, l = 2. Mnoˇzina dostupn´ych funkc´ı F m˚uˇze b´yt

jak´akoliv ˇctyˇrprvkov´a mnoˇzina, napˇr´ıklad definovan´a v´yˇctem: F = {AN D0, OR1, P LU S2,

M IN U S3}.

Prim´arn´ı vstupy kart´ezsk´eho programu jsou postupnˇe oˇc´ıslov´any, v´ystupy jednotliv´ych uzl˚u jsou potom tak´e oˇc´ıslov´any. Pomoc´ı tˇechto ˇc´ısel je identifikov´ano, kter´e hodnoty maj´ı pˇrij´ıt na vstup jednotliv´ych uzl˚u. N´azorn´a uk´azka CGP programu je na obr´azku 2.5, kde je zobrazena maticov´a reprezentace kadid´atn´ıho ˇreˇsen´ı. Reprezentace ˇretˇezce tohoto chromo-zomu by vypadala n´asledovnˇe: 0 1 0 1 0 2 1 1 3 4 2 3 1 0 1 2 3 1 3 6 0 5 2 2 7 5 3 10. Uzly, kter´e jsou souˇc´ast´ı v´ypoˇctu – tedy jsou nepˇr´ımo pˇripojeny na v´ystup, jsou zn´azornˇeny ˇcervenˇe. Tyto uzly jsou oznaˇcov´any jako aktivn´ı uzly.

Generov´an´ı poˇc´ateˇcn´ı populace

V kart´ezsk´em genetick´em programov´an´ı je poˇc´ateˇcn´ı populace obvykle n´ahodnˇe generovan´a. Hodnoty jednotliv´ych gen˚u kart´ezsk´eho programu vˇsak nem˚uˇzou b´yt zcela n´ahodn´e, na kaˇzd´y typ genu jsou kladena urˇcit´a omezen´ı. Hodnota funkcion´aln´ıho genu fi mus´ı b´yt

platn´ym indexem do tabulky funkc´ı, mus´ı pro ni tedy platit vztah:

0 ≤ fi< nf (2.2)

Hodnota propojovac´ıch gen˚u m´a omezen´ı ponˇekud sloˇzitˇejˇs´ı, je tˇreba zajistit, aby nebyla z´aporn´a a aby z´aroveˇn splˇnovala omezen´ı pro l-back. Hodnoty propojovac´ıch gen˚u uzlu Cij

mus´ı splˇnovat n´asleduj´ıc´ı podm´ınky:

0 ≤ Cij ≤ j ∗ nr+ ni (pro j < l) (2.3)

(j − l) ∗ nr+ ni ≤ Cij ≤ j ∗ nr+ ni (pro j ≥ l) (2.4)

kde i znaˇc´ı ˇc´ıslo ˇr´adku a j znaˇc´ı ˇc´ıslo sloupce. V´ypoˇcet fitness

V´ypoˇcet fitness v CGP je prov´adˇen stejn´ym zp˚usobem, jako v genetick´em programov´an´ı. Pro v´yvoj populace m´ame k dispozici mnoˇzinu tr´enovac´ıch vektor˚u, kter´e obsahuj´ı vstup-n´ı hodnoty a oˇcek´avan´y v´ystup ˇepracuj´ı. Nad vˇsemi tˇemito tr´enovac´ımi vektory je kaˇzd´e kandid´atn´ı ˇreˇsen´ı spuˇstˇeno a dle rozd´ılu oˇcek´avan´eho v´ystupu a v´ystupu kandid´atn´ıho pro-gramu je kandid´atn´ımu ˇreˇsen´ı pˇriˇrazena fitness. Dva nejzn´amˇejˇs´ı zp˚usoby prov´adˇen´ı tohoto vyhodnocen´ı jsou n´asleduj´ıc´ı:

(16)

Stˇredn´ı kvadratick´a odchylka – po spuˇstˇen´ı kandid´atn´ıho ˇreˇsen´ı nad celou mnoˇzinou tr´enovac´ıch vektor˚u je vypoˇctena stˇredn´ı kvadratick´a odchylka z´ıskan´ych ˇreˇsen´ı od oˇcek´avan´ych ˇreˇsen´ı, kter´a se stane hodnotou fitness.

Metoda sk´ore – po spuˇstˇen´ı kandid´atn´ıho ˇreˇsen´ı nad kaˇzd´ym tr´enovac´ım vektorem je vyhodnoceno, zda-li odchylka od oˇcek´avan´eho ˇreˇsen´ı je menˇs´ı, neˇz stanoven´a tolerance. Pokud ano, je k hodnotˇe fitness pˇriˇctena jedniˇcka, jinak se nedˇeje nic.

Pouˇz´ıvan´e oper´atory

V CGP je pouˇz´ıv´ano v´yluˇcnˇe mutaˇcn´ıho oper´atoru, kter´y n´ahodnˇe mˇen´ı jednotliv´e geny programu (funkcion´aln´ı nebo propojovac´ı). Poˇcet gen˚u, kter´e se v kaˇzd´e mutaci zmˇen´ı, b´yv´a vyj´adˇren v procentech celkov´eho poˇctu gen˚u v programu a standardnˇe se pohybuje okolo 5%. Po zmˇenˇe mus´ı b´yt opˇet dodrˇzeny pˇr´ıpustn´e hodnoty jednotliv´ych gen˚u. Oper´ator kˇr´ıˇzen´ı se ve standardn´ım CGP nevyuˇz´ıv´a. V nˇekter´ych specifick´ych probl´emech se vˇsak oper´ator kˇr´ıˇzen´ı uk´azal b´yt velmi uˇziteˇcn´ym [9].

2.2.2 Genotyp-fenotyp mapov´an´ı

Z´akladn´ı vlastnost´ı CGP je mapov´an´ı genotyp˚u na fenotypy. Zat´ımco klasick´e genetick´e programov´an´ı mezi genotypy a fenotypy nerozliˇsuje, CGP ano. Genotypem je myˇslen cel´y kart´ezsk´y program se vˇsemi sv´ymi vnitˇrn´ımi uzly, at’ uˇz jsou pˇripojeny na v´ystup nebo ne. Fenotypem potom jsou pouze uzly, kter´e jsou pˇripojeny na v´ystup (aktivn´ı uzly). Fenotyp tedy m˚uˇze m´ıt velikost minim´alnˇe nula uzl˚u, pokud jsou vˇsechny prim´arn´ı v´ystupy napojeny na prim´arn´ı vstupy kart´ezsk´eho programu. Nejv´yˇse m˚uˇze m´ıt stejn´y poˇcet uzl˚u jako genotyp, pokud se v kart´ezsk´em programu nevyskytuje ani jeden nek´odov´y (neaktivn´ı) uzel [3].

2.3

Koevoluce

Koevoluce je mechanismem, kter´y je v biologii definov´an jako vz´ajemn´e genetick´e ovlivˇ no-v´an´ı mezi dvˇema a v´ıce r˚uzn´ymi druhy. Algoritmy vyuˇz´ıvaj´ıc´ı koevoluci se naz´yvaj´ı ko-evoluˇcn´ı algoritmy (d´ale CoEA). D´ıky koevoluˇcn´ım mechanism˚um je moˇzn´e znaˇcnˇe zkr´atit jinak dlouho trvaj´ıc´ı proces ohodnocen´ı vˇsech kandid´atn´ıch program˚u v genetick´em pro-gramov´an´ı [12]. Vyhodnocen´ı fitness jedinc˚u v populaci prob´ıh´a na z´akladˇe interakce s jin´ymi jedinci, coˇz je hlavn´ı rozd´ıl oproti klasick´ym evoluˇcn´ım algoritm˚um, kde je fitness odvo-zov´ana pomoc´ı pˇredem definovan´e fitness funkce.

Navzdory klasick´e definici z biologie, podle kter´e koevoluce znamen´a vz´ajemn´e ovlivˇ no-v´an´ı se mezi v´ıce ˇzivoˇciˇsn´ymi druhy, v CoEA je definov´ana i koevoluce v r´amci jednoho druhu. Pˇri hodnocen´ı fitness potom jedinci interaguj´ı s jedinci stejn´e populace. Na z´akladˇe t´eto pˇridan´e definice je v umˇel´e inteligenci rozliˇsov´ana koevoluce jedn´e populace a v´ıcepo-pulaˇcn´ı koevoluce. Probl´emem jednopopulaˇcn´ı koevoluce se bl´ıˇze zab´yv´a D. Jansen [5]. Tato pr´ace je vˇenov´ana koevoluci v´ıce, konkr´etnˇe dvou, populac´ı.

2.3.1 Probl´emy ˇreˇsen´e s pomoc´ı koevoluce

Koevoluce se nasazuje hlavnˇe ve dvou typech probl´em˚u, kter´ymi jsou probl´emy kom-poziˇcn´ıho charakteru a probl´emy zaloˇzen´e na testech (viz obr´azek 2.6). Oba pˇr´ıstupy jsou bl´ıˇze pops´any v t´eto ˇc´asti.

(17)

(a) Probl´emy kompoziˇcn´ıho charakteru (b) Probl´emy zaloˇzen´e na testech

Obr´azek 2.6: Typy koevoluce.

Probl´emy kompoziˇcn´ıho charakteru

Pˇri ˇreˇsen´ı probl´em˚u kompoziˇcn´ıho charakteru je vyuˇz´ıv´ano v´ıce populac´ı, pˇriˇcemˇz kaˇzd´a z nich obsahuje ˇc´ast kandid´atn´ıho ˇreˇsen´ı. Pro z´ısk´an´ı celistv´eho ˇreˇsen´ı probl´emu je tˇreba vyuˇz´ıt jedince ze vˇsech populac´ı, protoˇze v kaˇzd´e populaci je vyv´ıjena pouze nˇejak´a ˇc´ast ˇreˇsen´ı. Pˇredstavit si to lze tˇreba jako v´yvoj optim´aln´ıho stoln´ıho poˇc´ıtaˇce. V jedn´e popu-laci se vyv´ıj´ı optim´aln´ı zdroj, ve druh´e populaci optim´aln´ı z´akladn´ı deska, atd. V´ysledn´e ˇreˇsen´ı probl´emu hled´an´ı optim´aln´ıho stoln´ıho poˇc´ıtaˇce obsahuje prvky ze vˇsech vyv´ıjen´ych populac´ı.

Probl´emy zaloˇzen´e na testech

Z´akladn´ı rozd´ıl probl´em˚u zaloˇzen´ych na testech oproti kompoziˇcn´ım probl´em˚um je v ´uˇcelu jednotliv´ych populac´ı koevoluce. Probl´emy zaloˇzen´e na testech vyuˇz´ıvaj´ı pouze jednu popu-laci obsahuj´ıc´ı kandid´atn´ı ˇreˇsen´ı, ostatn´ı populace potom obsahuj´ı testy pro ohodnocen´ı je-dinc˚u z populace kandid´atn´ıch ˇreˇsen´ı. Typick´ym pˇr´ıkladem probl´emu zaloˇzen´eho na testech je symbolick´a regrese, bl´ıˇze popsan´a v kapitole2.4.

2.3.2 Princip koevoluce pro probl´emy zaloˇzen´e na testech

Koevoluce pro probl´emy zaloˇzen´e na testech obvykle pracuje se dvˇema populacemi – jednou populac´ı kandid´atn´ıch ˇreˇsen´ı a jednou populac´ı test˚u. Zobrazen´ı spolupr´ace obou populac´ı je na obr´azku 2.7.

Populace kandid´atn´ıch ˇreˇsen´ı

Populace kandid´atn´ıch ˇreˇsen´ı obsahuje mnoˇzinu jedinc˚u, kteˇr´ı jsou vyhodnocov´ani v aktu´ al-n´ım kroku evoluce. Tato mnoˇzina se v CoEA nijak neliˇs´ı od t´eˇze mnoˇziny v klasick´ych EA. Obsahuje 1 + λ jedinc˚u, ze kter´ych se v kaˇzd´e generaci vyb´ıraj´ı rodiˇce a modifikuj´ı potomci. Archiv kandid´atn´ıch ˇreˇsen´ı

Mnoˇzina kandid´atn´ıch ˇreˇsen´ı je obnovov´ana periodicky kaˇzd´ych nˇekolik krok˚u, kdy je do n´ı pˇrid´an vˇzdy nejvhodnˇejˇs´ı jedinec z populace kandid´atn´ıch ˇreˇsen´ı. Tato mnoˇzina je vyuˇz´ıv´ana k ohodnocen´ı jedinc˚u v evoluci test˚u.

Mnoˇzina vˇsech tr´enovac´ıch vektor˚u

Mnoˇzina vˇsech tr´enovac´ıch vektor˚u je mnoˇzinou obsahuj´ıc´ı vˇsechny tr´enovac´ı vektory. B´yv´a obs´ahlejˇs´ı a proto je ponˇekud zdlouhav´e vyuˇz´ıvat vˇsechny jej´ı prvky pˇri hodnocen´ı

(18)

kan-Obr´azek 2.7: Princip koevoluce.

did´atn´ıch program˚u, coˇz se ˇreˇs´ı za pomoci evoluce test˚u. Populace test˚u

Test je malou podmnoˇzinou mnoˇziny vˇsech tr´enovac´ıch vektor˚u, a tedy obsahuje pouze vybran´e tr´enovac´ı vektory. V t´eto pr´aci jsou porovn´av´any dva typy koevoluce:

ˆ Soutˇeˇziv´a koevoluce – V populaci test˚u je hled´ana sada tr´enovac´ıch vektor˚u, kter´a odhal´ı nejv´ıce chyb v aktu´alnˇe vyv´ıjen´ych kandid´atn´ıch programech. Nejvhodnˇejˇs´ım jedincem je tedy takov´y, na kter´em mnoˇzina kandid´atn´ıch ˇreˇsen´ı v archivu dosahuje nejhorˇs´ı fitness.

ˆ Koevoluce prediktor˚u fitness – Koevoluce prediktor˚u fitness je sloˇzitˇejˇs´ım typem ko-evoluce neˇz soutˇeˇziv´a koevoluce. V populaci test˚u jsou vyv´ıjeny prediktory fitness (jin´e typy test˚u neˇz v soutˇeˇziv´e koevoluci), kter´e jsou mal´ymi podmnoˇzinami cel´e tr´enovac´ı mnoˇziny. Fitness testu je urˇcena na z´akladˇe odchylky fitness urˇcen´e pomoc´ı mnoˇziny vˇsech tr´enovac´ıch vektor˚u a fitness urˇcen´e pomoc´ı testu pro dan´e kandid´atn´ı ˇreˇsen´ı. Nejvhodnˇejˇs´ım jedincem je tedy takov´y, kter´y dok´aˇze co nejpˇresnˇeji urˇcit fit-ness kandid´atn´ıho ˇreˇsen´ı v porovn´an´ı s vyuˇzit´ım mnoˇziny vˇsech tr´enovac´ıch vektor˚u. Nejvhodnˇejˇs´ı test

Nejvhodnˇejˇs´ı podmnoˇzina tr´enovac´ıch vektor˚u vybran´a z populace test˚u je po nˇekolik evoluˇcn´ıch krok˚u pouˇz´ıv´ana k ohodnocov´an´ı kandid´atn´ıch ˇreˇsen´ı a jejich v´yvoji. Pˇri kaˇzd´e zmˇenˇe t´eto mnoˇziny se m˚uˇze zmˇenit hodnota fitness jednotliv´ych kandid´atn´ıch ˇreˇsen´ı.

(19)

2 4 6 8 10 0.5 1.0 1.5 2.0 vstupy (x) vystup y (y) (a) vstup 0 2 4 6 8 10 0.5 1.0 1.5 2.0 x f(x)

(b) v´ystup: nalezen´a z´avislost y =5+(x−3)10 2

Obr´azek 2.8: Symbolick´a regrese.

2.3.3 Princip koevoluce prediktor˚u fitness

Koevoluce prediktor˚u fitness je druh koevoluce pouˇz´ıvan´y v kart´ezsk´em genetick´em pro-gramov´an´ı, je sloˇzitˇejˇs´ım typem koevoluce neˇz soutˇeˇziv´a koevoluce, kter´a byla vybr´ana pro tuto pr´aci. V druh´e populaci jsou v koevoluci prediktor˚u fitness vyv´ıjeny prediktory fitness, kter´e jsou menˇs´ımi podmnoˇzinami cel´e tr´enovac´ı mnoˇziny. Prediktoru je vypoˇctena fitness a na jej´ım z´akladˇe se predikuje fitness pro celou tr´enovac´ı mnoˇzinu [12].

2.4

Symbolick´

a regrese

Symbolick´a regrese je pˇr´ıstupem k hled´an´ı funkˇcn´ıch pˇredpis˚u, kter´y umoˇzˇnuje vyj´adˇrit v symbolick´e formˇe vztah mezi z´avisl´ymi a nez´avisl´ymi promˇenn´ymi. ´Ukolem symbolick´e regrese je zjistit, jak´ym zp˚usobem jednotliv´e nez´avisl´e promˇenn´e (vstupy) ovlivˇnuj´ı z´avisl´e promˇenn´e (v´ystupy) a n´aslednˇe ovˇeˇrit spr´avnost a obecnost vytvoˇren´eho modelu. Je tedy hled´ana funkce, kter´a s co nejmenˇs´ı odchylkou proch´az´ı stanoven´ymi tr´enovac´ımi vektory. Pˇr´ıklad pr´ace symbolick´e regrese je naznaˇcen na obr´azku2.8.

V souˇcasn´e dobˇe je symbolick´a regrese velmi ˇcasto ˇreˇsena s pomoc´ı automatizovan´ych syst´em˚u, at’ uˇz jde o evoluˇcn´ı algoritmy ˇci jin´y druh automatizovan´ych v´ypoˇct˚u. Uplatˇnuje se Kozovo genetick´e programov´an´ı [6]. V t´eto pr´aci je symbolick´a regrese ˇreˇsena pomoc´ı CGP, kter´e je vzhledem k n´aroˇcnosti v´ypoˇct˚u optimalizov´ano pomoc´ı koevoluce.

(20)

Kapitola 3

avrh

Tato kapitola je vˇenov´ana n´avrhu programu, kter´y ˇreˇs´ı symbolickou regresi s pomoc´ı kart´ ez-sk´eho genetick´eho programov´an´ı a soutˇeˇziv´e koevoluce. Soutˇeˇziv´a koevoluce je jednoduˇsˇs´ım druhem koevoluce neˇz koevoluce prediktor˚u fitness pˇredstaven´a v ˇc´asti2.3.3. Jak se uk´azalo v [12], koevoluce prediktor˚u fitness dok´azala vybran´e ´ulohy symbolick´e regrese urychlit 2-5 kr´at. C´ılem t´eto pr´ace je ovˇeˇrit, zda-li je moˇzn´e podobn´ych v´ysledk˚u dos´ahnout i pˇri pouˇzit´ı jednoduˇsˇs´ıho pˇr´ıstupu – soutˇeˇziv´e koevoluce.

Koevoluˇcn´ı algoritmus zkouman´y v t´eto pr´aci vyuˇz´ıv´a dvˇe soubˇeˇzn´e evoluce:

ˆ Evoluci kandid´atn´ıch ˇreˇsen´ı, kter´a jsou vyv´ıjena na principu CGP, jehoˇz teoretick´e z´aklady jsou uvedeny v ˇc´asti2.2.

ˆ Evoluci podmnoˇzin mnoˇziny vˇsech tr´enovac´ıch vektor˚u, kter´a prob´ıh´a na principu GA, teoreticky popsan´em v ˇc´asti2.1.3.

Mechanismy, kter´e vyuˇz´ıvaj´ı tyto soubˇeˇzn´e evoluce, jsou pops´any d´ale v t´eto kapitole. Koevoluˇcn´ı algoritmus je v t´eto pr´aci porovn´av´an s variantou, kter´a koevoluci nevyuˇz´ıv´a – symbolick´a regrese je ˇreˇsena pomoc´ı standardn´ıho CGP. ˇC´ast3.1proto popisuje ˇreˇsen´ı sym-bolick´e regrese pomoc´ı CGP pro koevoluˇcn´ı variantu i pro variantu, jeˇz koevoluci nevyuˇz´ıv´a.

3.1

Evoluce kandid´

atn´ıch ˇ

reˇ

sen´ı

Kandid´atn´ı ˇreˇsen´ı jsou vyv´ıjena na principu CGP, jak je pops´ano v ˇc´asti 2.2. Pouˇzit´y algoritmus CGP je zn´azornˇen na obr´azku3.1. Cel´y algoritmus prob´ıh´a nad populac´ı, kter´a je sloˇzena z d´ale popsan´ych jedinc˚u (kandid´atn´ıch ˇreˇsen´ı). Kaˇzd´y z krok˚u tohoto algoritmu lze prov´est nˇekolika r˚uzn´ymi zp˚usoby, kter´e jsou pops´any a n´aslednˇe je mezi nimi vybr´ano v t´eto kapitole.

3.1.1 Kandid´atn´ı ˇreˇsen´ı

Jedinec je reprezentov´an mˇr´ıˇzkou v´ypoˇcetn´ıch uzl˚u, kter´e jsou vz´ajemnˇe propojeny. Tato mˇr´ıˇzka tvoˇr´ı orientovan´y acyklick´y graf, kter´y vyjadˇruje matematickou funkci – kandid´atn´ı ˇreˇsen´ı probl´emu.

Kaˇzd´y v´ypoˇcetn´ı uzel m´a dva vstupy, nad nimiˇz vykon´av´a poˇzadovanou funkci a jeden v´ystup, jak je uk´az´ano na obr´azku3.2. Uzel na obr´azku vykon´av´a operaci sˇc´ıt´an´ı nad vstupy x1 a x2. V´ysledek je po proveden´ı operace k dispozici na v´ystupu v´ypoˇcetn´ıho uzlu. Kaˇzd´y

(21)

Obr´azek 3.1: Algoritmus CGP.

prov´adˇenou funkci. Uzel na obr´azku 3.2 by mohl b´yt zak´odov´an napˇr´ıklad sekvenc´ı 1 0 3. Za pˇredpokladu, ˇze kandid´atn´ı ˇreˇsen´ı m´a jeden prim´arn´ı vstup by to znamenalo, ˇze vstup x1 je napojen na v´ystup prvn´ıho v´ypoˇcetn´ıho uzlu, vstup x2 je napojen na prim´arn´ı vstup

kandid´atn´ıho ˇreˇsen´ı a pro sˇc´ıt´an´ı je pouˇzita konstanta 3.

Speci´aln´ım typem v´ypoˇcetn´ıho uzlu je uzel realizuj´ıc´ı konstantu. Takov´y uzel nem´a propojen´y vstup s ˇz´adn´ym jin´ym uzlem v mˇr´ıˇzce. M´a aktivn´ı pouze jeden vstup, kter´y je napojen na nˇekterou konstantu z tabulky konstant. Tato naˇcten´a konstanta proch´az´ı na v´ystup v´ypoˇcetn´ıho uzlu nezmˇenˇen´a. Vzhledem k charakteru testovac´ıch ´uloh, kter´e jsou pops´any v kapitole experimenty, jsem zvolila n´asleduj´ıc´ı mnoˇzinu konstant: {0, 1, π, e}.

Spoleˇcnˇe s jedincem je tˇreba pro dalˇs´ı pouˇzit´ı uchov´avat dalˇs´ı informace. Jeho souˇc´ast´ı tedy kromˇe tabulky uzl˚u a jejich propojen´ı bude i hodnota v´ystupu a fitness pro aktu´aln´ı tr´enovac´ı vektor a indik´ator aktivity u kaˇzd´eho uzlu.

3.1.2 Generov´an´ı poˇc´ateˇcn´ı populace

Vytvoˇren´ı poˇc´ateˇcn´ı populace lze prov´adˇet dvˇema zp˚usoby z´avisej´ıc´ımi na typu zadan´e ´

ulohy. Pˇri hled´an´ı ˇreˇsen´ı zat´ım nevyˇreˇsen´eho probl´emu se vyuˇz´ıv´a n´ahodn´eho generov´an´ı poˇc´ateˇcn´ıch genotyp˚u, zat´ımco pˇri optimalizaci jiˇz vyˇreˇsen´e ´ulohy se jako poˇc´ateˇcn´ı popu-lace pouˇz´ıvaj´ı jiˇz existuj´ıc´ı ˇreˇsen´ı a jejich mutace. Vzhledem k tomu, ˇze symbolick´a regrese jako takov´a spad´a do kategorie prvn´ı – hled´an´ı nov´ych ˇreˇsen´ı zat´ım nevyˇreˇsen´ych probl´em˚u, je v t´eto pr´aci pouˇzito n´ahodn´e generov´an´ı poˇc´ateˇcn´ı populace.

(22)

Obr´azek 3.2: V´ypoˇcetn´ı uzel.

3.1.3 Hled´an´ı aktivn´ıch uzl˚u

Hled´an´ı aktivn´ıch uzl˚u je procesem oznaˇcov´an´ı uzl˚u, kter´e jsou pˇr´ımo i nepˇr´ımo pˇripojeny na v´ystup a tedy jsou pouˇzity pro vlastn´ı v´ypoˇcet v´ystupn´ı hodnoty programu. K hled´an´ı aktivn´ıch uzl˚u lze opˇet pˇristoupit dvˇema zp˚usoby. Pro oznaˇcen´ı aktivn´ıch uzl˚u lze vyuˇz´ıt bud’to rekurzivn´ı sestup stromem aktivn´ıch uzl˚u nebo zpˇetn´y pr˚uchod cel´ym genotypem. Pro tuto pr´aci byla z d˚uvodu niˇzˇs´ıch pamˇet’ov´ych n´arok˚u a jednoduchosti implementace vybr´ana metoda zpˇetn´eho pr˚uchodu genotypem.

Zpˇetn´y pr˚uchod genotypem zaˇc´ın´a v uzlu, kter´y je pˇripojen na prim´arn´ı v´ystup pro-gramu. Jeho vstupy jsou oznaˇceny jako aktivn´ı. Pot´e je proch´azeno cel´ym jedincem od posledn´ıho sloupce smˇerem k prvn´ımu a pokaˇzd´e, kdyˇz je nalezen aktivn´ı uzel, jeho vstupy jsou tak´e oznaˇceny jako aktivn´ı.

3.1.4 Spuˇstˇen´ı kandid´atn´ıho programu nad tr´enovac´ım vektorem

Souˇstˇen´ı kandid´atn´ıho programu se prov´ad´ı pro kaˇzd´y vektor tr´enovac´ı mnoˇziny. Skrze prim´arn´ı vstupy do programu vstoup´ı hodnoty, nad kter´ymi jsou pot´e v odpov´ıdaj´ıc´ım poˇrad´ı prov´adˇeny funkce jednotliv´ych aktivn´ıch uzl˚u, dokud se nedostanou k prim´arn´ımu v´ystupu. Na prim´arn´ım v´ystupu se potom nach´az´ı v´ysledn´a hodnota kandid´atn´ıho ˇreˇsen´ı pro aktu´aln´ı tr´enovac´ı vektor.

Pˇri v´ypoˇctu d´ılˇc´ıch v´ysledk˚u jednotliv´ych v´ypoˇcetn´ıch uzl˚u m˚uˇze doj´ıt k v´yjimk´am, pro kter´e je tˇreba vloˇzit speci´aln´ı oˇsetˇren´ı. Tato oˇsetˇren´ı je tˇreba prov´est pro vˇsechny funkce, kter´e nejsou definov´any na nˇekter´e ˇc´asti definiˇcn´ıho oboru – v pˇr´ıpadˇe t´eto pr´ace se jedn´a pouze o dˇelen´ı, pro kter´e je vyuˇzita n´asleduj´ıc´ı funkce.

x y =  x y pokud y ∈ R − {0} 1 pokud y = 0 (3.1) 3.1.5 Vyhodnocen´ı fitness

Jakmile je vypoˇctena hodnota kandid´atn´ıho ˇreˇsen´ı pro dan´y vstup, lze ji ohodnotit pomoc´ı fitness. Pro hodnocen´ı fitness byly zvaˇzov´any dvˇe metody – metoda sk´ore a stˇredn´ı kvadra-tick´e odchylky. Ve vztahu3.2pro metodu sk´ore a vztahu3.3pro metodu stˇredn´ı kvadratick´e odchylky jsou pouˇzity promˇenn´e n – poˇcet tr´enovac´ıch vektor˚u, yi – oˇcek´avan´y v´ystup pro

aktu´aln´ı vektor a oi – z´ıskan´y v´ystup pro aktu´aln´ı vektor:

f itness =

n

P

i=0



1 pokud abs(yi− oi) < tolerance

0 jinak (3.2) f itness = n P i=0 (yi− oi)2 n (3.3)

V praxi se uk´azala jako vhodnˇejˇs´ı metoda sk´ore, kter´a funguje na principu tzv. hitu. Uˇzivatel stanov´ı toleranci, se kterou chce povaˇzovat v´ysledek za odpov´ıdaj´ıc´ı oˇcek´avan´e

(23)

hodnotˇe. Pro kaˇzd´y tr´enovac´ı vektor je potom vypoˇcten rozd´ıl oˇcek´avan´eho a z´ıskan´eho v´ysledku. Pokud je menˇs´ı neˇz zadan´a tolerance, je ke sk´ore jedince pˇriˇctena jedniˇcka. Nej-lepˇs´ı jedinec je takov´y, kter´y dos´ahl nejvyˇsˇs´ı hodnoty fitness. Hodnota fitness je ponech´ana jako hrub´a fitness, tud´ıˇz fitness jedince, kter´y je schopen ´uplnˇe vyˇreˇsit danou ´ulohu je rovna poˇctu tr´enovac´ıch vektor˚u.

3.1.6 V´ybˇer rodiˇc˚u

Pˇri v´ybˇeru rodiˇc˚u lze vyuˇz´ıt tˇri druhy selekce pˇredstaven´e v ˇc´asti2.2.1– deterministickou, turnajovou a proporcion´aln´ı selekci. Pro selekci rodiˇc˚u v CGP byla vybr´ana jednoduch´a de-terministick´a selekce, kdy rodiˇcem se stane vˇzdy pr´avˇe jeden nejlepˇs´ı jedinec z pˇredch´azej´ıc´ı generace. Tato moˇznost byla zvolena z toho d˚uvodu, ˇze v turnajov´e i proporcion´aln´ı selekci hroz´ı ztr´ata nejlepˇs´ıho jedince, coˇz by pro velmi pomalu prob´ıhaj´ıc´ı v´yvoj symbolick´e re-grese mohlo b´yt fat´aln´ı.

V´ybˇer nejlepˇs´ıho jedince se prov´ad´ı pomoc´ı porovn´an´ı hodnot fitness vˇsech jedinc˚u populace. V pˇr´ıpadˇe shodn´e hodnoty fitness u dvou jedinc˚u generace se uplatˇnuj´ı druhotn´a krit´eria:

Jedinec s m´enˇe aktivn´ımi uzly – pro zajiˇstˇen´ı co nejjednoduˇsˇs´ıho vygenerovan´eho funk-ˇcn´ıho pˇredpisu jsou upˇrednostˇnov´ani jedinci s m´enˇe aktivn´ımi uzly – tedy reprezen-tuj´ıc´ı jednoduˇsˇs´ı vztahy.

Jedinec, kter´y nebyl rodiˇcem – pro zachov´an´ı diverzity populace je v´yhodnˇejˇs´ı jako rodiˇce zvolit jedince, kter´y jeˇstˇe rodiˇcem nebyl. Aˇckoliv m´a stejnou fitness, v jeho neaktivn´ıch uzlech se mohou objevit d˚uleˇzit´e neutr´aln´ı mutace, kter´e pozitivnˇe ovlivn´ı dalˇs´ı v´yvoj.

3.1.7 Vytv´aˇren´ı nov´e generace

V CGP se k vytv´aˇren´ı potomk˚u vyuˇz´ıv´a v´yhradnˇe oper´ator mutace. λ jedinc˚u je tedy mu-tov´ano z jedin´eho rodiˇce. V kaˇzd´em potomku je mutov´ano n´ahodnˇe 1-8% gen˚u, kdy genem je myˇslena jedna hodnota uzlu (jeden ze vstup˚u nebo funkce). V´ybˇer mutovan´eho genu se prov´ad´ı na z´akladˇe dvou n´ahod – nejprve je n´ahodnˇe zvolen v´ypoˇcetn´ı uzel, ve kter´em bude mutace provedena, pot´e je opˇet n´ahodnˇe zvolen gen, kter´y bude mutov´an. Mutaci lze prov´adˇet nˇekolika r˚uzn´ymi zp˚usoby, z´avisej´ıc´ımi na mutovan´em genu. Pro tyto d´ale po-psan´e situace je tˇreba definovat dva pojmy – funkˇcn´ı uzel je uzel, kter´y prov´ad´ı nˇekterou z definovan´ych matematick´ych operac´ı, konstantn´ı uzel je uzel generuj´ıc´ı konstantu. Mutace vstupu funkˇcn´ıho uzlu – mutace jednoho ze vstup˚u uzlu, kter´y realizuje nˇ

ekte-rou matematickou funkci. Pˇri t´eto mutaci je n´ahodnˇe generov´ano ˇc´ıslo odpov´ıdaj´ıc´ı ˇc´ıslu v´ypoˇcetn´ıho uzlu leˇz´ıc´ıho v tolika pˇredch´azej´ıc´ıch sloupc´ıch, kolik odpov´ıd´a parametru l − back, pˇr´ıpadnˇe ˇc´ıslo indentifikuj´ıc´ı prim´arn´ı vstup. Toto ˇc´ıslo se stane nov´ym vstupem mutovan´eho uzlu.

Mutace funkce funkˇcn´ıho uzlu – jestliˇze je mutov´an uzel prov´adˇej´ıc´ı nˇekterou matema-tickou funkci na uzel prov´adˇej´ıc´ı jinou matematickou funkci, nejsou tˇreba ˇz´adn´e speci´aln´ı kontroly. Pokud je vˇsak mutov´an funkˇcn´ı uzel na konstantn´ı uzel, je tˇreba prov´est dalˇs´ı kontroly, kter´e jsou pops´any v mutaci konstantn´ıho uzlu.

Mutace konstantn´ıho uzlu – at’ uˇz je mutov´an konstantn´ı uzel na funkˇcn´ı nebo funkˇcn´ı na konstantn´ı, pˇri tˇechto pˇrevodech je vˇzdy tˇreba prov´est kontrolu a pˇr´ıpadnou korekci

(24)

prvn´ıho vstupu tohoto uzlu. Pˇri mutaci na konstantn´ı uzel mus´ı prvn´ı vstup spadat do rozsahu tabulky konstant. Pˇri mutaci na funkˇcn´ı uzel mus´ı prvn´ı vstup odpov´ıdat podm´ınk´am pro vstup funkˇcn´ıho uzlu. Tato problematika je ˇreˇsena tak, ˇze prvn´ı vstup je vˇzdy pˇregenerov´an tak, aby odpov´ıdal podm´ınk´am.

Mutace prim´arn´ıho v´ystupu – pˇri mutaci prim´arn´ıho v´ystupu je vˇzdy n´ahodnˇe vygene-rov´ano ˇc´ıslo odpov´ıdaj´ıc´ı v´ystupu nˇekter´eho z v´ypoˇcetn´ıch uzl˚u v mˇr´ıˇzce genotypu.

3.2

Evoluce podmnoˇ

zin mnoˇ

ziny vˇ

sech tr´

enovac´ıch vektor˚

u

Koevoluˇcn´ı varianta t´eto pr´ace sest´av´a ze dvou r˚uzn´ych evoluc´ı – evoluce kandid´atn´ıch ˇreˇsen´ı a evoluce podmnoˇzin mnoˇziny tr´enovac´ıch vektor˚u (d´ale oznaˇcovan´ych pojmem test ). Evoluce kandid´atn´ıch ˇreˇsen´ı prob´ıh´a ve sv´em vlastn´ım vl´aknˇe na principech popsan´ych v ˇc´asti 3.1. Pro evoluci test˚u je implementov´an jednoduch´y genetick´y algoritmus, kter´y prob´ıh´a v druh´em vl´aknˇe.

Pr´ace koevoluˇcn´ıho vl´akna tkv´ı v evoluci test˚u se snahou vytvoˇrit takov´y test, kter´y v aktu´aln´ıch kandid´atn´ıch ˇreˇsen´ıch odhal´ı co nejv´ıce chyb – tedy takovou podmnoˇzinu mnoˇziny tr´enovac´ıch vektor˚u, se kterou vybran´a kandid´atn´ıˇreˇsen´ı dos´ahnou nejhorˇs´ı fitness. Paraleln´ı bˇeh dvou vl´aken lze prov´adˇet s r˚uzn´ymi metodami zpoˇzd’ov´an´ı. Dvˇe nej-pouˇz´ıvanˇejˇs´ı moˇznosti jsou zpoˇzdˇen´ı na z´akladˇe doby v´ypoˇctu a umˇel´e zpoˇzdˇen´ı pomoc´ı synchronizaˇcn´ıch prostˇredk˚u. V t´eto pr´aci je koevoluˇcn´ı vl´akno umˇele zpoˇzdˇeno v pomˇeru 1 generace koevoluce ke 100 generac´ım CGP.

Pˇr´ınosem soutˇeˇziv´e koevoluce v kart´ezsk´em genetick´em programov´an´ı je zrychlen´ı pro-cesu ohodnocov´an´ı jednotliv´ych kandid´atn´ıch ˇreˇsen´ı. Fitness kaˇzd´eho kandid´atn´ıho ˇreˇsen´ı je totiˇz posuzov´ana pouze dle schopnosti reagovat na nˇekolik tr´enovac´ıch vektor˚u v testu. Bez koevoluce je tˇreba vyhodnotit celou tr´enovac´ı mnoˇzinu, coˇz je nepomˇernˇe v´ıce tr´enovac´ıch vektor˚u.

3.2.1 Test

Jedinec evoluce test˚u je sada tr´enovac´ıch vektor˚u vybran´a z cel´e mnoˇziny tr´enovac´ıch vek-tor˚u pomoc´ı genetick´eho algoritmu (zn´azornˇeno na obr´azku3.3). Spolu s jedincem je tˇreba uchov´avat aktu´aln´ı fitness dan´eho jedince.

Obr´azek 3.3: Jedinec CGP.

3.2.2 Archivy

Pro ´uspˇeˇsnou pr´aci CGP s koevoluc´ı je tˇreba pˇridat prostˇredky pro komunikaci mezi evolucemi. V t´eto pr´aci jsou realizov´any pomoc´ı dvou archiv˚u, jak je naznaˇceno na obr´azku

(25)

2.7, archiv kandid´atn´ıch ˇreˇsen´ı a archiv obsahuj´ıc´ı nejvhodnˇejˇs´ı test. Archiv kandid´atn´ıch ˇreˇsen´ı

Archiv kandid´atn´ıch ˇreˇsen´ı je rozdˇelen na dvˇe poloviny, kter´e se liˇs´ı strategi´ı obmˇeˇnov´an´ı. Jedna polovina archivu je obmˇeˇnov´ana vˇzdy tˇesnˇe pˇred aktivac´ı koevoluˇcn´ıho vl´akna (tedy kaˇzd´ych 100 generac´ı), kdy je do archivu vloˇzen aktu´aln´ı jedinec s nejvyˇsˇs´ı fitness. Do druh´e poloviny archivu je vkl´ad´an takt´eˇz pr´avˇe jeden nejlepˇs´ı prvek populace, ale tehdy, kdyˇz dojde ke zmˇenˇe fitness. V obou dvou ˇc´astech archivu se nov´ym jedincem nahrazuje nejstarˇs´ı jedinec dan´e ˇc´asti archivu.

Archiv s nejvhodnˇejˇs´ım testem

V kaˇzd´e generaci koevoluce je nalezen test, kter´y m´a nejlepˇs´ı schopnost odhalovat chyby v kandid´atn´ıch ˇreˇsen´ıch a ten se pro dalˇs´ı periodu stane testem pouˇz´ıvan´ym v evoluci kandid´atn´ıch ˇreˇsen´ı.

3.2.3 Vyhodnocen´ı fitness

V evoluci test˚u je hled´an takov´y jedinec, kter´y pˇri interakci s jedinci z populace kandid´atn´ıch ˇreˇsen´ı odhal´ı nejv´ıce chyb – tedy kandid´atn´ı ˇreˇsen´ı budou pro nˇej dosahovat co nejhorˇs´ıch fitness. Vztah pro v´ypoˇcet fitness testu je uveden v rovnici3.4, kde n je poˇcet kandid´atn´ıch ˇreˇsen´ı v archivu, gtestje hledan´a fitness testu a fi je fitness dosaˇzen´a na dan´em test˚u i-t´ym

kandid´atn´ım ˇreˇsen´ım. Na dan´em testu jsou spuˇstˇena vˇsechna kandid´atn´ıˇreˇsen´ı v archivu, je-jichˇz dosaˇzen´e fitness jsou pot´e seˇcteny, ˇc´ımˇz je z´ısk´ana fitness hodnota testu. Nejvhodnˇejˇs´ım testem v generaci je takov´y test, jehoˇz hodnota fitness je nejniˇzˇs´ı. Tedy takov´y, na kter´em dos´ahli jedinci uloˇzeni v archivu kandid´atn´ıch ˇreˇsen´ı nejhorˇs´ıch v´ysledk˚u.

gtest= n X i=0 fi(test) (3.4) 3.2.4 V´ybˇer rodiˇc˚u

V´ybˇer rodiˇc˚u lze dˇelat nˇekolika r˚uzn´ymi zp˚usoby, jak bylo pops´ano v kapitole 2.2.1. Pro potˇreby koevoluˇcn´ıho algoritmu z nich byla vybr´ana turnajov´a selekce. V turnajov´e selekci sice hroz´ı, ˇze rodiˇcem se nestane nejkvalitnˇejˇs´ı jedinec populace, coˇz ale nevad´ı, protoˇze je vyuˇz´ıv´ano pˇrekr´yv´an´ı generac´ı, kde jsou nejlepˇs´ı jedinci z pˇredchoz´ı generace zachov´ani do dalˇs´ı.

Turnaj je prov´adˇen jedno´urovˇnovˇe. Provede se n´ahodn´y v´ybˇer dvou jedinc˚u z generace, n´aslednˇe je porovn´ana jejich fitness a jedinec s lepˇs´ı (tedy niˇzˇs´ı) fitness se st´av´a rodiˇcem. Toto je opakov´ano tolikr´at, kolik rodiˇc˚u je pro novou generaci potˇreba.

3.2.5 Vytv´aˇren´ı nov´e generace

Nov´a generace sest´av´a ze tˇr´ı druh˚u jedinc˚u – z nˇekolika nejlepˇs´ıch jedinc˚u pˇredchoz´ı gene-race, z nˇekolika potomk˚u rodiˇc˚u vybran´ych z pˇredchoz´ı generace a z nˇekolika novˇe n´ahodnˇe vygenerovan´ych jedinc˚u. Pomˇer jednotliv´ych sloˇzek je pˇredmˇetem experiment˚u, kter´e jsou dokumentov´any d´ale v t´eto pr´aci, v kapitole5.

(26)

Tvorba potomk˚u je prov´adˇena pomoc´ı v´ıcebodov´eho kˇr´ıˇzen´ı, kter´e je zn´azornˇeno v´yˇse na obr´azku 2.2. Ze dvou rodiˇc˚u jsou vytvoˇreni dva potomci, takˇze je tˇreba vybrat pr´avˇe tolik rodiˇc˚u, kolik je poˇzadov´ano pro dalˇs´ı generaci potomk˚u.

(27)

Kapitola 4

Implementace

Praktick´a ˇc´ast pr´ace – program ˇreˇs´ıc´ı symbolickou regresi s pomoc´ı soutˇeˇziv´e koevoluce a s pomoc´ı standardn´ıho CGP je naps´an v jazyce C/C++. Pˇr´ıstup k probl´emu je ryze funkcion´aln´ı, odpov´ıd´a tedy pˇr´ıstupu v jazyce C, nicm´enˇe pro moˇznost vyuˇzit´ı uˇziteˇcn´ych rozˇs´ıˇren´ı v podobˇe nˇekter´ych datov´ych typ˚u a kontejner˚u je implementace provedena v jazyce C++ dle standardu C++98. Pro pˇreklad a sestaven´ı programu je pouˇzit pˇrekladaˇc G++.

Praktick´a ˇc´ast t´eto pr´ace sest´av´a dvou program˚u – symbolick´e regrese s klasick´ym CGP a koevoluˇcn´ı varianty CGP. Tyto dvˇe varianty implementace vˇsak maj´ı mnoho spoleˇcn´eho k´odu, z d˚uvodu konzistence jsem se tedy rozhodla obˇe varianty uchov´avat v jednom zdro-jov´em textu. ˇC´asti, ve kter´ych se k´od klasick´eho CGP liˇs´ı od koevoluˇcn´ı varianty, jsou rozdˇeleny pomoc´ı direktiv preprocesoru, kter´e se ˇr´ıd´ı existenc´ı (nebo neexistenc´ı) symbo-lick´e konstanty COEVOLUTION. T´ımto zp˚usobem lze z jednoho zdrojov´eho k´odu dvˇema r˚uzn´ymi zp˚usoby pˇrekladu z´ıskat dva r˚uzn´e programy.

Zdrojov´y k´od je rozdˇelen do nˇekolika modul˚u, zastupuj´ıc´ıch jednotliv´e f´aze zpracov´an´ı, jako jsou napˇr´ıklad vstupnˇe-v´ystupn´ı operace, tvorba poˇc´ateˇcn´ı populace, v´ypoˇcet hod-not, evoluˇcn´ı krok nebo koevoluce. Funkce obsaˇzen´e v jednotliv´ych modulech jsou vol´any z hlavn´ıho modulu cocgp.cpp.

Tato kapitola pojedn´av´a o probl´emech t´ykaj´ıc´ıch se pˇr´ımo praktick´e ˇc´asti t´eto pr´ace. Nejde o kompletn´ı postup cel´e implementace, n´ybrˇz o nˇekolik implementaˇcn´ıch detail˚u, kter´e byly vybr´any jako nejzaj´ımavˇejˇs´ı nebo nejspecifiˇctˇejˇs´ı pro vytvoˇren´y program. V ˇc´asti4.1

jsou zm´ınˇeny vyuˇzit´e zp˚usoby paralelizace, ˇc´ast4.2je vˇenov´ana gener´atoru n´ahodn´ych ˇc´ısel a jeho poˇc´ateˇcn´ı hodnotˇe. ˇC´ast4.3a4.4jsou potom vˇenov´any pr´aci se vstupem a v´ystupem. V posledn´ı ˇc´asti 4.7 se nach´az´ı jednoduch´y n´avod ke zkompilov´an´ı a spuˇstˇen´ı v´ysledn´eho programu pod operaˇcn´ım syst´emem Linux.

4.1

Paralelizace

Jak bylo uvedeno v´yˇse, koevoluˇcn´ı varianta symbolick´e regrese je spouˇstˇena ve dvou para-leln´ıch vl´aknech. Pro paralelizaci jsem zvolila vl´akna dan´a standardem POSIX, jak jsou pops´ana v [7]. Jako sd´ılenou pamˇet’ vyuˇz´ıvanou pro oba dva archivy – archiv kandid´atn´ıch ˇreˇsen´ı a archiv obsahuj´ıc´ı aktu´alnˇe vyuˇz´ıvan´y test, vyuˇz´ıv´am objekty sd´ılen´e pamˇeti dle standardu POSIX. Tyto objekty jsou namapov´any pomoc´ı funkc´ı shm open a mmap, kter´e jsou definov´any v syst´emov´e knihovnˇe pro management sd´ılen´e pamˇeti – sys/mman.h.

Pro zamezen´ı konflikt˚um pˇri pˇr´ıstupu do sd´ılen´e pamˇeti jsou oba dva archivy chr´anˇeny bin´arn´ımi semafory dle standardu POSIX – mutexy (mutual exclusion). Pro minimalizaci

(28)

doby str´aven´e v kritick´ych sekc´ıch jsem se rozhodla pˇri kaˇzd´e pr´aci se sd´ılenou pamˇet´ı nejprve obsah sd´ılen´e pamˇeti zkop´ırovat do lok´aln´ı pamˇeti a teprve pot´e nad n´ı prov´adˇet dan´e funkce.

4.2

Generov´

an´ı pseudon´

ahodn´

ych ˇ

c´ısel

Zp˚usob generov´an´ı pseudon´ahodn´ych ˇc´ısel je v t´eto pr´aci kl´ıˇcovou ot´azkou, protoˇze gener´ator je vyuˇz´ıv´an t´emˇeˇr ve vˇsech f´az´ıch evoluce, jako je generov´an´ı poˇc´ateˇcn´ı populace nebo v´ybˇer mutovan´ych uzl˚u a gen˚u v kaˇzd´em evoluˇcn´ım kroku.

Vyuˇzila jsem funkci rand ze standardn´ı knihovny jazyka C. Tato funkce generuje sekvenci pseudon´ahodn´ych ˇc´ısel, kter´a je opakovateln´a za pˇredpokladu, ˇze funkce rand dostane stej-nou poˇc´ateˇcn´ı hodnotu. V jednoduˇsˇs´ıch ´uloh´ach lze jako poˇc´ateˇcn´ı hodnotu vyuˇz´ıt n´avrat funkce time, kter´a vrac´ı rozd´ılnou hodnotu kaˇzdou sekundu. Vzhledem k tomu, ˇze pˇri testov´an´ı t´eto pr´ace pomoc´ı testovac´ıch skript˚u mnohdy doch´az´ı k nˇekoliker´emu spuˇstˇen´ı bˇehem jedn´e sekundy, nelze tento nedostatek tolerovat. Proto jsem se rozhodla pouˇz´ıt funkci gettimeofday ze syst´emov´e knihovny sys/time.h, kter´a vrac´ı strukturu timeval, ze kter´e vyuˇz´ıv´am souˇcet hodnot v sekund´ach a mikrosekund´ach. Toto zaruˇcuje rozd´ılnou poˇc´ateˇcn´ı hodnotu gener´atoru kaˇzdou mikrosekundu s opakov´an´ım kaˇzd´ych 24 hodin. Pravdˇ epo-dobnost, ˇze se testovac´ımu skriptu povede spustit program dvakr´at pˇresnˇe ve stejnou mi-krosekundu dne je

1

24 ∗ 60 ∗ 60 ∗ 1000 = 1.15741 ∗ 10

−8

(4.1) coˇz jsem se rozhodla povaˇzovat za zanedbateln´e ˇc´ıslo.

4.3

Form´

at vstupn´ıch soubor˚

u

Jako uˇzivatelsk´y vstup vyuˇz´ıv´am mimo parametr˚u pˇr´ıkazov´e ˇr´adky dva soubory – soubor s tr´enovac´ımi vektory a soubor s povolen´ymi funkcemi. Tyto soubory maj´ı podobnou struk-turu. Vˇzdy na prvn´ım ˇr´adku je zaps´an poˇcet hodnot nach´azej´ıc´ıch se v souboru. Na kaˇzd´em dalˇs´ım ˇr´adku potom n´asleduje pr´avˇe jedna hodnota dan´eho form´atu.

4.3.1 Soubor s povolen´ymi funkcemi

Pomoc´ı souboru s povolen´ymi funkcemi uˇzivatel definuje, jak´e funkce bude moˇzn´e realizo-vat ve v´ypoˇcetn´ım uzlu, tj. ze kter´ych z´akladn´ıch funkc´ı m´a b´yt hledan´a funkce sloˇzena. Jednotliv´e funkce jsou definov´any n´asleduj´ıc´ımi symbolick´ymi konstantami.

ˆ PLUS – sˇc´ıt´an´ı ˆ MINUS – o1dˇc´ıt´an´ı ˆ MUL – n´asoben´ı ˆ DIV – dˇelen´ı ˆ EXP – ex ˆ POW – yx ˆ SIN – sin(x) ˆ COS – cos(x) ˆ LOG – ln(x)

ˆ ABS – absolutn´ı hodnota ˆ CONST – konstanta

Kaˇzd´a ze zadan´ych hodnot se nach´az´ı pr´avˇe na jednom ˇr´adku ukonˇcen´em znakem konce ˇr´adku. Pokud soubor nevyhovuje specifikovan´e definici, program skonˇc´ı s chybou.

(29)

4.3.2 Soubor s tr´enovac´ımi vektory

Prostˇrednictv´ım tohoto souboru uˇzivatel definuje tr´enovac´ı vektory pro danou ´ulohu. Na kaˇzd´em ˇr´adku se nach´az´ı pr´avˇe jeden tr´enovac´ı vektor na jehoˇz prvn´ıch nipozic´ıch se nach´az´ı

hodnoty odpov´ıdaj´ıc´ı prim´arn´ım vstup˚um, na dalˇs´ıch no pozic´ıch se nach´az´ı odpov´ıdaj´ıc´ı

oˇcek´avan´e v´ystupy.

N´asleduje kr´atk´a uk´azka testovac´ıho souboru pouˇzit´eho pro funkci ex∗sin(x). Na prvn´ım ˇr´adku je specifikov´ano, ˇze v souboru se nach´az´ı pr´avˇe 201 tr´enovac´ıch vektor˚u, na kaˇzd´em dalˇs´ım ˇr´adku je vstup funkce a oˇcek´avan´y v´ystup.

201

-10.000000 11982.862391 -9.900000 9118.859852 -9.800000 6608.991138 ...

4.4

Naˇ

c´ıt´

an´ı vstupu

Hodnoty z obou dvou vstupn´ıch soubor˚u jsou na zaˇc´atku naˇcteny do datov´ych struktur. Naˇc´ıt´an´ı prob´ıh´a po znaku pomoc´ı funkce fgetc ze standardn´ı knihovny jazyka C, dokud nen´ı dosaˇzeno b´ıl´eho znaku (mezery ˇci konce ˇr´adku), pot´e je naˇcten´y ˇretˇezec zpracov´an. V pˇr´ıpadˇe zpracov´an´ı dat ze souboru s pouˇz´ıvan´ymi funkcemi je vyhodnoceno, zda se jedn´a o validn´ı symbolickou konstantu pro nˇekterou z funkc´ı. V pˇr´ıpadˇe zpracov´an´ı dat ze souboru s tr´enovac´ımi vektory je ˇretˇezec pˇreveden na ˇc´ıslo typu double za pomoci funkce strtod ze standardn´ı knihovny jazyka C. Tato funkce je schopna zpracovat i ˇc´ısla zapsan´a v ex-ponenci´aln´ım tvaru. Jako oddˇelovaˇc desetinn´e ˇc´asti ˇc´ısla je pouˇz´ıv´an takov´y znak, kter´y odpov´ıd´a lokalizaˇcn´ımu nastaven´ı operaˇcn´ıho syst´emu – vˇetˇsinou tedy teˇcka, v ˇcesk´ych variant´ach syst´emu ˇc´arka.

4.5

aznamy statistick´

ych dat

Pro porovn´av´an´ı bˇehu programu s r˚uzn´ymi nastaven´ımi je tˇreba zaznamen´avat statistiky r˚uzn´ych druh˚u. V t´eto pr´aci je pr˚ubˇeˇznˇe poˇc´ıt´ano nˇekolik r˚uzn´ych statistick´ych hodnot: Poˇcet generac´ı – celkov´y poˇcet evoluˇcn´ıch krok˚u od poˇc´atku bˇehu programu po dosaˇzen´ı

poˇzadovan´eho ˇreˇsen´ı. ˇ

Cas v´ypoˇctu – metriky vyuˇzit´ı zdroj˚u bˇehem v´ypoˇctu mˇeˇren´e pomoc´ı funkce getrusage ze syst´emov´e knihovny sys/resource.h. V pˇr´ıpadˇe koevoluˇcn´ı varianty se jedn´a o souˇcet vyuˇzit´ı zdroj˚u z obou vl´aken.

Poˇcet vyˇc´ıslen´ych tr´enovac´ıch vektor˚u – celkov´y poˇcet vyˇc´ıslen´ı tr´enovac´ıch vektor˚u za dobu bˇehu programu. Tedy kolikr´at bˇehem cel´e evoluce byly do nˇekter´eho kan-did´atn´ıho ˇreˇsen´ı naˇcteny vstupn´ı hodnoty a vypoˇcteny v´ystupn´ı.

Po skonˇcen´ı bˇehu jsou spoleˇcnˇe s v´ysledn´ym ˇreˇsen´ım vyps´any koneˇcn´e hodnoty tˇechto mˇeˇren´ı. Jednou za 100 generac´ı je tak´e pˇri bˇehu programu vypisov´ana aktu´aln´ı nejvyˇsˇs´ı fitness, d´ıky ˇcemuˇz lze sledovat, jak´ym zp˚usobem se fitness pˇri jednotliv´ych nastaven´ıch vyv´ıj´ı.

(30)

4.6

ypis ˇ

retˇ

ezce ˇ

reˇ

sen´ı

Pro usnadnˇen´ı pr´ace s v´ysledn´ym ˇreˇsen´ım je na konci bˇehu tak´e vyps´an matematick´y vztah, kter´y v´ysledn´e ˇreˇsen´ı pˇredstavuje. Tato funkcionalita slouˇz´ı hlavnˇe k usnadnˇen´ı kontroly spr´avnosti dosaˇzen´eho ˇreˇsen´ı.

V´ypis ˇretˇezce pˇredstavuj´ıc´ıho nalezenou funkci prob´ıh´a pomoc´ı rekurzivn´ıho sestupu s vyuˇzit´ım dvousmˇernˇe v´azan´eho seznamu. Na zaˇc´atku je do seznamu vloˇzen netermin´aln´ı uzel stromu ˇreˇsen´ı, kter´y je postupnˇe rozv´ıjen dle hodnot v chromozomu. Algoritmus konˇc´ı, jakmile jsou vˇsechny vˇetve rozvinuty aˇz k list˚um – k prim´arn´ım vstup˚um programu.

4.7

Kompilace a spuˇ

stˇ

en´ı

Pro kompilaci a spuˇstˇen´ı programu vyuˇz´ıv´am Makefile pro program make, pomoc´ı kter´eho lze program jak zkompilovat, tak spustit varianty s koevoluc´ı i bez koevoluce. Nastaven´ı vstupn´ıch soubor˚u a veˇsker´ych parametr˚u je tˇreba prov´est pˇr´ımo v souboru Makefile. make – pˇreloˇzen´ı a slinkov´an´ı cel´eho programu

make run – spuˇstˇen´ı varianty bez koevoluce make coev – spuˇstˇen´ı varianty s koevoluc´ı

(31)

Kapitola 5

Experiment´

aln´ı vyhodnocen´ı

´

Uˇcelem t´eto pr´ace je vytvoˇrit program, kter´y ˇreˇs´ı symbolickou regresi pomoc´ı kart´ezsk´eho genetick´eho programov´an´ı. Pro ovˇeˇren´ı funkˇcnosti programu byla pouˇzita sada test˚u pouˇ z´ı-van´a v r´amci komunity vˇenuj´ıc´ı se symbolick´e regresi.

Tato kapitola shrnuje pr˚ubˇeh testov´an´ı a metody v´ybˇeru parametr˚u pro jednotliv´e ˇc´asti v´ypoˇctu (5.1 pro evoluci kandid´atn´ıch ˇreˇsen´ı a 5.2 pro evoluci test˚u). V ˇc´asti 5.3 jsou pops´any skripty vyuˇzit´e pro automatizovan´e testov´an´ı a poloautomatizovan´e zpracov´an´ı v´ysledk˚u. D˚uleˇzitou ˇc´ast´ı t´eto kapitoly je tak´e5.4, ve kter´e jsou shrnuty v´ysledky testov´an´ı pro jednotliv´e funkce.

Funkce f1, f2 a f3 lze zaˇradit do kategorie jednoduˇsˇs´ıch test˚u, kter´e slouˇz´ı hlavnˇe

k ovˇeˇren´ı, zda symbolick´a regrese pracuje spr´avnˇe. Funkce f4 a f5 jsou n´aroˇcnˇejˇs´ı testy,

kter´e jsou pˇrevzaty z webov´e str´anky vˇenuj´ıc´ı se z´atˇeˇzov´ym test˚um symbolick´e regrese [13]. Pouˇzit´ı test˚u spoˇc´ıv´a ve vyuˇzit´ı pˇredepsan´ych vztah˚u pro vygenerov´an´ı tr´enovac´ı mnoˇziny (201 vzork˚u pˇredepsan´e funkce na zadan´em intervalu), nad kterou potom prob´ıh´a evoluce. Mnoˇziny tr´enovac´ıch vektor˚u pro jednotliv´e funkce jsou zn´azornˇeny na obr´azku 5.1. Funkˇcn´ı pˇredpisy jednotliv´ych z´atˇeˇzov´ych test˚u

f1 : f (x) = x2− x3, x ∈ h−10, 10i (5.1) f2: f (x) = e|x|sin(x), x ∈ h−10, 10i (5.2) f3 : f (x) = x2esin(x)+ x + sin( π x3), x ∈ h−10, 10i (5.3) f4 : f (x) = e−xx3cos(x)sin(x)(cos(x)sin(x)2− 1), x ∈ h0, 10i (5.4) f5 : f (x) = 10 5 + (x − 3)2, x ∈ h−2, 8i (5.5)

5.1

Nastaven´ı evoluce kandid´

atn´ıch ˇ

reˇ

sen´ı

V symbolick´e regresi se vyskytuje mnoho uˇzivatelsky modifikovateln´ych parametr˚u. Vzhle-dem k charakteru t´eto pr´ace – porovn´an´ı techniky soutˇeˇziv´e koevoluce s technikou koevoluce prediktor˚u fitness, byly parametry pro CGP zvoleny tak, jak je pops´ano v ˇcl´anku [12]. Tento ˇcl´anek popisuje experimenty na sadˇe test˚u pouˇzit´e i v t´eto pr´aci za vyuˇzit´ı koevoluce prediktor˚u fitness. Zvolen´e parametry jsou zaps´any v tabulce5.1.

References

Related documents

or information about their expertise, which is repeated mainly with Negation feedback. Social: we mean context information related to a user’s role at work, and

Campus Select classes will vary from .17-1.0 high school credits all depending on the amount of college credits earned for the course. If it is a 100 level course and above it will

 The relation between action and desire: because user’s actions are mainly determined by his desire and the current context values, and there is only one active user during a

The third tier in the design of the CRAFT technique deals with three final inputs from the crowd. For every feedback that the crowd members are annotating, they will have

21st Century Learning 22 Mobile Learning 26 Seamless Learning 26 Collaboration 27 Learner Autonomy 28 Presence 29 Critical Literacies 31 Transactional Distance 32

The long- term goal of this project is to introduce the notion of learning space and explore the role of the design of learning space context-aware ontologies with the ultimate aim

This will entail conceiving language as an essential social and ideological instrument which enables learners to question methods and procedures and contributes to

Both Vancouver shoppers also noted the marked difference in completing their shop at mainstream banks as compared with fringe banks: “We both felt that the