Agenttiarkkitehtuurit Ohjelmistoarkkitehtuurit Mikko Vartiala 3.11.2009
Rakenne 1. Johdanto, mitä ovat agentit? 2. Agenttien luokittelua ja erityispiirteitä 3. Mobiiliagentit 4. Moniagenttijärjestelmät 5. Yksittäisen agentin arkkitehtuureista 6. Esimerkkiarkkitehtuuri 7. Loppu.
1/5 Määritelmiä Agentti Autonominen ja päämäärähakuinen entiteetti. Moniagenttijärjestelmä (Multi-agent system, MAS) Monta keskenään kommunikoivaa agenttia Agentit saavuttavat päämääränsä toimimalla yhdessä Ei keskitettyä kontrollia
Esimerkkejä erityyppisistä 2/5 agenttijärjestelmistä NPC-pelaajat tietokonepeleissä Teollisuuden prosessivalvonta Teollisuuden materiaaliketjun hallinta Liikennevalvonta Kaupankäyntiagentit Palomiesten harjoittelusimulaattori Microsoft Office Assistant Looks like you re making a presentation. Would you like help?
3/5 Johdanto Agenteissa voidaan käyttää monen eri alan tietämystä: Tekoäly Hajautetut järjestelmät Rinnakkaiset järjestelmät Mobiilit järjestelmät Ihmisen ja tietokoneen välinen vuorovaikutus (HCI, Human-computer interaction)
4/5 Agenttien luokittelua Luokitus Reaktiivinen Autonominen Päämäärähakuinen Ajallisesti jatkuva (temporally continuous) Viestivä, kommunikatiivinen Oppiva Liikkuva, mobiili Joustava Kuvaus Reagoi ulkoisiin ärsykkeisiin Hallitsee omaa suoritustaan ja tekojaan Ei pelkästään reagoi muutoksiin ympäristössä, vaan suorittaa tehtävää On jatkuva prosessi Kommunikoi toisten agenttien ja mahdollisesti ihmisten kanssa Muuttaa omaa käytöstään edellisten kokemusten perusteella Pystyy liikkumaan suorituspaikasta toiseen Tekoja ei ole skriptattu
5 / 5 Käytännönläheinen määritelmä Agentit ovat tapa abstrahoida asioita Proseduuri Olio Agentti Helpottaako se järjestelmän kehitystä jos jokin kokonaisuus abstrahoidaan agentiksi? Onko jokin ohjelma agentti? Kutsutaan sitä agentiksi jos siitä on järjestelmän kehittämisen kannalta hyötyä!
1/4 Mobiiliagenteista tarkemmin Viestit/RPC-kutsut vs. agentin lähettäminen verkon yli Heikko mobiliteetti Vain koodi ja mahdolliset alustusparametrit siirtyvät Vahva mobiliteetti Agentti ja suorituksen tila siirtyy
2/4 Hidas tapa suorittaa päätelmä { GetData1( ); DoProcessing( ); GetData1( ) 1 GetData2( ); DoProcessing( ); GetData3( ); User GetData2( ) 2 DoProcessing( ); ShowResult( ); } GetData3( ) 3
3/4 Mobiilin agentin tapa Vähentää verkkoliikennettä ja parempi sietokyky verkkoliikenteen häiriöille Prosessointi voidaan tehdä siellä missä on siihen resursseja Joustavampi { } MoveTo( 1 ); GetData1( ); DoProcessing( ); MoveTo( 2 ); MoveTo( Home ); ShowResult( ); Home 1 2 3
Yksinkertaisen mobiilin 4/4 agenttijärjestelmän haasteita Turvallisuus Viallinen agentti jumittaa koko järjestelmän? Autentikointi, yksityisyys Resurssienjako Ilkeä agentti varaa kaiken prosessointitehon Agenttien yhteistyö Miten saavuttaa riittävä joustavuus ja ylläpidettävyys? Kommunikointi, järjestelmän jako eri agentteihin
1/3 Moniagenttijärjestelmät Määritelmä: Monta agenttia toimii samaan aikaan samassa ympäristössä tehden ainakin osittain yhteistyötä Miten ja miksi yhteistyötä tehdään? Agenttien koordinointi ja organisointi Agenttien kommunikointi
2/3 Yhteistyö Agenttien koordinointi ja organisointi, joitakin pointteja: Organisoinnin hierarkkisuus? Kaikki agentit tasa-arvoisia Agenteilla omat johtajat Organisoinnin dynaamisuus? Organisaatiossa on ennalta määrätyt suhteet agenttien välillä Organisaatio rakennetaan dynaamisesti mahdollisesti ennalta tuntemattomista agenteista
3/3 Moniagenttijärjestelmien haasteita Vaatii uudenlaisia toiminta- ja ajattelutapoja Työkalut Debuggaus Testaus Standardit
Yksittäisen agentin 1/8 arkkitehtuurityypeistä Reaktiivinen Tietoinen (deliberate) Hybridi
2/8 Reaktiivinen agentti Reagoi ulkoa tuleviin ärsykkeisiin Toimii vain nykyhetkessä Agentti Tapahtuma Toiminta Sensorit Säännöt Aktorit
3/8 Reaktiivinen agentti Edut Sopii alhaisen tason päätösten tekoon reaaliaikaisesti Toimintaperiaate yksinkertainen Monimutkainen käyttäytyminen saadaan aikaan monien eri agenttien yhdistelmällä Haitat Kaikki toimintatavat täytyy koodata käsin Vaikea uudelleenkäyttää Monimutkaisten ongelmien ratkaisut vaativat isoja ohjelmia
4/8 Tietoinen agentti Malli ympäristöstä, Päätöksiä ohjaa looginen päättelykyky Agentti Tapahtuma Toiminta Sensorit Malli ympäristöstä Päättelijä Aktorit Tavoitteet
5/8 Tietoinen agentti Edut Voi oppia menneistä kokemuksista ja suunnitella tulevaa tekemistään Voi sopeutua yllättäviin tilanteisiin Haitat Monimutkainen rakenne Päätöksenteko voi viedä aikaa Ympäristön mallinnus voi olla haastavaa
6/8 Hybridi agentti Tarkoituksena yhdistää reaktiivisen ja tietoisen agentin parhaita puolia Agentti Tietoinen kerros Tapahtuma Toiminta Sensori Aktori Reaktiivinen kerros
7/8 Hybridi agentti Kerrosten eri toimintatavat Hajautettu Kerrosten välillä ei kommunikaatiota, vaan toiminta tapahtuu rinnakkain ja itsenäisesti Hierarkkinen Tietoinen kerros hallitsee reaktiivista kerrosta ja voi muuttaa sen sääntöjä tarpeen vaatiessa Rinnakkainen Kerrokset toimivat rinnakkain, ovat samanarvoisia ja voivat muuttaa toistensa käyttäytymistä
8/8 Hybridi agentti Edut Pyrkii hyödyntämään kummankin agenttityypin parhaat puolet Haitat Kerrosten välisen yhteistyön toteuttaminen voi olla haastavaa
1/6 Esimerkki, agenttiarkkitehtuuri Käytetty ohj.tek. laitoksella muutamassa projektissa Perusidealtaan yksinkertainen, mutta riittävä näiden projektien tarpeisiin Toimii pääasiassa integraatioarkkitehtuurina Jakautuu kahteen osaan: agentit ja infrastruktuuri Agentit: Sisältävät bisneslogiikan Mobiileja Autonomisia Yksinkertaisia
2/6 Esimerkki, infrastruktuuri Jakautuu Areoihin, Locationeihin ja Transportereihin Locationit useimmiten adaptereita jo olemassaoleviin ohjelmistoihin Locationit toimivat myös rajapintoina paikallisiin tiedostojärjestelmiin ja tietokantoihin Transporterit mahdollistavat agenttien liikkumisen Arealta toiselle Agentit käyttävät infrastruktuurin avulla olemassa olevia ohjelmistoja omien tehtäviensä suorittamiseen Location a.k.a. Stationary agent Area a.k.a. Agency network Transporter Area B Transporter Area A Location : ToolA Filesystem Location : ToolB Database
3/6 Esimerkki, aktiviteetti-agentti USER A2 : Area2 I want to execute an activity GUI1 : GUILocation 1. <<create>> Agent1 : ExecuteActivity Agent 3. ExecuteActivity 4. etc. A1 : Area1 L2 : Location2 AE1 : ActivityEngine Location 2. <<travel>> T2 : Transporter1 << network >> T1 : Transporter1
4/6 Esimerkki, säikeet Agentit pyörivät omissa säikeissään Agenteilla on kontrolli oman säikeensä lopettamisesta <<process >> Area <<thread>> Receiver Transporter <<thread>> Sender <<creates>> <<thread>> Agent1 <<thread>> Agent2 <<thread>> Agent3 <<creates>> <<creates>> <<thread>> GUILocation
creates Agents Infrastructure inherits inherits * * Area * * uses * 0..1 Agent 1 inherits Method 1 * * Location * creates, notifies Transporter * Meta Architecture 5/6 Agent2,... Agent1 Location1 +Method1() Area1 A location or agent Create An Area Agent1 "Give me a Location of type Location1" Location1 Location2 +Method2() Area2 System Architecture Method1() Transporter1 A2 : Area1 L3 : Location2 L5 : Location1 1. <<create>> 2. <<travel>> T2 : Transporter1 A2 : Agent1 3. Method1( ) A3 : Area2 L4 : Location2 1. <<create>> A1 : Agent1 T3 : Transporter1 << network >> << network >> 3. Method1( ) 2. <<travel>> A1 : Area1 L2 : Location2 L1 : Location1 T1 : Transporter1 Runtime Architecture << network >>
Esimerkki, arkkitehtuuriratkaisun 6/6 analyysiä: viestinvälitys vs. agentti Viestien tapauksessa toiminnallisuus hajautuu viesteihin ja useaan komponenttiin Viestijärjestelmässä piilossa olevia riippuvuuksia pitää tietää järjestelmästä muutakin kuin vain viestit (viestin voi joissain tilanteissa nähdä epäsuorana funktiokutsuna) Yksi toimintokokonaisuus on yhdellä agentilla helpompi ylläpitää tätä toimintoa Suora riippuvuus komponentin rajapintaan hankalampi muuttaa komponenttien rajapintoja ( mitkäs kaikki agentit tätä käyttivätkään ) Epäsuora riippuvuus: mahdollinen oletus toisen komponentin toiminnasta ja olemassaolosta, esim. AloitaProjekti à jonkun pitää käsitellä, jotta jotain tapahtuisi A Agent -Rakenne -Sisältö vrt. SOA, BPML, etc. B B
Lopuksi Mitä kaikkea muuta? Agent Communication Languages (ACL) Agent Oriented Languages (AOL) Teknologiat Työkalut Olemassa olevat frameworkit
Kiitos!