• Nenhum resultado encontrado

nidade, utilizando l´ogica como representac¸ ˜ao de conhecimento e PARLA (da Costa e Bittencourt, 1997) como linguagem de comunicac¸˜ao interagentes. Al´em disso, o n´ıvel cognitivo disp˜oe de duas bases de regras, uma social e outra local, como descrito na figura 5.6. A primeira estabelece regras para a escolha da meta global, que deve ser definida por processo de cooperac¸˜ao entre os agentes. Estabelecido o acordo, a base local, escolhe uma meta local de acordo com o papel do agente na equipe. Base de Regras Local Base de Regras Social MI Base de Fatos Informação Simbólica Mensagens Mailbox Mensagens Nível Cognitivo de Saída

Figura 5.6: N´ıvel Cognitivo

Dada a hierarquia de decis˜oes dentro do agente, permite-se um ciclo de execuc¸˜ao de maior complexidade para o n´ıvel cognitivo. Desta forma, ´e poss´ıvel implementar um SBC orientado por planos, sem as restric¸ ˜oes de tempo real do ambiente, abordando aspectos deliberativos de mais alto n´ıvel.

5.4

A Expert-Coop++

Para a construc¸˜ao do UFSC-Team - equipe desenvolvida utilizando a arquitetura do agente autˆonomo concorrente para atuac¸˜ao no Soccerserver - foi utilizada a Expert-Coop++, uma biblioteca, orientada a objetos, destinada a auxiliar no desenvolvimento de SMA cognitivos sob restric¸ ˜oes de tempo real do tipo melhor esforc¸o. O ambiente consiste em uma biblioteca de classes, implementada na linguagem de programac¸˜ao C++ (da Costa et al., 2003).

A adequac¸˜ao `as restric¸ ˜oes de tempo real de um dom´ınio ´e poss´ıvel devido a classes espec´ıficas para a construc¸˜ao de comportamentos reativos, por interm´edio de controladores nebulosos. Este tipo de soluc¸˜ao garante robustez ao sistema, e especialmente, o sincronismo com o ambiente. Para a construc¸˜ao deste controladores, a Expert-Coop++ incorporou a biblioteca CNCL (Junius e Stepple, 1997), e adicionalmente, alguns comportamentos espec´ıficos ao dom´ınio Soccerserver tamb´em fo- ram implementados. N˜ao obstante, controladores para diferentes aplicac¸ ˜oes podem ser livremente adicionados.

Quanto aos mecanismos para implementac¸˜ao de SBC’s, a Expert-Coop++ prevˆe a abstrac¸˜ao dos dois componentes principais: um m´etodo de resoluc¸˜ao de problemas e a base de conhecimento.

O m´etodo de resoluc¸˜ao de problemas pode ser controlado por encadeamento progressivo ou re- gressivo, determinado por um parˆametro de instanciac¸ ˜ao da classe. Al´em disso, ´e poss´ıvel a utilizac¸˜ao de um SBC com m ´ultiplas bases de conhecimento, como a arquitetura descrita no item 4.2. Isto ´e poss´ıvel pela m ´ultipla instanciac¸˜ao da classe que implementa bases de regras.

Para a implementac¸˜ao da arquitetura que prevˆe a interac¸˜ao entre m ´ultiplos SBC’s, a Expert- Coop++ disponibiliza classes que implementam a comunicac¸˜ao entre sockets UDP/IP e do dom´ınio UNIX. A partir disso, ´e poss´ıvel a instanciac¸˜ao de m ´ultiplos SBC que se comunicam por um destes m´etodos.

As bases de conhecimento prevˆeem representac¸ ˜oes em quadros, l´ogica e regras de produc¸˜ao. A representac¸ ˜ao l´ogica, entretanto, obedece ao padr˜ao (h objeto i h atributo i h valor i ). A figura 5.7 descreve a sintaxe dos formalismos de representac¸ ˜ao de conhecimento suportadas.

(frame 0 (object goal r)

(distance 55.10) (direction -30.00) (distchng -30.00) (dirchng 0.00) (bodydir -30.00) (headdir 0.00) (object flag r b)

(distance 47.90) (direction 7.00) (distchng 7.00) (dirchng 0.00) (bodydir 7.00) (headdir 0.00)) (logic ( game state play_on )) 176

(logic ( reactive_behavior active drive_ball_fwd ))

Figura 5.7: Formalismos de representac¸˜ao de conhecimento suportados pela Expert-Coop++: quadros e

padr˜oes l´ogicos

5.4. A Expert-Coop++ 127

(i f hpremissasi) ( f ilter h?variaveisi) (then hconclusoesi hacoesi)

As premissas e conclus˜oes suportam os formalismos j´a citados, enquanto as ac¸˜oes correspon- dem a mensagens enviadas a outros n´ıveis do agente. Desta forma, a Expert-Coop++ ´e caracterizada por uma representac¸ ˜ao h´ıbrida de conhecimento. A figura 5.8 apresenta uma regra sob esta sintaxe.

(rule_003

(if (logic ( reactive_behavior status reactive_enable )) (logic ( ball proximity ?x1 ))

(frame ( ?zy1 ((ball) (distance ?x2))))) (filter ( != ?x1 far )

( > ?x2 7.0 ))

(then (logic ( ball proximity far )) (logic ( ball control unknown ))

(message ((to Cognitive) (from Instintive)

(deadline 0) (grade 0.0) (alpha 0.0) (round 0.0) (body (INFORM ((logic ( ball proximity far ))))))) (message ((to Cognitive) (from Instintive)

(deadline 0) (grade 0.0) (alpha 0.0) (round 0.0) (body (INFORM ((logic ( ball control unknown )))))))))

Figura 5.8: Sintaxe das regras de produc¸˜ao utilizadas pela Expert-Coop++

O campo ifengloba o conjunto de premissas da regra. Correspondem a perguntas feitas a base de fatos, e podem utilizar tanto a representac¸ ˜ao em quadros como l´ogica. No exemplo, a regra

rule 003 indaga quanto a presenc¸a do padr˜ao l´ogico que indica o status do n´ıvel reativo (habili-

tado/desabilitado) e quanto `a proximidade da bola. Esta ´ultima premissa faz uso de uma vari´avel, reconhecida pelo caracter “?”. A utilizac¸˜ao de vari´aveis pela Expert-Coop++ aumenta a flexibilidade na composic¸˜ao de regras, o que resulta em uma base de menor tamanho. A premissa restante faz referˆencia a um quadro, onde pergunta-se pela distˆancia da bola, tamb´em utilizando uma vari´avel.

O campo filter permite a instanciac¸˜ao das vari´aveis contidas nas premissas. A Expert- Coop++ reconhece o tipo de vari´avel utilizada, simb´olica ou num´erica, sem que se fac¸a qualquer tipo de declarac¸˜ao a priori. Uma vez que todas as operac¸ ˜oes com vari´aveis sejam verdadeiras - no exemplo, se x1 for diferente defare x2 for maior que 7 - ent˜ao as sentenc¸as contidas no campothen

passam a ser verdadeiras, e as ac¸ ˜oes s˜ao executadas.

Observa-se, ainda no campothena presenc¸a de uma estrutura do tipomessage. Estas corres- pondem as ac¸˜oes dos SBC’s. S˜ao mensagem contendo informac¸ ˜oes simb´olicas para o n´ıvel cognitivo

- Cognitive na regra - ou a troca do comportamento reativo para o n´ıvel correspondente. Os de- mais campos correspondem ao grau de certeza da informac¸˜ao (grade) e informac¸ ˜oes sobre restric¸ ˜oes de tempo real (deadline, alpha e round). No exemplo acima, os valores em zero indicam a n˜ao relevˆancia desta informac¸˜ao para a regra. As mensagens est˜ao sob o formato Parla (da Costa e Bit- tencourt, 1997), a linguagem de comunicac¸˜ao entre agentes utilizada pela Expert-Coop desde sua vers˜ao original.

A troca de mensagens ´e implementada por sockets no dom´ınio UNIX, cujas classes espec´ıficas tamb´em est˜ao dispon´ıveis na Expert-Coop++. Estas classes correspondem a uma esp´ecie de mailbox do n´ıvel, e distinguem as mensagens oriundas do ambiente, dos outros agentes, e dos demais n´ıveis do agente.

A relac¸˜ao da Expert-Coop++ com a arquitetura do agente autˆonomo concorrente justifica-a como melhor abordagem de desenvolvimento para o UFSC-Team. Entretanto, sua principal lacuna est´a no processo de aquisic¸˜ao de conhecimento. O conhecimento do agente deve ser provido pela construc¸˜ao das bases de conhecimento de n´ıvel instintivo e cognitivo. E para tanto, n˜ao h´a nenhuma metodologia e/ou abordagem, a n˜ao ser a codificac¸˜ao segundo experiˆencia emp´ırica do engenheiro de conhecimento.

Dada estas restric¸ ˜oes, os principais requisitos da metodologia e/ou abordagem de AC s˜ao:

• a inserc¸˜ao do agente em um SMA coordenado por metas comuns;

• a divis˜ao da complexidade do conhecimento em m´ultiplos n´ıveis de abstrac¸˜ao;

• ferramentas de especificac¸˜ao que se adaptem `a formalismos de representac¸˜ao de conhecimento h´ıbrido.