Ágenszervezetek Ambiens Intelligens terekhez Önálló laboratórium dokumentáció
Készítette: Zovits Ádám - WZOWZF Tangl András - DUONCA Konzulens: Dobrowiecki Tadeusz 2009.05.24.
Tartalom
Bevezetés ............................................................................................................................................. 3 I. Elméleti háttér ................................................................................................................................... 4 A feladat ........................................................................................................................................... 4 A teremben folyó tevékenységek ..................................................................................................... 4 Mérések ............................................................................................................................................ 5 Beavatkozások ................................................................................................................................. 5 Felhasználói interfész ....................................................................................................................... 6 Felépítés ........................................................................................................................................... 7 I. Szenzorok .................................................................................................................................. 8 II. Beavatkozók ............................................................................................................................. 8 III. Jelösszesítő ............................................................................................................................. 9 IV. Központi döntéshozó ............................................................................................................... 9 Példák ............................................................................................................................................. 11 II. Gyakorlati megvalósítás ................................................................................................................ 13 A felhasznált eszközök ................................................................................................................... 13 Változtatások .................................................................................................................................. 13 Az implementált program .............................................................................................................. 15 Működés ......................................................................................................................................... 16 Fejlesztési lehetőségek: .................................................................................................................. 19 Kapcsolódó linkek: ........................................................................................................................ 20
Bevezetés
Az Ambiens Intelligencia fogalma nem túl régi, az ezredforduló környékére tekint vissza. Röviden összefoglalva a lényegét azt lehetne mondani, hogy az erre az elvre épülő terekben a számítógépes intelligencia és az ember együtt vesz részt, egymás mellett léteznek. A számítógépes rendszer futó programok és a fizikai számítógép(ek) formájában rejtve van jelen, működése során megkönnyíti, segíti igyekszik az emberek életét. A két csoport, az emberi és a számítógépes egymástól elkülönülten él, kiegészítik egymást, de egy közös interfészen keresztül kapcsolatba tudnak lépni. Például szobában elhelyezett mikrofonnal utasítani lehetne a rendszert valamilyen cselekvésre, vagy hangszórókon riasztást adhat le az ágensszervezet. Az Ambiens Intelligencia fogalma idős emberek gondozásával kapcsolatban került előtérbe (AAL – Ambient Assisted Living), főleg olyan országokban, ahol kicsi az őket ápolni tudó személyzet. Az ilyen rendszerek erre a problémára megoldást képesek nyújtani, hogy idős emberek házát ambiens intelligenciával ruháznák fel, amely segíteni őket a mindennapi életükben. Itt érdekes eredmények is születtek, gyógyszeradagolók, melye képesek figyelni a rendelkezésre álló gyógyszerek számát, és esetlegesen értesítést adnának le, ha az elfogyott. De érzékelhetné, ha valamilyen baj történt, elesett valaki, s ebből következően mentőket hívhatna. Az általunk választott Önálló laboratórium témában a fentebb vázolt Ambiens Intelligens rendszerekkel ismerkedtünk meg részletesebben egy általunk választott konkrét feladat alapján. A félév során először elméleti szempontból vizsgálódtunk, ismerkedtünk meg a fogalommal részletesebben, majd később megpróbáltuk az elméletet gyakorlatba átültetni. Ezért ez a dokumentum is két részre oszlik ennek megfelelően. Elsőként bemutatjuk a feladatot, s annak az elméleti koncepcióját, majd azt, hogyan sikerült ezt a gyakorlatban megvalósítani.
I. Elméleti háttér
A feladat A feladat megvalósítása során egy konkrét feladatot, problémát vizsgáltunk: egy egyetemi számítógépes laboratórium, terem ambiens intelligenciával történő felszerelése, hogy a benne tanulók, dolgozó munkáját kényelmesebbé, egyszerűbbé tegyük ezáltal. A projekt első felében még csak az elméleti alapokon dolgoztunk, illetve egy proof-of-concept rendszert hoztunk létre, ami viszont elkerülhetetlenül átesett pár változtatáson gyakorlati okok miatt. Azonban szükségesnek gondoljuk a kiinduló alapok tisztázását, hogy látható legyen, milyen döntések vezettek a jelenlegi állapothoz. Ennek a dokumentumnak a további célja a továbbfejlesztést végzők számára útmutatás nyújtása, hogy milyennek képzeltük el a rendszert „felnőttkorában”, azaz még miket lenne célszerű megvalósítani hozzá.
A teremben folyó tevékenységek A projekt indulásakor elsőként a terem „állapotait” vizsgáltuk meg, ugyanis különbségeket kell tenni a „nem üres” állapotok között. A legfontosabbak:
órarendi óra (szóbeli tájékoztató, vetítés, hallgatói munka)
önálló kutatómunka (számítógép-használat, hardvertesztelés)
egyéb tevékenységek
Ezek a tevékenységek más és más környezetet igényelnek, vetítéshez félhomály és csend szükséges, a hallgatói munkánál már kell fény, az önálló kutatómunkáknál pedig a környezeti paraméterek széles spektruma lehet kívánatos, a halk, fényes, "laboratóriumi" szimulációktól kezdve a sötétben végzendő tájékozódási kísérleteken át a zajos, változó fényviszonyokkal nehezített, valószerű szimulációkig.
Mérések A kezdeti tervezés során a következő tényezők megfigyelését, mérését találtuk kézenfekvőnek:
hőmérséklet a terem egyes pontjaiban
fényviszonyok a terem egyes pontjaiban
zajérzékelő a terem egyes pontjaiban
emberek mozgása
folyik-e diavetítés
számítógépeken hallgatói aktivitás
nyílászárók állapota (nyitott, csukott, zárt)
légmozgás
levegő minősége
Ezen paraméterek megfigyelését a terem különböző pontjaiban elhelyezett szenzorokkal lehet elvégezni. Fontos a térbeli elosztottság figyelembe vétele, ugyanis terem nem minden pontján ugyanakkora a hőmérséklet, a világítás hatásai is eltérnek. Így egy szenzorhoz hozzá kell rendelni annak pozícióját is. Ennek a problémának a megoldáskor megismerkedtünk egy szabványos szenzor leíró nyelvvel, a SensorML-lel, mely segítségével egy szabványos, XML alapú leírás készíthető az egyes szenzorokhoz, mellyel azonosítót rendelhetünk a szenzorokhoz, tárolhatjuk azok térbeli helyzetét, méretét, tulajdonságait.
Beavatkozások
Az intelligens ágensszervezetnek az elvégzett mérések és a tudásbázisa alapján formálni kell tudnia a teret, melyben elhelyezkedik. Ez különféle beavatkozók segítségével valósítható meg, melyek közül a következőket találtuk a legfontosabbnak:
nyílászárók nyitása-csukása (elektromos motorok segítségével lehetne elvégezhető)
fűtés/légkondicionálás vezérlése (lehet kábellel megvalósított összeköttetés a vezérlő és a hardver közt, vagy valamilyen vezeték nélküli (pl.: IR) kapcsolat)
világítás vezérlése (előzőhöz hasonlatosan)
számítógépeken futó programok, vagy maga a számítógép vezérlése (ki- és bekapcsolása (Wake-On-LAN funkcióval); vezérlés gépre telepítetett, bejelentkezéskor indított ágens segítségével)
függönyök (szintén elektromos motorokkal történhetne)
Felhasználói interfész A felhasználói interfész a labor számítógépeire telepített szoftver, mely magas jogosultságokkal rendelkezik a számítógép felett, ugyanakkor felhasználói úton kiiktatható. A szoftver szerepe, hogy a teremben tartózkodók képesek legyenek igényeiket a rendszer tudomására hozni, illetve a rendszer döntéseinek okairól értesülni, ezzel elkerülhetőek az esetleges félreértések. Az interfész szolgálhat a felhasználók azonosítására is, a gyakran visszajáró vendégek (például oktatók, PHD hallgatók) saját profilt hozhatnának létre, melyben az ő egyéni preferenciáik szerepelnek, így a rendszer az ő bejelentkezésükkor a nekik megfelelő környezetet állítja be. Az egyszeri hallgatók számára egy alapértelmezett profilt tölt be, amit azonban időlegesen minden hallgató személyre szabhat. A felületen nyomon követhetőek az aktuális pozícióhoz tartozó mérési eredmények illetve a folyamatban levő intézkedések is, valamint lehetőség van kéréseket megfogalmazni a rendszer felé. További, nem szorosan a témához kapcsolódó, ám annál hasznosabbnak látszó funkció az üzenetküldés, amivel a hallgatók segítséget kérhetnek az oktatótól. Ezen keresztül működhetne a jogosultságok kiosztása is. Míg az egyszeri hallgató csak vágyait közvetíthetné a rendszer felé ("Túl sötét van"), addig az előadó teljes beavatkozási jogkörrel rendelkezne az egyes tényezők felett ("A világítás legyen a maximális erősségű"). További lehetséges felhasználási területe a hiányzó érzékelők és beavatkozók emberi ágensekkel való pótlása. A gyakorlatban ez például úgy nézne ki, hogy a képernyőn felugró üzenet formájában kérjük meg az ablakhoz legközelebb ülő hallgatót az ablak kinyitására. A szoftver ezeken kívül képes lehet az éppen megnyitott ablak címsorát figyelni, ez naplózható is, így kideríthető, ha egy mérés túl sok internetes keresést igényel, vagy ha egy hallgató az ellenőrző mérés során nem megengedett segédeszközt (például idegen jegyzőkönyvet) vett igénybe. A számítógép távoli menedzselése szintén komoly lehetőségeket tartogat magában. Lehetséges például a megfelelő szoftverkörnyezet (segédprogramok) elindítása a mérés előtt, vagy akár a számítógép teljes leállítása vészhelyzet esetén. Felmerült továbbá, hogy a kivetítendő fóliákba beépíthetőek lennének olyan optikai kódok, amiket egy alkalmasan elhelyezett web kamera érzékelne, majd egy hozzá kapcsolt számítógép dekódolna és a rendszerben parancsként megjelenítene. Ezen kódok segítségével az előadó tovább növelhetné a terem automatizáltságát, például előre eltervezett vetítési szünetekkel, amikor a táblára rajzolva magyarázná meg a kivetített dolgokat.
Felépítés A rendszer tervezése során az elsődleges szempontnak a modularitást tartottuk, így a rendszer rendkívül könnyen továbbfejleszthető lenne további komponensek hozzáadásával, vagy esetleges elvételével. További
fontos
jellemző
a hibatűrés,
azaz
ha egy komponens
(modul)
működésképtelenné válna, akkor ez ne csökkentse drasztikusan a rendszer működőképességét. Emiatt döntöttünk egy rétegekre bontott, fastruktúra (hierarchia) mellett, ahol a fa csomópontjai ágenseket tartalmaznak, élei azon két komponens közt fut, melyek közt üzenetváltás lehetséges. A fa levelei a közvetlen érzékelőket és beavatkozókat tartalmazzák. Az elképzelt struktúra felépítése:
A legalsó szinten helyezkednek el a fizikai ágensek, azaz az érzékelők és a beavatkozók. Ezekhez kapcsolódnak szorosan, még a rétegen belül az ezeket vezérlő, hardver specifikus ágensek, melyek feladata egységes interfész nyújtásával absztrahálni a fizikai réteget. Ezeket az ágenseket fogja össze néhány tényezőfelelős ágens, melyek egy-egy jól meghatározott tényezőért (hang, fény, hő,...) felelősek. Végül a legfelső szinten helyezkedik el a központi döntéshozó ágens, akinek a feladata az összes tényező összehangolása, a változtatások elrendelése és a döntések meghozatala.
A továbbiakban az egyes szinteket részletezzük.
I. Szenzorok
A legalsó szinten levő ágensek két részből állnak, a fizikai szenzor, és az őt illesztő szoftveres ágens, mely tárolja a mért adatokat és alapszintű jelfeldolgozást végez (például komparálás). Ezenkívül az ágens tárolja a szenzor “névjegyét” is, azaz a típusát, pozícióját,...
II. Beavatkozók
A beavatkozók nagyon hasonló felépítésűek, mint a szenzorok, itt is a hardverhez kapcsolódik az illesztést (is) végző ágens, melynek feladata a beérkező parancsok alapján a hardver vezérlése, az állapotának lekérdezése, a kommunikáció megvalósítása és a névjegy tárolása.
III. Jelösszesítő
Ezek az egységek a felelősek az egyes jeltípusok közvetlen összesítéséért. Ismerik a hozzájuk tartozó szenzorokat és beavatkozókat, tudják, hogy milyen lehetőségeik vannak változtatni a környezetükön, és ezek milyen esetleges mellékhatásokkal járnak (pl. légkondicionáló elindítása növeli a zajt is). A lekérdezések végrehajtása adott időszakonként történik, amikor a jelösszesítők végigkérdezik a hozzájuk tartozó szenzorokat, hogy küldjék el nekik a mért értékeket. A túl gyakori állapotváltás azonban nem szerencsés (például a percenként 5-6-szor nyíló és csukódó ablak), ezért a lekérdezés csak percenként hajtódna végre, a komparálás pedig hiszterézissel történne. A szenzorok ennél azonban jóval gyakrabban vesznek mintát, hogy az esetleges kritikus eltéréseket jelezni tudják.
IV. Központi döntéshozó
A központi egység már nem tud szenzorokról és beavatkozókról, csak a terem térbeli modelljét látja a globális és lokális érvényű mérési eredményekkel. Ezeket hasonlítja össze a felmerült igényekkel, és ha túl nagy az eltérés, akkor mérlegelni kezd. A felmerülő problémák megoldása többféleképpen történhet. Lehetne, hogy ezen a szinten rendelkezésre áll egy rendívül nagy tudásbázis, mely segítségével egymaga is képes döntéseket hozni. Tudásbázist készíteni viszont nem egyszerű, és egy ilyenfajta centralizált döntéshozás gyakorlatban nem kivitelezhető. Ezért megoldásként egy
vállalkozási háló protokoll használata merült fel, ami részbe leveszi a terhet a központi egységről, másrészt a következtetés elosztottabbá válik, így gyorsabb. A protokoll ebben az elképzelt rendszerben a következőképpen működne:
A központ első lépésként meghatározza a problémát (pl. “Hőmérséklet csökkentendő”).
Ezután felhívást intéz a jelösszesítőkhöz, amiben arra kéri őket, tegyenek ajánlatot a probléma megoldására.
A jelösszesítők a rendelkezésre álló szenzorok és beavatkozók segítségével megpróbálnak egy javaslatot készíteni a probléma feloldására, ha sikerül, visszaküld ez tervet, ellenben nem tesz semmit
A beérkezett megoldási tervek közül a központ kiválasztja azt, amelyiknek a legkisebbek, vagy a legkönnyebben kezelhetőek a mellékhatásai.
A kiválasztott terv végrehajtásával megbízza az illetékes jelösszesítőt, aki nyugtázza a végrehajtást.
Ha valamilyen okból a végrehajtás meghiúsulna, akkor a második lépéstől folytatódik minden, egy meghatározott számú iteráción keresztül (valamikor a probléma megoldása sikertelenség esetén is véget kell érjen, ellenben a rendszer használhatatlanná válik.)
Példák A továbbiakban két egyszerű példán keresztül próbáljuk meg bemutatni a rendszer elképzelt működését.
I.
Tegyük fel, hogy a terem egyik sarkában a fényesség csökken.
Ekkor ezt egy fényérzékelő érzékeli, majd átadja az információt az őt kezelő ágensnek.
Az ágens látja, hogy a csökkenés még nem kritikus, ezért nem szól, egészen addig, amíg a fényfelelős ágens le nem kérdezi az állapotát.
Ekkor a fényérzékelő-ágens átadja a felelősnek az azonosítóját, a pozícióját és az általa vett fényességértéket.
A felelős az összesítés során arra a következtetésre jut, hogy növelni kellene a fényességet a teremnek azon a részén, erről üzenetet küld a legfelső szintre, egyúttal javasolja a lámpák felkapcsolását, amivel az egész terem fényessége megemelkedne. Ezután nem küld értesítést erről a hibáról, egészen a központ visszajelzéséig vagy egy előre megszabott timeout lejárásáig.
A döntéshozó azonban látja, hogy a terem másik végén nincs szükség világításra, ezért más megoldást keres.
Üzeneteket küld a felelősöknek, afelől érdeklődve, hogy képes lenne-e valaki az adott térrészben a fényességet növelni.
Az ablakokért felelős ágens visszajelzi, hogy ő képes lenne erre, ha a területhez legközelebbi ablak függönyét elhúzná.
A döntéshozó mérlegel, és arra jut, hogy megkéri az ablakfelelőst a függönyök elhúzására.
A függöny elhúzódik, az ablakfelelős visszajelez a döntéshozónak a sikerről, aki értesíti a fényfelelőst, hogy a probléma megoldása részéről lezárult.
II.
A teremben tűz üt ki.
Egy hőmérsékletszenzor érzékeli a növekedést, amit átad a vezérlőágensének.
Az ágens látja, hogy az új érték jóval a kritikus felett van, ezért nem vár a lekérdezésre, azonnal riasztást küld a hőmérséklet-felelősnek.
A felelős a riasztásról haladéktalanul értesíti a döntéshozót.
A döntéshozó, ha módjában áll, megerősítést kér a többi felelőstől (levegőminőség-felelős, kamerafelelős, felhasználói interfész-felelős,...), majd ha megbizonyosodott a tűzesetről, tűzriadót kér az épület informatikai rendszerétől, azonosítva saját magát, illetve a termet és a tűz feltételezett pozícióját.
Ezután parancsot küld az ablakfelelősnek az ablakok kinyitására, a fényfelelősnek a lámpák felkapcsolására, a számítógép-felelősnek arra, hogy jelenítsen meg tűzriadó tartalmú vészjelzéseket minden gépen és állítsa le a gépeket, valamint az ajtófelelősnek az ajtó kinyitására.
Miközben a hallgatók elhagyják a termet, a mozgásérzékelő-rendszer vagy egy kamera számolja a kimenő embereket, és nyilvántartja a bent levők számát.
II. Gyakorlati megvalósítás
Az implementált programban igyekeztünk a korábban felvázolt négyszintű szervezeti struktúrának megfelelő ágensszervezetet kialakítani. Az idő szűkössége, valamint a felhasználható eszközök véges száma nem tette lehetővé, hogy az elméletnél ismertetetteket teljes mértékben reprodukálhassuk. Így többek közt kimaradtak a beavatkozók, lényeges szerepük a programban nincsen, valamint az egyes szintek által elvégzendő feladatok is mérséklődtek, de magát a szervezeti struktúrát betartottuk, és annak megfelelően végeztük a fejlesztést.
A felhasznált eszközök A program Java nyelven íródott, a Tilab által fejlesztett Jade környezetben. A fejlesztés megkönnyítéséhez
a
program
írásához
Eclipse
fejlesztőkörnyezetet
használtunk
EJade
kiegészítővel. A tesztelés és futtatás az IE316 laborban történt. Hardver szinten Phidgets eszközöket használtunk, analóg szenzorokat, valamint az ezeket a géppel összekötő InterfaceKit-et. Ezeknek a programozásához szükséges ismereteket a gyártó honlapjáról letölthető útmutatók felhasználásával szereztük meg. Három szenzor került felhasználásra, ezek a következők: fény-, hőmérséklet-, mozgásérzékelő.
Változtatások A program írása során több nehézségbe is ütköztünk, melyek következményeképp a korábban ismertetett struktúrát át kellett alakítani. A problémát a PhidgetInterfaceKit okozta, melyet egyszerre csak egy program használhat. Így nem volt arra lehetőség, hogy minden egyes szenzor használja a hardvert, és lekérdezze a kívánt portról az értékeket. Ezért a szenzorok alatt egy új szintet hoztunk létre, mely az adatokat kérdezi le a hardvertől, és ezt elküldi a kérő szenzor ágensnek. Ezzel az első szint globálissá válik, egy hardverillesztő ágens lesz.
Ezzel a módosítással és a korábbi megkötésekkel a megvalósított struktúra:
A megvalósított interface ágens grafikus felülete, melyen a szenzorokról (portokról) beolvasott aktuális értékek láthatóak:
Az implementált program A végleges programban megvalósított ágensszervet ugyancsak központosított, hierarchikus felépítésű, ahol az egyes feladatok a szintek között nagyjából egyenletesen oszlik el. A legalsó szint feladata, hogy a szenzorokról beolvasott adatokat kérésre továbbküldje a kérő szenzor ágensnek, aki átszámolja az adatokat egy egységes metrika szerint, melyet a felsőbb szint könnyebben képes értelmezni, és ez által javaslatokat tenni. (a szenzor felől érkező adatok egységesen minden esetben 0-1000 közti egészek) Az egységes metrikák: fényszenzornál lux, hőmérsékletnél °C. Mozgásnál ilyen mértékegységet nem lehetett bevezetni, a gyártó sem javasol ilyet, mivel a mutatott értékek 01000 közt változnak, és a mozgás mértékétől függő mértékben tér ki az alap, 500-hoz képest.
Példaként a hőmérséklet átszámítása: (Double.parseDouble(msg.getContent())/1000)*222.22-61.111
A szenzor ágenseknél szükség van az indulásnál egy paraméterre, hogy az adott ágens éppen mely porton levő szenzorhoz tartozik. Ez egy 0-7 közti egész szám. A következő szinten egy ágens valósítja meg a kommunikátor és szintellenőrzőt, de feladatuk erősen redukált, lényegében csak annyi került megvalósításra, hogy ezen a szinten elhelyezkedő ágensek összefogják a megfelelő szenzoroktól érkező adatokat, ezeket átlagolják, és eszerint egy javaslatot tesznek a központi ágensnek (pl: „window open”, „lesson start”). A legfelső szint feladata összegezni a kapott javaslatokat, és ez valamint a jelenlegi tudásbázisa alapján egy akciót meghatározni (történjen valami vagy ne). Beavatkozók hiányában az események mindig bekövetkeznek.
Működés
A működése a szervezetnek teljesen autonóm, minimális külső beavatkozásra van lehetőség. Lényegében csak az indítás és a leállítása vezérelhető, minden önállóan működik. Ezen kívül mégis készítettünk a beavatkozóknak egy minimális kezelőfelületet, amely lényegében egy egyszerű hiba szimuláció. A felhasználó kiválaszthatja, mely szenzorok hibásodtak meg. Ehhez egy minimális hibafeloldó képességgel is elláttuk az ágenst, azaz egy-két szenzorhibát még ilyen egyszerű esetben is kezelni tud. A grafikus felület ezen kívül tartalmaz egy szövegmezőt, ahová az aktuális beavatkozásoknak megfelelő üzenetek kerülnek. A grafikus felület:
Az indítás és a leállítás is hierarchikus, a legfelső szintről elindul az üzenet, és lefelé terjed a fában. Az üzenet hatására vagy mindenki „leáll”, azaz befejezi az eddigi működését, vagy elindul. Mivel indításkor senki nem ismeri az alatta levő szinten elhelyezkedő ágenseket, ezért „Start” üzenet
hatására elsőként felderíti azokat. Jade-ben lehetőség van egy DF (Directory Facilitator) nevű ágenstől lekérdezni a regisztrált ágenseket típus szerint. Ehhez minden ágensnek induláskor regisztrálnia kell magát nála. Az alábbiakban egy mozgásérzékelő regisztrációja látható:
DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("motion"); sd.setName("motion_sensor"); dfd.addServices(sd); try { DFService.register(this, dfd); }catch (FIPAException e) { e.printStackTrace(); }
Az ágensek közti kommunikáció megfigyelése szintén támogatott, úgynevezett Sniffer ágenssel. Ezzel az indítást megfigyelve a következőt láthatjuk:
A tényleges működés a korábban leírtaknak megfelelően történik. Az egész kiindulási helye az első szint, azaz a szenzor ágensek, akik a megfelelő porton levő adatokat kérdezik le az interface-t kezelő ágenstől. Miután megkapja a választ, átszámolja a kapott értéket egy egységes mértékegységre, majd továbbküldi a felsőbb szint felé. Ő elvégez egy egyszerű következtetést az adatokon, lényegében előre beállított intervallumok szerint dolgozik, készít egy javaslatot.
Példaként a hőmérséklet értékekhez megfelelő javaslat meghatározása látható:
if(average_temp<=12){ changemsg.setContent("heat on"); } else if(average_temp<18 && average_temp>12){ changemsg.setContent("window close"); } else if(average_temp>20 && average_temp<30){ changemsg.setContent("window open"); } else if(average_temp>=30){ changemsg.setContent("air_conditioner on"); }
A javaslat tételeket úgy alakítottuk ki, hogy egyes szenzoroknál megvizsgáltuk azok képességeit, például mozgásérzékelőnél megfigyeltük, mekkora mozgásra mekkora „kilengést” mutat, másoknál, mint a fényérzékelőnél pedig utánajártunk, milyen lux értékek milyen fényerősséget képviselnek. (Például 500 lux egy európai szabvány szerinti irodai fényerősség, 320 lux az ajánlott fényerősség irodában, 1000 lux (ami szenzor méréshatára) egy borús napnak felel meg.) Az ágens javaslatát továbbküldi a legfelső szintnek, aki elvégzi a végeleges következtetést, s ha „cselekedni” kellett, akkor az eredmény kiírja a grafikus felületre.
Az alábbi képen néhány ágens közti kommunikáció és részlete látszik működés közben:
Fejlesztési lehetőségek: A megvalósított ágensszervezetet több módon lehet fejleszteni. Lehet beavatkozókat felvenni, azok hiányában elképzelhető a beavatkozók emberrel történő helyettesítése. Ehhez lehetőséget kell teremteni, hogy a felhasználó beleegyező vagy elutasító választ adhasson, valamint bizonyos várakozás után a szervezet feltételezheti, hogy az esemény nem történt meg. Ezen kívül mindenképpen jó lenne több szenzort belevenni a szervezetbe, és figyelembe venni a térbeli elosztottság hatásait, ami tervbe volt véve, de az időhiány miatt sajnos nem került megvalósításra. (Itt reményeink szerint szenzor leíró nyelveket, vagy abból kiindulva egy ahhoz nagyon hasonló leírást lehetne használni.) Legnagyobb továbbfejlesztési lehetőség a tudásbázisban van. Itt mind a szabályok bővítése, mind valamilyen kifejezetten erre alkalmas leírónyelven történő megfogalmazása (pl. CLIPS, melynél használható lenne Jade esetén a Jess) elképzelhető.
Kapcsolódó linkek: http://jade.tilab.com/ http://www.phidgets.com/ http://www.phidgets.com/products.php?category=2 http://www.phidgets.com/products.php?category=1&product_id=1018