• No results found

A new division of labour and a challenged collegiality

In document View of Vol 10 No 3 (2020) (sider 31-34)

Há mais de 30 anos que a Inteligência Artificial (IA) procura resposta para problemas que se caracterizam pela sua grande complexidade (número, variedade e natureza das tarefas) e por não apresentarem uma «solução algorítmica», apesar de existir conhecimento que permite a sua modelação através de comportamentos semelhantes a um ser inteligente (autonomia, aprendizagem, conhecimento, etc.). No fundo, a IA procura construir (e aprender a construir) programas que, segundo critérios definidos, exibem um comportamento coerente na realização de uma dada tarefa.

Em paralelo, o crescimento de recursos distribuídos e interligados por redes de dados, obrigam à definição de novas metodologias de desenvolvimento de sistemas informáticos, pois as técnicas tradicionais lidam de forma deficiente com problemas de distribuição e interoperabilidade.

Neste ambiente, no início dos anos noventa, surge o promissor paradigma de programação por agentes, concebido especificamente para ambientes distribuídos com vista a explorar as capacidades de comunicação. Apesar de poder conter um único agente, e. g., os assistentes pessoais, o maior potencial desta aproximação reside, inequivocamente, nos sistemas multiagentes. A definição de agente está longe de ser consensual, sendo possível

fortemente, da perspectiva e da utilização. Parunak afirma, provocante, que existem quase tantas definições para agente quanto investigadores na área [135]. De acordo com Stuart Russel e Peter Norvig, um agente percepciona o ambiente utilizando sensores e interage através de actuadores. Esta definição depende de três factores: os sensores, os actuadores e o ambiente [136]. Noutro contexto, Michael Genesereth defende que a característica essencial é a capacidade de comunicar através de uma linguagem [137]. Pattie Mae define agentes enfatizando a autonomia [138] que permite a realização de objectivos em ambientes complexos. Michael Coen acrescenta à autonomia, a robustez, e a capacidade de recolher, negociar e coordenar a informação entre agentes [139]. A IBM define agentes inteligentes como entidades aplicacionais que desempenham um conjunto de operações em representação de um utilizador, empregando uma representação de conhecimento sobre os desejos e objectivos do utilizador. Van Parunak define «agente» como um entidade de software que encapsula informação, código, o seu próprio controlo de execução (fazendo dele um objecto activo) e a capacidade de se activar sem evocação externa [135]. Outra proposta [140], define agentes através das suas capacidades, em especial:

• Autonomia: Capacidade de autonomia de raciocínio, em controlo das suas acções e do seu estado interno, e de operação sem a intervenção externa, resultando em pró-actividade de comportamento guiado por objectivos;

• Reactividade: Sensibilidade ao ambiente e capacidade de resposta às alterações para satisfazer objectivos, em tempo real;

• Adaptabilidade e aprendizagem: Capacidade de adaptação a situações novas, para as quais não foi fornecido todo o conhecimento necessário com antecedência;

• Socialização: Capacidade de interacção com outros agentes e meio ambiente, através de actividades sociais (cooperação, negociação) com o recurso a uma linguagem de comunicação.

A autonomia é, provavelmente, a única capacidade genericamente aceite; as restantes levantam celeuma, incluindo a aprendizagem. Michael Georgeff, responsável por um dos sistemas de multiagentes de maior sucesso na área do controlo de tráfego aéreo, descreve os seus agentes como entidades desprovidas de capacidade de aprendizagem, o que assegura a possibilidade da sua aplicação. Caso contrário, não seriam aceites na execução de tarefas críticas e de tão elevada responsabilidade.

É essencial fazer a distinção entre agentes e objectos, evitando uma confusão muito comum sobretudo na comunidade familiarizada com a programação orientada por objectos. Apesar de existirem características semelhantes, (tais como o encapsulamento de código e estados, capacidade de execução de acções e métodos dependendo dos estados internos, e comunicação por mensagens), as distinções entre paradigmas são significativas.

A maior distinção reside na capacidade assumida pelos agentes de efectuarem escolhas sobre as suas acções e interacções. Um agente não pode ser directamente invocado como um objecto, recaindo sobre si a decisão de atender um pedido, o que é uma diferença importante, pois nenhum objecto se recusa a executar um método. Um objecto não exibe controlo sobre o seu comportamento. Uma outra diferença encontra-se na noção de flexibilidade (reacção, pró-actividade e socialização) que está ausente, no paradigma da programação por objectos. Finalmente, assume-se que um agente possui controlo sobre a sua execução, i. e., é um programa ou pelo menos um processo que executa, de forma autónoma, situação que não acontece com os objectos tradicionais, que são passivos; i. e., estão disponíveis para serem invocados.

Tendo em consideração estas distinções é, todavia, possível especificar objectos que se assemelhem a agentes, em especial objectos activos, dotados de controlo sobre a sua execução. Porém, neste caso, existe um afastamento da visão tradicional orientada por objectos.

Ao longo desta dissertação, assume-se como sistema baseado em agentes, um sistema em que a principal abstracção é o agente, e para agente adopta-se a proposta de [141], onde é definido como um programa de computador capaz de executar uma acção autónoma num ambiente dinâmico, imprevisível e aberto. Na definição anterior, autonomia é um conceito mais difícil de precisar, tendo-se adoptado a definição apresentada em [140], ou seja, a capacidade de um sistema actuar sem a directa intervenção de outros agentes (incluindo humanos), tendo o controlo das suas acções e do seu estado interno. Os ambientes dinâmicos, imprevisíveis e abertos são caracterizados por uma elevada actividade (não sendo possível conhecer, a priori os seus componentes), verificando-se constantemente mudanças, com elevada heterogeneidade de componentes (produzidos por diferentes entidades, com metodologias, técnicas e ferramentas distintas).

Nos próximos anos é expectável que a tecnologia de agentes desempenhe um papel relevante em diversas áreas, especialmente em ambientes inteligentes, onde pode auxiliar a ultrapassar as limitações actualmente impostas, permitindo a obtenção da computação ubíqua. Todavia, apesar de todas as potencialidade, a maioria das aplicações não são, nem devem ser, desenvolvidas com uma abordagem orientada por agentes. A utilização de agentes não é adequada a situações em que é necessário manter um controlo global do sistema, onde respostas em tempo real têm que ser asseguradas e não são admissíveis soluções de bloqueio, em especial se for relevante manter uma visão global do sistema. A tecnologia de agentes é aplicável a ambientes complexos, dinâmicos e abertos, onde a interacção entre sistemas heterogéneos, com fronteiras pouco definidas, é uma realidade. Em particular se for determinante a presença de autonomia, para a obtenção de uma

resposta dinâmica às alterações de circunstâncias, com vista à realização dos objectivos propostos (que podem ser sobrepostos e concorrentes).

São muitas as razões que justificam as expectativas no paradigma de agentes, para a abertura de novas soluções para a engenharia informática. Entre outras, por ser: i) uma metáfora natural para lidar com sistemas complexos, consensualmente caracterizados por um elevado número de interacções; ii) adequados à produção de sistemas distribuídos a nível de dados e controlo; iii) aplicáveis à integração de sistemas legados através da sua agentificação e, finalmente; iv) capazes de responderem às necessidades dos sistemas abertos, com elevada dinâmica, de difícil especificação, com grandes exigências de flexibilidade e autonomia na tomada de decisão [142, 143].

Neste enquadramento, os sistemas poderão ser profundamente repensados numa perspectiva de parceria cooperante com os objectivos do utilizador, ultrapassando, assim, o papel até agora reservado de meros actores passivos. As maiores expectativas estão centradas na optimização da exploração de infra-estruturas, nos recursos distribuídos, na consolidação dos processos de automação de filtragem e recolha de informação, bem como na aplicação às áreas da bio-informática, monitoração e controlo.

Na produção de sistemas baseados no paradigma de agentes, a unidade principal de encapsulamento é o agente. O desenvolvimento passa, assim, a ser suportado na construção de agentes, e de comunidades de agentes, com o recurso a primitivas-base de elevada abstracção, entre outras: objectivos, escolhas, comportamentos, mensagens (e. g., pedidos, ofertas, recusas, permissões, etc.). Neste sentido, é necessário elevar os níveis de abstracção e construir os sistemas sobre novas unidades de re-encapsulamento, à semelhança do que se verificou na transição da programação imperativa, para a programação orientada por objecto, em que se passou, da unidade-base de abstracção função, para o objecto [144].

Linguagem de programação Bibliotecas de objectos Infra-estrutura de Agentes Comportamentos do Agente Agente (programa) Comunidades de Agentes Ambiente de Agentes

Camadas de abstracção Descrição

Base do desenvolvimento aplicacional (e. g., Java) Aumento de abstracção (e. g., RMI)

Plataforma de suporte criação de agentes (e. g., JADE, Zeus) Acções de agentes (e. g., Resposta a uma acção)

Conjunto de comportamentos (e. g., Agente)

Conjunto de agentes (e. g., Infra-estrutura FIPA de agentes) Conjunto de comunidades de agentes

Linguagem de programação Bibliotecas de objectos Infra-estrutura de Agentes Comportamentos do Agente Agente (programa) Comunidades de Agentes Ambiente de Agentes

Camadas de abstracção Descrição

Base do desenvolvimento aplicacional (e. g., Java) Aumento de abstracção (e. g., RMI)

Plataforma de suporte criação de agentes (e. g., JADE, Zeus) Acções de agentes (e. g., Resposta a uma acção)

Conjunto de comportamentos (e. g., Agente)

Conjunto de agentes (e. g., Infra-estrutura FIPA de agentes) Conjunto de comunidades de agentes

Figura 9 – Camadas de abstracção da programação de agentes. (figura adaptada de [144])

A Figura 9 apresenta as camadas de construção dos sistemas à luz do paradigma de agentes, desde a linguagem de programação (no mais baixo nível de abstracção), até ao ambiente de agentes (o mais alto nível). A biblioteca de objectos disponibiliza as capacidades fundamentais que permitem a um agente participar numa sociedade. A infra-estrutura de agentes, disponibiliza um motor de comportamentos construídos por objectos ou regras, que permitem a definição global do comportamento do agente, baseado numa filosofia multitarefa. A camada seguinte permite utilizar o agente como unidade de encapsulamento-base. As duas camadas seguintes, representam agregações de agentes: a Comunidade de Agentes, que define um conjunto de agentes que partilha objectivos comuns (exigindo consequentemente fortes interacções); e o Ambiente de Agentes, (concepção mais abstracta) que permite agregar comunidades. A camada que distingue a programação orientada por objectos, da programação orientada por agentes, é a «Infra-estrutura de agentes».

A adopção efectiva do paradigma de agentes está, naturalmente, condicionada ao amadurecimento das suas técnicas e metodologias, permitindo demonstrar a sua adequação, eficácia e robustez. As áreas de maior trabalho intensivo estão representadas na Figura 10, onde se procurou sistematizar as etapas e abordagens adoptadas.

Paradigma de Agentes Fonte de técnologia Metáfora de desenho de sistemas Modelação sistemas complexos para simulação Metodologias de Modelação e Implementação Modelação Formal Modelação Ad-hoc Verificação Específicação Implementação Verificação Refinamento Manual Execução Directa Tradução/ Compilação Orientadas por objecto Conhecimento Axiomática Semântica Modelos de Arquitectura Deliberativo Comportamental Híbridas Arquitecturas de Infra- estrutura operacional

As principais áreas são: i) uma metáfora de desenho de sistemas; ii) uma fonte de tecnologia para a construção dos referidos sistemas, ou ainda; iii) um processo de modelação de sistemas reais complexos para simulações, tais como os biológicos, os económicos e os ambientais.

2.4.1 Uma nova metáfora para o desenho de sistemas

O ímpeto inicial dos agentes deveu-se à modelação de ambientes complexos e distribuídos. Isto aconteceu devido ao facto do paradigma lidar, de forma elegante e versátil, com a heterogeneidade e a independência, resolvendo, com naturalidade, as interacções entre componentes, sendo estas características difíceis de capturar por técnicas de modelação tradicionais. Todavia, o paradigma ainda não atingiu um estado de maturação suficiente, não existindo metodologias genericamente aceites para o desenvolvimento de sistemas de agentes. O trabalho a realizar é vasto, e abrange: i) a consolidação das metodologias de modelação de sistemas; ii) das arquitecturas de desenvolvimento; e iii) das infra-estruturas operacionais.

In document View of Vol 10 No 3 (2020) (sider 31-34)