How Agents Do It In Stream Logic Programming

  • Slides: 20
Download presentation
How Agents Do It In Stream Logic Programming Huntbach, M. M; Jennings, N. R.

How Agents Do It In Stream Logic Programming Huntbach, M. M; Jennings, N. R. ; Ringwood, G. A(ICMAS-95) Seminário apresentado na disciplina PCS-5740 - Fundamentos Lógicos de IA Prof: Jaime S. Sichman 1 o. Quadrimestre de 1999 Simone G D Prado 1

Introdução z. Objetivo: mostrar as vantagens da SLP (Stream Logic Programming) z. Problema: trabalhar

Introdução z. Objetivo: mostrar as vantagens da SLP (Stream Logic Programming) z. Problema: trabalhar com MAS (Multi Agent System) necessita de ferramentas e técnicas próprias z. Soluções: yconstruir linguagens novas (PLACA e MAIL) yusar linguages mais gerais (OBCP - Object Based Concurrent Programming) Simone G D Prado 2

Introdução (cont. . . ) z. OBCP em MAS: yvantagem: se sai bem na

Introdução (cont. . . ) z. OBCP em MAS: yvantagem: se sai bem na complexidade de executar grandes programas em sistemas distribuídos ydesvantagem: restringe os agentes deixandoos muito inflexíveis y. Exemplo de OBCP: ACTORS e ABCL Simone G D Prado 3

Características do SLP z. Sintaxe: x. ACTORS - LISP x. SLP - PROLOG z.

Características do SLP z. Sintaxe: x. ACTORS - LISP x. SLP - PROLOG z. SLP consiste de um conjunto de comportamentos nomeados x. Classe (LOO) xconjunto de clausulas (L Lógica) yvetor de slot de recepção de mensagens xslot => variáveis do Prolog Simone G D Prado 4

Seleção de mensagens z. Forma geral: y<guard> <- <behaviour> act(X, Y): - X=m <-.

Seleção de mensagens z. Forma geral: y<guard> <- <behaviour> act(X, Y): - X=m <-. . . + act(X, Y): - X = n <-. . . z+ representa as alternativas z. Mensagem = termo da lógica de predicados z. Objeto fica suspenso até chegar m/0 ou n/0 Simone G D Prado 5

Seleção de mensagens (cont. . . ) z. Pode-se acrescentar: + act(X, Y): -

Seleção de mensagens (cont. . . ) z. Pode-se acrescentar: + act(X, Y): - X/=m & X/=n <-. . . z. Existe prioridade - ordenação de cláusulas act(m, Y) <-. . . . + act(X, Y) <-. . Simone G D Prado 6

Seleção de mensagens (cont. . . ) z. Pode-se requerer duas mensagens: max(I, J):

Seleção de mensagens (cont. . . ) z. Pode-se requerer duas mensagens: max(I, J): - I > J <-. . + max(I, J): I=<J <-. . z. As restrições não podem ser executadas enquanto não receberem a(s) mensagem(ns). Enquanto isso a cláusula fica suspensa. Simone G D Prado 7

Metas como objetos pouco ativos z. Objeto - meta em Prog Lógica, um comportamento

Metas como objetos pouco ativos z. Objeto - meta em Prog Lógica, um comportamento com um nro de slots z. Em SLP os slots são explícitos e podem ser manuseados. Pode-se ter lista de objetos: <- A << m|act(A, B)|bct(B, C)|. . . O envio da mensagem é assíncrono Simone G D Prado 8

Metas (cont. . . ) z. Uma classe pode receber mensagens e enviar respostas:

Metas (cont. . . ) z. Uma classe pode receber mensagens e enviar respostas: act(m, Y) <- Y << q + act(n, Y) <- Y << r bct (q, Y) <- done { nenhuma troca } <- A<<m | act(A, B)|bct(B, C)|. . <- act(m, B)|bct(B, C)|. . <- B<<q|bct(B, C)|. . <-bct(q, C)|. . <-. . Simone G D Prado 9

Objetos de vida longa e Fluxo z. Os slots podem receber mensagens. z. As

Objetos de vida longa e Fluxo z. Os slots podem receber mensagens. z. As mensagens são termos. z. Termos podem ter slots z. Portanto: act(m(X), Y) <- Y << q(Z)|cct(X, Y) +act(n(X), Y) <- Y << r(Z)|dct(X, Y) os objetos cct/2 e dct/2 tratam dos termos que tem slot Simone G D Prado 10

Objetos. . (cont. . . ) z. As mensagens podem ser multicast: <- X<<m|act(X,

Objetos. . (cont. . . ) z. As mensagens podem ser multicast: <- X<<m|act(X, . . . )|bct(. . . , X, . . . )|cct(. . . , X) z. Podem ser reincarnadas: bct(q(X), Y) <- bct(X, Y) z. Reincarnadas recursivas: bct(q(X), Y) <- Z << r(X)|bct(Z, Y) bct(q(X), Y) <- bct(r(X), Y) envia uma mensagem para si mesmo Simone G D Prado {ou} 11

Objetos. . . (cont. . . ) z. Quando várias mensagens são recebidas no

Objetos. . . (cont. . . ) z. Quando várias mensagens são recebidas no mesmo fluxo: bct(s(t(X)), Y) <- bct(X, Y) bct(s: t: X, Y) <- bct(X, Y) bct([s, t|X], Y) <- bct(X, Y) bct([s|[t|X]], Y) <- bct(X, Y) Simone G D Prado 12

Agentes Simples //vendedor(Preço_corrente, Proposta, Limite_min) vendedor(Perg, Prop: Cont, Limite): - Prop > Limite <-

Agentes Simples //vendedor(Preço_corrente, Proposta, Limite_min) vendedor(Perg, Prop: Cont, Limite): - Prop > Limite <- Cont << aceita(Prop)|vendedor(Perg, Cont, Limite) +vendedor(Perg, Prop: Cont, Limite): Prop < Limite & Nova_P : = (Perg+Prop)/2 & Nova_P > Limite <- Cont << Nova_P: Novo_C | vendedor(Nova_P, Novo_C, Limite) +vendedor(Perg, Prop: Cont, Limite): Prop < Limite & Nova_Perg : = (Perg+Prop)/2 & Nova_P < Limite <- Cont << rejeita(Prop) | vendedor(Perg, Cont, Limite) Simone G D Prado 13

Agentes Simples (cont. . . ) //comprador(Proposta_corrente, Pergunats, Limite_max) comprador(Prop, Perg: Cont, Limite): -

Agentes Simples (cont. . . ) //comprador(Proposta_corrente, Pergunats, Limite_max) comprador(Prop, Perg: Cont, Limite): - Perg < Limite <- Cont << aceita(Perg)|comprador(Prop, Cont, Limite) +comprador(Prop, Perg: Cont, Limite): Perg > Limite & Nova_P : = (Perg+Prop)/2 & Nova_P < Limite <- Cont << Nova_P: Novo_C | comprador(Nova_P, Novo_C, Limite) +comprador(Prop, Perg: Cont, Limite): Perg > Limite & Nova_Prop : = (Perg+Prop)/2 & Nova_P > Limite <- Cont << rejeita(Perg) | comprador(Prop, Cont, Limite) Simone G D Prado 14

Agente simples <<<<<- (cont. . . ) vendedor(100, C, 75)|comprador(40, 100: C, 80) (100+40)/2=70

Agente simples <<<<<- (cont. . . ) vendedor(100, C, 75)|comprador(40, 100: C, 80) (100+40)/2=70 vendedor(100, C, 75)|C<<70: C 1|comprador(70, C 1, 80) vendedor(100, 70: C 1, 75)|comprador(70, C 1, 80) (100+70)/2=85 vendedor(85, C 2, 75)|C 1<<85: C 2|comprador(70, C 1, 80) vendedor(85, C 2, 75)|comprador(70, 85: C 2, 80) (85+70)/2=77. 5 vendedor(85, C 2, 75)|C 2<<77. 5: C 3|comprador(77. 5, C 3, 80) vendedor(85, 77. 5: C 3, 75)|comprador(77. 5, C 3, 80) vendedor(85, C 3, 75)|C 3<<aceita(77. 5)|comprador(77. 5, C 3, 80) vendedor(85, aceita(77. 5), 75)|comprador(77. 5, aceita(77. 5), 80) Simone G D Prado 15

Agentes submissos z. Co-operação cliente-servidor // server(Pedido: Mais_Pedido, Bco. Dados) server(P: Ps, BD) <-

Agentes submissos z. Co-operação cliente-servidor // server(Pedido: Mais_Pedido, Bco. Dados) server(P: Ps, BD) <- transaction(P, BDN)|server(Ps, BDN) 1 o. Arg: fluxo da transação 2 o. Arg: mensagem com o estado do servidor //cliente(Estado, Pedidos, Retorno) cliente(N, Ps, done): - N 1: =N+1 <- Ps << do(N, Retorno): Ts|Cliente(N 1, Ts, Retorno) Simone G D Prado 16

Agentes submissos (cont. . . ) z O servidor pode ser forçado a esperar

Agentes submissos (cont. . . ) z O servidor pode ser forçado a esperar até que a transação seja completada: server 1(P: Ps, data(BD)) <- transaction(P, BDN)|server 1(Ps, BDN) z Para simplificar assume-se que o estado do servidor pe um registro de pedidos processados: transaction(do(Job, Reply), D, D 1) <- D 1<<data(Job: D)|Reply<<done. transaction 1(do(Job, Reply), D, D 1)<-Reply<<done; (D 1<<data(Job: D)) Simone G D Prado 17

Agentes sofisticados z. Arquiteturas reflexivas ou meta nível são usadas pelos MAS. z. Vanilla

Agentes sofisticados z. Arquiteturas reflexivas ou meta nível são usadas pelos MAS. z. Vanilla interpreter: // exec(Fila_de_metas) exec(done) <- done exec(user(Meta)|Rest_Metas) <- clause(user(Meta), Corpo)| exec(Corpo)|exec(Rest_Metas) clause(user(Head), Tail): - C 1&. . . &Cn <- Tail << (user(b 1)|. . . |user(bn)|done) Simone G D Prado 18

Agentes inteligentes // agent 0(Mensagem_Fluxo, Estado_Mental) agent 0(Mens: Fluxo, EMental): - < condições mens

Agentes inteligentes // agent 0(Mensagem_Fluxo, Estado_Mental) agent 0(Mens: Fluxo, EMental): - < condições mens e est mental> <- exec(Mens, EMental, Novo_EMental)| agent 0(Fluxo, Novo_EMental) z O comportamento de exec/3 pode envolver envio de mensagens e/ou atualização de estado mental (crença, crenças comuns) z Enviar uma mensagem informal a um agente: // inform(Time, Agetn, Fact) inform(time_up, Agent, Fact) <- Agent << inform(Fact) Simone G D Prado 19

Conclusões z. O SLP yé potente para o MAS ypode modelar redes neurais yvetor

Conclusões z. O SLP yé potente para o MAS ypode modelar redes neurais yvetor de slots de mensagens receptores yuma mensagem pode conter slot ypossibilita escolha entre comportamentos ytem sido usado para implementar sistema operacional distribuído Simone G D Prado 20