Ohjelmointiteknisiä työkaluja

Lopuksi tarkastelen joitakin ohjelmoinnin tekniikoita geneettisen algoritmin soveltamisen ja sovellettavuuden näkökulmista.

Mukautuvat tietorakenteet

Esimerkkinä abstraktin tietotyypin mukautuvat listat. Algoritmeja sovelletaan hakuavaruuksiin, joiden järjestäminen esimerkiksi aakkosjärjestykseen ei ole hakujen hajonnan suhteen mielekästä. Move-To-Front algoritmi, jossa listasta viimeksi haettu alkio sijoitetaan listan ensimmäiseksi (kuva 9). Jos algoritmia sovelletaan ympäristöön, jossa haut kohdistuvat ajoittain samoihin alkioihin, voidaan havaita keskimääräisten hakuaikojen nopeutuvan staattisiin rakenteisiin nähden.

Kuva 9: Move-To-Front algoritmin graafinen esitys.


Esimerkkinä esitetyn MTF- algoritmin lisäksi listoihin sovellettavia muokkaavia algoritmeja on useita ja niiden tehokkuus riippuu hakutapahtumien hajonnasta. Käyttötilanteeseen soveltuvan tietorakenteen järjestelystrategian (algoritmin) valinta voidaan toteuttaa geneettisen algoritmin keinoin.

Olio-ohjelmointi

Ohjelmistojen kehitystyön näkökulmasta merkittävä paradigmamuutos on ollut siirtyminen olioperustaisiin ohjelmointityökaluihin ja varusohjelmistoihin. Uusimmat käyttöjärjestelmät ja -liittymät, esim. AppleOS 7.x, Solaris ja NextStep on toteutettu olio-ohjelmointikielillä. Olioiden tunnistamisen, käsittelyn ja rakenteen standardoimiseen pyritään mm. 300 jäsenisessä OMG (Object Management Group) -työryhmässä, oliomäärittelystä tarkemmin työryhmän raportissa (CORBA). Sun Microsystems on julkistanut tiedonhallintastategiansa DOE (Distributed Objects Everywhere), joka pohjaa edellä mainittuun standardiin.
Olio-ohjelmoinnissa proseduurit ja niiden käsittelemät tietorakenteet on yhdistetty yhdeksi viitattavaksi olioksi. Olioiden sisältöä voidaan muokata vain olioiden omilla prosesseilla. (kuva 10) Oliot voivat koostua toisista olioista tai ne voivat olla kantaolion erikoistuneita muotoja, olioiden rakenteellistoiminnalliset kuvaukset järjestetään luokkakuvauksiksi. Luokkamäärittelyt organisoidaan hierarkiaan ominaisuuksien periytymisen mukaan. Oliot laukaisevat toistensa toimintoja lähettämällä viestejä, joiden käynnistämät toiminnot suorittavat ohjelman.

Kuva 10: Olio-ohjelman komponentit ovat itsenäisiä. Ohjelman tehtävän suorittavat keskenään kommunikoivat oliot.


Olioiden näkökulmasta ohjelman ratkaisema tehtävä on vain käyttäytymisen sivutuote, niin että varsinaisen ohjelman muodostaa keskenään viestivien olioiden joukko. Oliot tarjoavat luontevan tavan osittaa ohjelma, niin että sen ominaisuudet voidaan kuvata perimän avulla. Olioihin voidaan liittää niiden rakenteesta ja toiminnasta 'geneettiset kuvaukset' ja antaa niiden kehittyä versioitumalla ja valikoitumalla.

Virukset ja agentit

Jotkin tietokonevirukset versioituvat ja leviävät elävän organismin tapaan niin tehokkaasti, että niitä on pidetty elämänmuotona. Tietokonevirukset eivät yleensä sisällä minkäänlaista perimää edustavaa koodia, eikä niihin kohdistu minkäänlaista karsintaa. Ne ovat takaisinkytkennältään yksiulotteisia ja varsin suoraviivaista mukautumisstrategiaa noudattavia olioita. Geneettisen algoritmin luulisi soveltuvan hyvin juuri kaksiulotteisen takaisinkytkentästrategiansa vuoksi tietokoneviruksia torjuvien ohjelmien kehittämiseen.
Agenttien suosio on kasvanut verkotettujen sovellusten myötä. Agenteilla tarkoitetaan itsenäisiä ohjelmamoduleita tai -olioita, jotka tarjoavat käyttäjille pelkistetyn palveluiden rajapinnan. Palvelun käyttäjän ei tarvitse kuvata agentille suoritettavaa toimintaa vaan haluttu tulos. Erityistä mielenkiintoa ovat herättäneet ns. älykkäät agentit, jotka mukautuvat käyttäjän rutiineihin.
Agentin ulkoinen käyttäytyminen ei muutu, vaikka se suorittuu eri ympäristöissä. Ne toimivat käyttäjän valtuutuksella, eikä niillä ole tietoisuutta, mutta niiden yhteisvaikutuksesta on mahdollisuus rakentaa itsestään ja ympäristöstään tietoisia prosesseja. Tämä näkemys on sittemmin hyväksytty ihmisen kognitiivisen mallin perustaksi, jossa tietoisuus koostuu tiedostamattomien prosessien yhdistelmistä (Minsky). Ohjelma-agenteista lisää mm. lähteessä (Maes). Geneettisen algoritmin näkökulmasta agenttien avulla on helppo toteuttaa geeneihin liitettäviä ominaisuuksia. Toisaalta erityisesti oppivien agenttien ominaisuuksia voitaisiin jalostaa perimää hyväksikäyttäen.


Edellinen Sisältö Seuraava