Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla...

31
Anna Tamburro 26/05/2016 Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” Cap 7 - User-defined Component

Transcript of Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla...

Page 1: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

AnnaTamburro26/05/2016

Benvenu4allalezionedi“Programmingmul4-agentsystemsinAgentSpeakusing

Jason”

Cap7-User-definedComponent

Page 2: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Jasonèdistribuitoconunaseriedifunzionalitàdibase.

Glisviluppatoridurantelefasidisviluppodeilorosistemivoglionoavereunaseriedirequisi4

(accessoaidatabase,integrazionedeisistemilegacy,interfaccegraficheemol4altri).

Persoddisfareques4requisi4èstatoadoTatounapprocciobasatosull’estendibilità.

Jasonèstatosviluppatoinjavaecosìanchelesueestensioniepersonalizzazioniincluderanno

alcuniprogrammiJava.

Gliagen4possonoesseresviluppa4con:

•  Linguaggiodichiara4vo

•  Paradigmaobject-oriented.

Jason(User-definedcomponent)

AnnaTamburro 2

Page 3: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Nuovicomandipossonoesseresviluppa4usandoazioniinternedefinitedall’utentetramite

diversicomponen4dell’interprete.

Cisono2ragionipercreareun’azioneinterna:

•  Estenderelecapacitàdell’agente(questopuòcreareunmigliorlivellodiastrazioneperiltask

richiestorispeToaquellafornitodaAgentSpeak)

•  Consen4reall’agentediu4lizzareilcodicelegacygiàprogrammatoinJavaoaltrilinguaggi.

EsistonoancheazionistandardinternecheappartengonogiàalladistribuzionediJason.

E’possibile,inoltre,anchepersonalizzareedestenderediversecomponen4dell’interprete.

Jason(User-definedcomponent)

3AnnaTamburro

Page 4: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Leazioniinternedefinitedall’utentedovrebberoessereorganizzateinlibrerie.

L’azionedistance,peresempioècontenutanellalibreriamathedèaccessibilesianelcontestochenelbodydeipianidiAgentSpeak.

NelcodiceAgentSpeak,un’azioneinternaèaccessibileinquestomodo:

+event:true<−math.distance(10,10,20,30,D);...

+event:math.distance(10,10,20,30,D)&D>30<−...

Jason(User-definedcomponent)

4AnnaTamburro

Page 5: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

LelibreriesonodefinitecomepacchefJavaeogniazionenellalibreriautentedovrebbeessere

unaclasseJavaall’internodelpaccheTo.

Inomidelpackageedellaclassesonoinomidellalibreriaedell’azionechesarannopoiusa4nei

programmiAgentSpeak.

package math;

import jason.*;

import jason.asSyntax.*;

import jason.asSemantics.*;

public class distance extends DefaultInternalAction {

@Override public Object execute( TransitionSystem ts, Unifier un, Term[] args ) throws Exception { < the code that implements the IA goes here >

}

}

•  Gliiden4ficatoricheinizianoconunaleTeramaiuscolainAgentSpeakdenotanolevariabili

•  inomidellalibreriaedellaclassedell’azioneinternainizianoconunaleTeraminuscola.

Jason(User-definedcomponent)

5AnnaTamburro

Page 6: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

TuTeleclassichedefinisconoazioniinternedevonoimplementarel’interfacciaInternalAc4on.Esisteun’implementazionedidefaultDefaultInternalAc1onchedovrebbesemplificarelacreazionediunanuovaazioneinterna.UnanuovaclasseperdefinireunanuovaazioneinternadeveestenderelaclasseDefaultInternalAc1on.

Jason(User-definedcomponent)

6AnnaTamburro

Override

Page 7: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Ilmetodoexecute(Transi4onSystem,Unifier,Term[])vienerichiamatodall’agentediAgentSpeak

–  IlprimoargomentodelmetodoèTransi1onSystemchecon4eneleinformazionisullostatocorrentedell’agente

–  IlsecondoargomentoèUnifierchedeterminal’esecuzionedelpianoincuièapparsal’azioneinternaoilcontrollodiseilpianoèapplicabileequestodipendedasel’azioneinternaapparenelcontestoonelbodydelpiano.

–  IlterzoargomentoTerm[]èunarraydiargomen4passa4alleazioniinternedall’utentenelcodicediAgentSpeakchehachiamatol’azioneinterna.

IlsecondometododellaclasseDefaultInternalAc1onèchiamatosuspendInten1on:questometododovrebberes4tuiretruequandol’azioneinternaprovocal'intenzionediesseresospesa.LasuaimplementazionepredefinitanellaclasseDefaultInternalAc1onres4tuiscefalse.

Jason(User-definedcomponent)

7AnnaTamburro

Page 8: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

try{NumberTermp1x=(NumberTerm)args[0];

NumberTermp1y=(NumberTerm)args[1];NumberTermp2x=(NumberTerm)args[2];NumberTermp2y=(NumberTerm)args[3];

doubler=Math.abs(p1x.solve()-p2x.solve())+Math.abs(p1y.solve()-p2y.solve());

NumberTermresult=newNumberTermImpl(r);returnun.unifies(result,args[4]);

}

Jason(User-definedcomponent)

8AnnaTamburro

IlcodiceJavanelmetododiesecuzioneperl'azioneinternamath.distancehatrefasi:

1.  SioTengonoiriferimen4peri4numeripassa4comeparametriallafunzionieperiqualisaràcalcolataladistanza.NumberTermèun’interfacciaimplementatadaNumberTermImpl.VarTermèunavariabilechepuòessereassociataadunnumerooun’espressionearitme4caArithExpr.

2.  Sicalcolailvaloredelladistanza.Ilmetodosolve()vieneusatoperoTenereilvalorenumericodiNumberTerminmodocheancheleespressionipossanoessereusatecomeparametri,peresempio:math.distance(X1+2,Y1/5-1,20,20,D)

3.  VienecreatounoggeToNumberTermcherappresentailrisultato.QuestooggeTovieneunificatoconilquintoargomento.Taleunificazionepotrebbenonriuscireoaveresuccesso.

Page 9: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

try{NumberTermp1x=(NumberTerm)args[0];

NumberTermp1y=(NumberTerm)args[1];NumberTermp2x=(NumberTerm)args[2];NumberTermp2y=(NumberTerm)args[3];

//2.calculatesthedistancedoubler=Math.abs(p1x.solve()-p2x.solve())+Math.abs(p1y.solve()-p2y.solve());//3.createsthetermwiththeresultand

//unifiestheresultwiththe5thargumentNumberTermresult=newNumberTermImpl(r);returnun.unifies(result,args[4]);

}

Jason(User-definedcomponent)

9AnnaTamburro

IlcodiceJavanelmetododiesecuzioneperl'azioneinternamath.distancehatrefasi:

catch(ArrayIndexOutOfBoundsExcep4one){

thrownewJasonExcep4on("Theinternalac4on’distance’"+"hasnotreceivedfivearguments!");

}catch(ClassCastExcep4one){

thrownewJasonExcep4on("Theinternalac4on’distance’"+"hasreceivedargumentsthatarenotnumbers!");

}

catch(Excep4one){thrownewJasonExcep4on("Errorin’distance’");

}

Page 10: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Jason(User-definedcomponent)

10AnnaTamburro

Ilrisultatodell’unificazioneèancheilrisultatodell'esecuzionedell’azioneinterna.Nelcasoincuil’azioneinternavieneu4lizzatanelcontestodiunpianoeritornafalsesignificacheilpianononèapplicabile.Quandovieneu4lizzatoinunbodydelpiano,ilreturnfalsefaràfalliràilpianochehachiamatol’azioneinterna.

Un’azioneinternapuòres4tuire:•  unvalorebooleano:indicasel'esecuzionedell’azioneinternahaavutosuccessoo

meno•  uniteratorediunificatori:vieneu4lizzataperanalizzaresoluzionialterna4ve

quandol’azioneinternavieneu4lizzatanelcontestodeipiani.

Page 11: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

PersonalizzazionedellaclasseAgent

DalpuntodivistadiuninterpreteAgentSpeakesteso,unagenteè:•  uninsiemedibelief

•  unaseriedipiani

•  funzionidiselezionedefinitedall'utente

•  funzionedifiducia(unrapportosocialmenteacceTabileperimessaggiricevu4)

•  BeliefUpdateFunc4on

•  BeliefRevisionFunc4on

•  circumstance:comprendeglieven4incorso,leintenzionievariealtrestruTurechesononecessariedurantel'interpretazionediunagenteAgentSpeak

L'implementazionepredefinitadiquestefunzioniècodificatainunaclassechiamataAgent,chepuòesserepersonalizzatadaglisviluppatorialfinediestenderelefunzionalitàdibase.

11AnnaTamburro

Page 12: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

PersonalizzazionedellaclasseAgent

12AnnaTamburro

LaclasseAgentcomprendeunaseriedimetodisucuivieneeffeTuatooverride:

Diagrammadelleclassi:Agent

Page 13: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

AlcunideimetodidellaclasseAgentchevengonosoTopos4adoverridesonoiseguen4:

•  selectMessage(Queue<Message>mailbox):selezionailmessaggiochesaràges4tonelciclodiragionamentocorrente.L’implementazionedidefaultrimuoveeres4tuisceilprimomessaggiodellapostadell’agente

•  selectEvent(Queue<Event>events):selezional'eventocheverràges4tonelciclodiragionamentocorrente.L’implementazionedidefaultrimuoveeres4tuisceilprimoeventodellacoda

•  selectOp1on(List<Op4on>op4ons):questometodovieneu4lizzatoperselezionareunatradiverseopzioni.L’implementazionedidefaultrimuoveeres4tuiscelaprimaopzionesecondol’ordineincuiipianisonosta4scrifnelcodice.

PersonalizzazionedellaclasseAgent

13AnnaTamburro

Page 14: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

•  selectInten1on(Queue<Inten4on>inten4ons):selezional'intenzionediessereulteriormenteeseguitonelciclodiragionamentocorrente.L’implementazionedidefaultrimuoveeres4stuiscelaprimaintenzioneincodaedopol’esecuzionel’intenzionevieneinseritaallafinedellacoda.Leintenzionivengonoeseguitesecondol’algoritmodischedulingRoundRobin

•  socAcc(Messagem):res4tuiscetrueseilmessaggiomèsocialmenteacceTabile.L’implementazionedidefaultres4tuiscetruepertufimessaggi.Nelleapplicazioniincuilasicurezzaèunproblema,ènecessariosovrascriverloperchél’agentepotrebberisultaresuscefbileadaTacchi

•  buf(List<Literal>percepts):aggiornalabasedibeliefconiprecefda4eaggiungetuficambiamen4chesonosta4effefvamenteesegui4comenuovieven4nelsetdieven4.

•  brf(Literaladd,Literalrem,Inten4oni):rivedelabeliefpermeTendol’aggiuntaelarimonzione(sepresente)diununleTerale.IlterzoparametroèlastruTuradell’intenzionecheharichiestoilcambiamentodibelief.LoscopodiquestometodoèesseresoTopostoadoverride,inquantol’implementazionedidefaultnonfanulla.

PersonalizzazionedellaclasseAgent

14AnnaTamburro

Page 15: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

LafunzionediBeliefUpdateaggiornasemplicementelabeliefegeneraglieven4esterni,manonnegaran4scelaconsistenza.SpeTaallosviluppatoredelmodelloambientefareinmodochelecontraddizioninonsiverifichino.

L’implementazionedidefaultdellaBeliefUpdatefunc4onfunzionacomesegue:

forallb∈Bifb∉P

thendeletebfromB

add⟨-b,⊤⟩toEforallp∈P

Ifp∉BthenaddptoBadd⟨+p[source(percept)],⊤⟩toE

PersonalizzazionedellaclasseAgent

B:InsiemeditufiliTeralinellabeliefP:listadeipercefaTualiE:insiemedeglieven4

15AnnaTamburro

Page 16: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Comeesempiodipersonalizzazionediunagenteusiamoilrobotaspirapolvere.Esempio:cambiamoeventselec4onfunc4ondelrobotinmododadareprioritàaglieven4crea4quandovienepercepitolosporco.

importjason.asSeman4cs.*;importjason.asSyntax.*;importjava.u4l.*;publicclassDirtyFocusAgentextendsAgent{

sta4cTriggerfocus=Trigger.parseTrigger("+dirty[source(percept)]");@OverridepublicEventselectEvent(Queue<Event>events){

Iterator<Event>i=events.iterator();while(i.hasNext()){ Evente=i.next(); if(e.getTrigger().equals(focus)){ i.remove(); returne; }}returnsuper.selectEvent(events);

}}

PersonalizzazionedellaclasseAgent

STEP:1.  Lacodadiquestoagentepuòavereeven4del

4po:dirty,pos(r),andpos(l)einaggiuntaglieven4internicrea4daisuoiproposi4

2.  IlmetodoselectEventcontrollatufglielemen4dellacodaecontrollaseiltriggerèugualeadirty[source(percept)]

3.  Seesisteuntaleevento,vienerimossodallacodaeres4tuitoperessereges4todalciclodiragionamentocorrente

4.  Altrimen4,chiamal'implementazionepredefinitadelmetodores4tuendol’elementoall’iniziodellacoda.

16AnnaTamburro

Page 17: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

PersonalizzazionedellaclasseAgent

importjason.asSeman4cs.*;importjason.asSyntax.*;importjava.u4l.*;publicclassIdleAgentextendsAgent{

sta4cTermidle=DefaultTerm.parse("idle");@OverridepublicInten4onselectInten4on(Queue<Inten4on>inten4ons){

Iterator<Inten4on>ii=inten4ons.iterator();while(ii.hasNext()){ Inten4oni=ii.next(); if(isIdle(i)){ if(inten4ons.size()==1){ ii.remove(); returni; }

}else{//siriferiscealprimoif ii.remove();

returni; }//endelse }//endwhile

returnnull;}

Esempio:ilcodiceseguenteimplementaunainten4onselec4onfunc4onnelcodicediAgentSpeakperunqualcheAgente.

•  L'intenzione,chiamiamola“intenzionediinafvità”,deveessereselezionatasoloquandononc'ènientealtrodafare

•  Finchèl'agentehamolteintenzioni,nondovrebbemaiessereselezionatal'intenzionediinafvità

17AnnaTamburro

Page 18: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

PersonalizzazionedellaclasseAgent

privatebooleanisIdle(Inten4oni){

for(IntendedMeansim:i.getIMs()){

Predlabel= im.getPlan().getLabel();

if(label.hasAnnot(idle)){ returntrue; } } returnfalse;

}}

18AnnaTamburro

•  Percontrassegnarel'intenzionecome'inafvo',ilprogrammatoreaggiungeun'annotazionediinafvitànell'e4cheTadelpianocheformeràl'intenzione.

•  QuestopuòcomportareproblemidiconcorrenzaquandonuovefunzionidiselezionevengonointrodoTesenzatroppaaTenzione.

•  Nelcasoincuil’ambientesiatroppodinamico,invece,risultau4lemeTeredapartequalcheevento.

Esempio:ilcodiceseguenteimplementaunainten4onselec4onfunc4onnelcodicediAgentSpeakperunqualcheAgente.

Page 19: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Perunagenteèessenzialelavorareefficacementeinunsistemamul4-agenteeperfarequestodeve:•  interagireconl'ambiente

•  Interagireconaltriagen4

L'interpreteAgentSpeakèsoloilmoduloragionamentoall'internodell’architeTuradiunagentecomplessivachesiinterfacciaconilmondoesterno.IlterminearchiteIurastaadiden4ficarel'architeTuracomplessivadell’agente.

L’architeTurafornisce:

•  percezione(tramiteisensori)

•  Azione(modellazionedell'agentetramiteglieffectors),

•  ilmodoincuil'agentericevemessaggidaaltriagen4.

Ques4aspefpossonoancheesserepersonalizza4perogniagentesingolarmente.

Personalizzazionedell’architeTura

19AnnaTamburro

Page 20: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

L’implementazionedell’architeTuradidefaultsitrovanellaclasseAgArchchel’utentepuòestenderequandorisultanecessario.Questaclasseèunbridgeperl’infrastruTurasoTostantemul4-agenteinmodocheilprogrammatorepossapersonalizzare,senzapreoccuparsidicomevieneimplementataconcretamentelapercezioneedellacomunicazionechevengonoges4tealivelloarchiteTurale.

Personalizzazionedell’architeTura

perceive:res4tuisceunelencodiliTeralicherappresentanoquantoappenapercepitodall'agente.L'implementazionepredefinitaofenesemplicementelepercezioniinvia4dall'ambienteelores4tuisce.act:quandol'esecuzionediqualcheintenzionecon4eneun'azione,questometodovienechiamatopereseguirel'azione.Ilprimoargomentocon4eneideTaglidell'azionesendMsg:inviaunmessaggioaunaltroagentebroadcast:questometodoinviaunmessaggioatufgliagen4no4checondividonol'ambientecheckMail:questometodoleggetufimessagginellacaselladipostadell'agentealivelloinfrastruTuraeliaggiungenellacaselladipostaalivellodiinterpretecomeistanzedelmessaggiodellaclasseJason.

20AnnaTamburro

Page 21: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

importjason.asSyntax.*;importjason.architecture.*;importjava.u4l.*;publicclassVCArchextendsAgArch{

@OverridepublicList<Literal>perceive(){

//u4lizzalapercezionedidefaultList<Literal>per=super.perceive();//senullaècambiantonell’ambienteif(per!=null){

Iterator<Literal>ip=per.iterator();while(ip.hasNext()){

Literall=ip.next();if(l.getFunctor().equals("pos")){

ip.remove();}

}}

returnper;}

}

Personalizzazionedell’architeTura

Quandosipersonalizzanoalcunidiques4metodi,èspessoopportunou4lizzarel'implementazionepredefinitainAgArchesolodopochehaterminatolasuaesecuzionesipassaaprocessareilvalorediritornodiques4metodi.

Esempio:rimuovereognipercezionerela4vaalposizionamentoperl’agenteaspirapolvere:

MASvacuum_cleaning{environment:VCWorldagents:vcagentArchClassVCArch;

}

QuestaclassevieneassegnataadunagentenelfilediconfigurazionedelprogeTousandolaparolachiaveagentArchClass.

21AnnaTamburro

Page 22: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Esempio:supponiamodivolercontrollare,alivellodiarchiteTura,azioniperagen4aspirapolvereinmodochepossacompieresoloazioniadestraeasinistra.Leazionicheilrobotpuòsceglieredifarenonsarannoeseguite,anchesel’interpreteleconsideraeseguiteconsuccesso.Questo4podipersonalizzazionedell’architeTuravieneusataperevitarechegliagen4compianoqualcosadiproibitoopericoloso,datocheessisonoautonomiedèquindidifficilegaran4rechenontenteràdifarecertecose.

@Overridepublicvoidact(Ac4onExecac4on,List<Ac4onExec>feedback){

Stringafunctor=ac4on.getAc4onTerm().getFunctor();if(afunctor.equals("le�")||afunctor.equals("right")){ //fingechel’azionesiaeseguitaconsuccessoelaimpostaatrue ac4on.setResult(true); feedback.add(ac4on);}else{ //richiamal’implementazionedidefault super.act(ac4on,feedback);}

}

Personalizzazionedell’architeTura

22AnnaTamburro

Page 23: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Esempio:torniamoall'esempiorobotdomes4coesupponiamochel'agentesupermarketdeveignorareimessaggiinvia4dagliagen4owner.SicambiailmetododipostacheckMail()inmododarimuoveretalimessaggialivellodiarchiteTura.

Personalizzazionedell’architeTura

@OverridepublicvoidcheckMail(){//richiamal’implementazionepredefinitvaper//rimuovereimessaggiconcondizionemailbox.super.checkMail();//rimuovetufimessaggiinvia4dagliagen4ownerIteratorim=getTS().getC().getMailBox().iterator();while(im.hasNext()){

Messagem=(Message)im.next();

if(m.getSender().equals("owner")){im.remove();//inviaunmessaggioall’agenteownerper//informarlocheisuoimessaggiverrannoignora4Messager=newMessage("tell",getAgName(),m.getSender(),"msg(\"Youarenotallowedtoorderanything,"+"onlyyourrobotcandothat!\")");sendMsg(r);

}//endif }//endwhile }//endcheckMail

23AnnaTamburro

Page 24: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

E’possibilepersonalizzareanchelaclasseBeliefBasecheèl’interfacciaimplementatadallaclasseDefaultBeliefBase(implementazionedidefault).

PersonalizzazionedellaBeliefbase

add(literalBel):aggiungeunleTeralenellaBB.Res4tuiscetrueseèstataaggiuntalabelief

remove(literalBel):rimuoveilleTeraledallaBB.Res4tuiscetrueselabeliefèstataeffefvamenterimossa

contains(literalBel):controllaseunleTeralesitrovabellaBBelores4tuisce.

getRelevant(literalBel):res4tuisceuniteratorepertuTelebelief

24AnnaTamburro

Page 25: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

CisonoduepersonalizzazionidellaBBdisponibiliconladistribuzioneJason:1.  memorizzalebeliefinunfileditesto(inmododamantenerelostatodellaBBdiun

agente)2.  memorizzaalcunedellebeliefinundatabaserelazionale(puòessereusataperl’accessoa

qualsiasidbrelazionale).

PersonalizzazionedellaBeliefbase

25AnnaTamburro

Page 26: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

MemorizzazionedellebeliefinunfileditestoPerconfigurarel'agenteadu4lizzarelaBBpersistenteinununicofilesiusaquestaconfigurazione:

PersonalizzazionedellaBeliefbase

MAScustBB{agents:abeliefBaseClassjason.bb.TextPersistentBB;}

Ognivoltachesieseguequestoagente,lesuebeliefvengonocaricatedaunfile(denominato<nomedell'agente>.bb)e,primaditerminare,lesuebeliefsonomemorizzatenellostessofile.Sino4cheilcodiceAgentSpeakrimanelostessoindipendentementedallapersonalizzazionedellaBB.L'aTuazionediquestaBBsos4tuiscesemplicementel’initefermaimetodipercaricareesalvarelebelief.

26AnnaTamburro

Page 27: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Memorizzazionedellebeliefinundatabaserelazionale•  Peru4lizzarelapersistenzainundatabase,(JavaDataBaseConnec4vity)siusalafeature

JavaJDBC•  NonvengonomemorizzatetuTelebeliefinundatabase,masoloquelleesplicitamente

elencate

•  Laconnessionepersonalizzatarichiede5parametri:

–  Driverjdbc

–  URLperlaconnessione

–  Nomeutente

–  Password

–  Unalistadibeliefmappatenellatabellatablece

PersonalizzazionedellaBeliefbase

MAScustBB{agents:abeliefBaseClassjason.bb.JDBCPersistentBB("org.hsqldb.jdbcDriver",//driverforHSQLDB"jdbc:hsqldb:bookstore",//URLconnec4on"sa”,//user"",//password"[count_exec(1,tablece)]");

}

27AnnaTamburro

Page 28: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

Memorizzazionedellebeliefinundatabaserelazionale•  Selatabellatablecenonesiste,vienecreata

•  Conquestaconfigurazione,sialaleTurachelamodificaallebelief,vengonomappateconcomandiSQL.

PersonalizzazionedellaBeliefbase

28AnnaTamburro

MAScustBB{agents:abeliefBaseClassjason.bb.JDBCPersistentBB("org.hsqldb.jdbcDriver",//driverforHSQLDB"jdbc:hsqldb:bookstore",//URLconnec4on"sa”,//user"",//password"[count_exec(1,tablece)]");

}

Page 29: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

IllinguaggioAgentSpeakinterpretatodaJasonacceTadirefvedelcompilatore.Ledirefvevengonou4lizzateperpassarealcuneistruzioniall'interpretenonlegateallaseman4cadellinguaggio,masemplicementesintafche.Esistonodue4pididirefvechepossonoessereinseriteinqualsiasipuntodelcodiceAgentSpeak:•  single-commanddirec4ves•  scopedirec4ves

EsempiodiSingle-commanddirec1ves:"{"<direc4ve-name>"("<parameters>")""}”

EsempiodiScopedirec1ves:"{""begin"<direc4ve-name>"("<parameters>")""}"

<agentspeak-program>"{""end""}"

Pre-processingDirec4ves

29AnnaTamburro

Page 30: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

UnacaraTeris4cainteressantediJasonèchel'insiemedidirefvedelcompilatorepuòesserefacilmenteestesodalprogrammatore.Ogninuovadirefvavieneprogrammatainunaclassecheimplemental'interfacciaDirec4ve.Questainterfacciahasolounmetodo:

•  Agentprocess(Preddirec4ve,AgentouTerContent,AgentinnerContent):

–  ilparametropredicatorappresentaladirefva

–  ouTerContentrappresentailpuntoincuideveessereusataquestadirefva

–  innerContentindicailcontenutoracchiusodalladirefva.

–  Ilcontenutointernohaunaseriedipianiebeliefchedevonoesseremodifica4dalladirefva

–  Ilmetododeveres4tuireunanuovaistanzadell’agenteincuisonocontenu4ipianielebeliefmodifica4.

Pre-processingDirec4ves

30AnnaTamburro

Page 31: Benvenu4 alla lezione di “Programming mul4-agent systems in … · 2017. 5. 25. · Benvenu4 alla lezione di “Programming mul4-agent systems in AgentSpeak using Jason” ... Jason

FINESperosisiacapitoqualcosa:)

AnnaTamburro26/05/2016