Inteligência Artificial– 2015/1 Prof. Felipe Meneguzzi Lista de Exercı́cios de Programação Orientada a Agentes Entrega: 21 de Abril de 2015 Nome: Programação Orientada a Agentes 1 1. Suponha que um agente tenha a seguinte biblioteca de planos (plan library): @p1 +g (X , Y) @p2 +g (X , Y) @p3 +g (X , ) @p4 +g (X , Y ) [ @p5 +g (X , Y ) [ @p6 [ a l l u n i f s : t r u e <− . . . . : a (Y) & n o t b (X) <− . . . . : a (Y) & Y > X <− . . . . s o u r c e ( s e l f ) ] : t r u e <− . . . . s o u r c e ( s e l f ) , s o u r c e ( ag1 ) ] : t r u e <− . . . ] +g ( 1 0 , Y) : a (Y) <− . . . . . e as seguintes crenças (beliefs): a (10). a (5). b(20). Se o evento h+g(10, 5)[source(ag1)]i é selecionado, quais planos são relevantes e quais são aplicáveis? Solution: Relevantes: p1, p2, p3, p5, p6 Aplicáveis: p1, p2, p5, p6 2. Considerando que o estado da pilha de intenções de um agente é como mostrado abaixo: +!g2 : true <− a3; a4. +!g1 : true <− !g2. +b : true <− !g1; a1. (a) Qual será o estado da intenção depois que a ação a3 for executada? E depois da a4? Solution: Após a3: +!g2 : true <− a4. +!g1 : true <− !g2. +b : true <− !g1; a1. Após a4: +!g1 : true <− !g2. +b : true <− a1. (b) Se a biblioteca de planos do agente incluir o seguinte plano: −!g1 : t r u e <− a5 . 1 Questões adaptadas do livro Programming Multi Agent Systems in AgentSpeak using Jason. Lista de Exercı́cios de Programação Orientada a Agentes Inteligência Artificial Prof. Felipe Meneguzzi qual será o estado da intenção acima se a ação a3 falhar? Solution: -!g1 : true <− a5 +b : true <− !g1; a1. 3. Assinale verdadeiro ou falso para cada uma das afirmações abaixo, justificando a resposta no caso de a afirmação ser falsa. (a) Em agentes, proatividade significa ser sensı́vel às mudanças no ambiente. (a) Falso (b) Verdadeiro (b) Em Jason, ações pré-definidas iniciam com ’.’, como .send(). (c) No modelo BDI, as crenças (Beliefs) descrevem os estados em que os agentes acreditam ser possı́veis de alcançar. (c) Falso (d) Em um sistema de raciocı́nio procedural (Procedural Reasoning System), um plano possui três componentes, um objetivo, um contexto e um corpo. (d) Verdadeiro Solution: (a) Proatividade significa ser capaz de apresentar um comportamento direcionado à objetivo. (c) As crenças descrevem o que o agente acredita existir e ser verdade em um determinado ambiente. 4. O robô usado no Listing 1 tem planos (identificados por h1-h3) ativados quando o agente tem um objetivo que unifica has(owner, beer) independente do source do objetivo (i.e. pessoal ou delegado ). Modifique estes planos para seres ativados apenas se a fonte do objetivo seja o agente dono. Solution: +!has(owner, beer)[source(owner)] 5. No código do robô( 1) temos dois planos para o objetivo !at. O que aconteceria se mudássemos a ordem deles (m2 antes de m1)? O que aconteceria se o segundo plano não tivesse um contexto, como no código abaixo? @m1 +! a t ( r o b o t , P) : a t ( r o b o t , P) <− t r u e . @m2 +! a t ( r o b o t , P) : t r u e <− m o v e t o w a r d s (P ) ; ! at ( robot ,P ) . O comportamento do robô seria o mesmo ao do código original? Neste caso, o que aconteceria se trocássemos a ordem dos planos? Lista de Exercı́cios de Programação Orientada a Agentes Inteligência Artificial Prof. Felipe Meneguzzi Solution: Ao mudar a ordem, primeiro será testado se o plano m2 é aplicável, ao invés do m1 (na posição original). Na nova suposição, quando m1 não é aplicável, automaticamente m2 é aplicado. Ao invertêlos, m1 nunca será aplicado, uma vez que m2 sempre será. Listing 1: Jason example /∗ I n i t i a l b e l i e f s ∗/ a v a i l a b l e ( beer , f r i d g e ) . l i m i t ( beer , 1 0 ) . /∗ R u l e s ∗/ too much (B) :− . d a t e (YY,MM,DD) & . c o u n t ( consumed (YY,MM, DD, , , , B ) , QtdB ) & l i m i t (B , L i m i t ) & QtdB > L i m i t . /∗ P l a n s ∗/ @h1 +! h a s ( owner , b e e r ) : a v a i l a b l e ( b e e r , f r i d g e ) & n o t too much ( b e e r ) <− ! a t ( r o b o t , f r i d g e ) ; open ( f r i d g e ) ; get ( beer ) ; close ( fridge ); ! a t ( r o b o t , owner ) ; hand in ( beer ) ; // remember t h a t a n o t h e r b e e r w i l l be consumed . d a t e (YY,MM,DD) ; . t i m e (HH, NN, SS ) ; +consumed (YY,MM, DD, HH, NN, SS , b e e r ) . @h2 +! h a s ( owner , b e e r ) : not a v a i l a b l e ( beer , f r i d g e ) <− . s e n d ( s u p e r m a r k e t , a c h i e v e , o r d e r ( b e e r , 5 ) ) ; ! a t ( r o b o t , f r i d g e ) . // go t o f r i d g e and w a i t t h e r e . @h3 +! h a s ( owner , b e e r ) : too much ( b e e r ) & l i m i t ( b e e r , L ) <− . c o n c a t ( ” The Department o f H e a l t h d o e s n o t a l l o w me ” , ” t o g i v e you more t h a n ” , L , ” b e e r s a day ! I am v e r y s o r r y a b o u t t h a t ! ” ,M) ; . s e n d ( owner , t e l l , msg (M) ) . @m1 +! a t ( r o b o t , P) : a t ( r o b o t , P) <− t r u e . Lista de Exercı́cios de Programação Orientada a Agentes Inteligência Artificial Prof. Felipe Meneguzzi @m2 +! a t ( r o b o t , P) : n o t a t ( r o b o t , P) <− m o v e t o w a r d s (P ) ; ! at ( robot ,P ) . @a1 +d e l i v e r e d ( b e e r , Qtd , O r d e r I d ) [ s o u r c e ( s u p e r m a r k e t ) ] : t r u e <− +a v a i l a b l e ( b e e r , f r i d g e ) ; ! h a s ( owner , b e e r ) . @a2 +s t o c k ( b e e r , 0 ) : a v a i l a b l e ( beer , f r i d g e ) <− − a v a i l a b l e ( b e e r , f r i d g e ) . @a3 +s t o c k ( b e e r , N) : N > 0 & not a v a i l a b l e ( beer , f r i d g e ) <− +a v a i l a b l e ( b e e r , f r i d g e ) . Lista de Exercı́cios de Programação Orientada a Agentes