How Agents Do It In Stream Logic Programming




















- Slides: 20
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 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 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. 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 <-. . . + 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): - 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): - 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 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: 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 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, . . . )|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 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 <- 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): - 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 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) <- 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 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 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 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 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