|
Johdannoksi
Geneettisellä algoritmilla tarkoitetaan ohjelmaa, joka jäljittelee luonnossa
tapahtuvaa eläinlajin perintötekijöiden ja niihin liittyvien ominaisuuksien
jalostumista: survival of the fittest. Kun ohjelmat laaditaan niin, että niitä
voidaan kuvata 'geneettisellä koodilla', voidaan luonnollisen valinnan
periaatteita soveltaa hyväksyttävän ratkaisun etsimiseen. Geneettisen algoritmin
käyttö edellyttää tehtävän ratkaisevan ohjelman osien käyttäytymisen arviointia
tuloksen laadun, muistitilan ja ajan käytön suhteen. Ohjelman osien ominaisuudet
on voitava erottaa toisistaan luonteviksi mittareiksi arvioitaessa kunkin
ratkaisuyksilön 'elinkelpoisuutta' sukupolvea karsittaessa.
Geneettisen algoritmin soveltaminen antaa välineitä mittavien
ohjelmointiprojektien suun-nitteluun. Sitä voidaan soveltaa ohjelmamodulien ja
tietorakenteiden paikalliseen optimointiin. Käyttöliittymien ominaisuudet voidaan
alistaa luonnollisen valinnan kohteiksi luokitusjärjestelmän avulla, jonka
perusta on ominaisuuksien käyttöaste ja niihin liittyvät virheet.
Versiointia ja karsintaa voidaan soveltaa tietokonepohjaisten dokumenttien
lay-outehin ja hypermediatallenteiden linkitysjärjestyksiin, niin että sisältö
pyrkisi skaalautumaan mahdollisimman ymmärrettäväksi käyttötarkoituksensa ja
lukijansa mukaan. Käyttöliittymän piirteiden ja ominaisuuksien kuvaaminen geenien
avulla ei ole vaikeaa, toiminnot voidaan varsin helposti kuvata ja ryhmittää
toisistaan riippumattomiksi. Esimerkiksi agenttiperustaiset käyttöliittymät,
jossa perimän avulla voidaan jalostaa niin yksittäisiä agentteja kuin niiden
yhdistelmiäkin - agentuureja.
Varsinainen vaikeus on kokonaan uudenlaisen suunnitteluparadigman omaksuminen.
Analyyttiseen, yhteen kiteytettyyn ratkaisuun pyrkivän, deduktiivisen
suunnittelun sijaan ohjelmoijan tulee kuvata ratkaisuavaruus (versiointi ja
monistuminen) ja siihen kohdistuva hakumenettely (karsinta).
Ratkaisun rakenne on kuvattava itsenäisten ja riittävän hienojakoisten
modulien avulla, jotta versiointi kattaisi koko mahdollisen ratkaisuavaruuden
mahdollisimman laajasti. Mielestäni geneettisen ja versioivan suunnittelun
periaatteita pitäisi opettaa ja kokeilla rinnakkain perinteisten analyysiin ja
deduktiiviseen todistettavuuteen perustuvien suunnittelumenetelmien rinnalla.
|