• Aucun résultat trouvé

8 Proof of Proposition 5.3

Dans le document 2 The Gaussian anti-symmetric model (Page 22-29)

Em arquiteturas baseadas em comportamento, conforme foi visto na Subseção2.4.1, os agentes são motivados internamente para ativar um de seus comportamentos mediante o seu próprio estado, do ambiente e dos demais robôs. Para isso, o framework TAlMech disponibiliza um mecanismo que pode ser usado nos componentes da função de ativa- ção dos comportamentos dos agentes do sistema para verificar as atividades dos demais agentes do sistema.

Este mecanismo mantém um histórico com janela temporal dinâmica dos compor- tamentos dos agentes. Este histórico é adquirido a partir da comunicação entre os agentes

Figura 15 – Diagrama UML da máquina de estado utilizada pelo licitante enquanto licita uma tarefa.

no sistemas durante a execução da aplicação. Cada agente pode assumir um ou nenhum comportamento por vez.

A Figura 16 exemplifica o histórico de comportamento de um agente que possui quatro comportamentos. As janelas mostradas na figura foram capturadas em três instan- tes diferentes. As Figuras 16a, 16b e16c mostram respectivamente a primeira, a segunda e a terceira capturas de janela deste histórico. Os gráficos mostram funções temporais do comportamento do agente dentro de um intervalo predefinido. Este intervalo de tempo é denominado janela, a qual é dinâmica pois se move conforme a estampa temporal (isto é,

data e horário) atual se atualiza. As três figuras mostram a dinâmica da janela através do deslocamento da curva de comportamento.

(a) Primeira captura.

(b) Segunda captura.

(c) Terceira captura.

Figura 16 – Captura do histórico de um agente em três instantes diferentes. Em cada gráfico, o eixo das abcissas identifica as estampas temporais (isto é, data e horário) em que foram feitas as leituras e o eixo das ordenadas identifica o comportamento ativo do agente.

Contudo, a construção do histórico da curva de comportamento de um dado agente do sistema é realizada a partir do recebimento de mensagens através da rede. No fra-

mework TAlMech, essa troca de mensagens acontece no tópico /behavior cujo tipo é talmech_msgs/Behavior. Este tipo de mensagem contém a identificação do agente que

a enviou, do comportamento, a tarefa que está em execução e a estampa temporal gerada na sua criação.

A Figura 17 ilustra a construção do histórico de um agente que possui três com- portamentos. As Figuras 17b, 17c e 17d mostram as estampas temporais das mensagens recebidas que dizem respeito aos comportamentos 1, 2 e 3 do agente em questão, respecti-

vamente. A Figura 17a mostra a curva de comportamento criado a partir das mensagens recebidas.

Primeiramente, uma mensagem do comportamento 1 do agente monitorado é re- cebida, conforme é mostrado na Figura 17b. Este pulso provoca uma rampa de subida na curva de comportamento, fazendo com que o comportamento do agente passe a estar com o comportamento 1 ativo ao invés de nenhum, conforme mostra a Figura17a. Após alguns instantes (timeout), o agente volta a estar com nenhum comportamento ativo. O parâme- tro timeout é a duração máxima que o agente pode manter-se em silêncio. Quando esta duração é excedida, o monitor considera que o agente está com nenhum comportamento ativo.

Na sequência, são recebidas várias mensagens relacionadas ao comportamento 2, de acordo com a Figura 17c. Isso faz com que o agente monitorado passe a estar com o comportamento 2 ativo.

Contudo, logo é recebido um conjunto de mensagens relacionadas ao comporta- mento 3, mediante Figura 17d. Com isso, o agente deixa de estar com o comportamento 2 ativo e passa a estar com o 3 ativo (vide Figura 17a). A seguir, o monitor passa a con- siderar que o agente está com nenhum comportamento ativo, pois este não recebe mais mensagens do agente em questão. Assim que a duração timeout é excedida, ocorre uma rampa de descida de 3 para 0 na curva de comportamento, conforme Figura 17a.

Por fim, o monitor torna a receber mensagens do agente em questão sobre o com- portamento 3, conforme mostra a Figura 17d. Logo, acontece uma rampa de subida de 0 para 3 na curva de comportamento identificando que o agente ativou o comportamento 3 (vide Figura 17a).

A construção deste histórico no framework TAlMech é feita pelas classes: Tem-

poralPoint, TemporalBuffer e BehaviorMonitor, conforme mostra o diagrama de classes

da Figura 18. Primeiramente, a classe TemporalPoint armazena a estampa temporal e o índice do comportamento do agente no momento que ocorrem variações na sua curva de comportamento. Assim, toda vez que ocorre um rampa de subida ou descida, a classe Tem-

poralBuffer adiciona um par ordenado (estampa temporal e índice do comportamento) na

curva de comportamento do agente. Esta classe é responsável por eliminar pares ordenados que se encontram fora da janela.

Enfim, a classe BehaviorMonitor cria dinamicamente novas instâncias de Tem-

poralBuffer conforme são identificados novos agentes no sistema pelo agente que está

monitorando. Esta classe deve ser instanciada em nós do ROS, pois esta classe recebe mensagens do tipo talmech_msgs/Behavior com o código de identificação do agente que enviou a mensagem, do seu comportamento ativo e sua respectiva tarefa, bem como, a estampa temporal do envio da mensagem. Essas mensagens são recebidas por meio do

(a) Histórico construído a partir do recebimento das mensagens identificando o comporta- mento ativo ao longo do tempo do agente em questão.

(b) Trem de pulsos das mensagens recebidas do agente em questão quando este estava com o comportamento 1 ativo.

(c) Trem de pulsos das mensagens recebidas do agente em questão quando este estava com o comportamento 2 ativo.

(d) Trem de pulsos das mensagens recebidas do agente em questão quando este estava com o comportamento 3 ativo.

Figura 17 – Construção do histórico de um agente com três comportamentos.

tópico /behavior. Portanto, é possível verificar se:

∙ um agente específico ativou algum comportamento dentro de um dado intervalo de tempo;

∙ um agente específico ativou o comportamento que executa uma tarefa particular em um dado intervalo de tempo;

∙ houve algum agente que ativou o comportamento que executa uma tarefa particular em um dado intervalo de tempo.

Dans le document 2 The Gaussian anti-symmetric model (Page 22-29)

Documents relatifs