Enunciados de Minitestes e outros Problemas

Problemas das aulas Práticas

Componente Visual do LPA-Prolog

Elabore um programa em LPA Prolog que construa uma interface com o aspecto abaixo indicado, contendo 3 botões de comando, uma listbox, 2 campos de edição e um static.



I
nstale os handlers necessários para que a interface tenha o seguinte comportamento:
a)
Cada vez que o botão “Add for premido, será adicionada uma linha à listbox com o conteúdo introduzido no 1º campo de edição.
b)
Sempre que o botão “Copy” for premido será copiado para o controlo Static o conteúdo da linha da listbox cuja posição tiver sido definida pelo utilizador no 2º campo de edição.
c)
Quando se premir o botão “Del, será eliminada da listbox a linha cuja posição estiver referida no 2º campo de edição.


Sistema Multi-agente composto por agentes comunicando atras duma Central

Construa um sistema multi-agente composto por vários agentes idênticos capazes de comunicar entre si e por um agente especializado em gerir as comunicações entre os restantes agentes, funcionando como uma central telefónica. Todas as comunicações entre agentes deverão, portanto, passar por essa central e nunca ser estabelecidas directamente.



Comportamento dos agentes:
1. Quando o botão “Connect” for pressionado, o agente deve ligar-se à central. No caso de essa ligação não se puder estabelecer, o agente deverá tentar de novo após 10 segundos.
2. Mal a ligação se estabeleça com sucesso o agente deve enviar uma mensagem de apresentação à central, contendo o seu nome e a sua porta.
3. O agente deve manter uma lista de contactos (nome) dos agentes que conhece. Essa lista deve ser apresentada na listbox.
4. O agente deve poder enviar uma mensagem para um ou mais agentes seleccionados na listbox ou fazer um broadcast duma mesma mensagem para todos os agentes contidos na sua lista de contactos. O formato das mensagens deverá ser:
msg(Msg,Destino)
broadcast(Msg,ListaDestinos)

Comportamento da central:
1. Deve manter uma lista com o registo dos agentes ligados, contendo o seu nome, porta e canal pelo qual estão ligados, a partir de informações recolhidas das mensagens de apresentação dos agentes. Essa lista deve manter-se permanentemente actualizada.
2. Deve poder interpretar as várias mensagens que lhe são enviadas pelos agentes, a saber, apresentação, pedido de envio de mensagem e pedido de broadcast, e actuar em conformidade.
3. Caso lhe seja pedido o envio de uma mensagem para um agente inexistente ou não registado, deve responder com uma mensagem indicando a impossibilidade de o fazer de momento. Só agentes registados podem comunicar através da central.
4. Deve manter um serviço de armazenamento temporário de mensagens enviadas a agentes que estejam momentaneamente indisponíveis. Estas mensagens deverão ser reenviadas quando o agente destinatário se torne a ligar.

Notas:
1. Para obter o conteúdo da linha que tiver sido seleccionada numa listbox, use o predicado wlbxgetsel (consultar o ficheiro respectivo na página da cadeira).
2. Na listbox existente na interface dos agentes deve apenas aparecer o nome dos agentes constantes da sua agenda. A porta desses agentes não é conhecida, pelo que essa informação não deve ser incluída, ao contrário do que, por lapso, está patente no exemplo.


Sistema Distribuído de Aquisição de Dados

Construa um sistema multi-agente composto por agentes com a missão de monitorizar grandezas sicas como a temperatura, a pressão ou o teor de humidade atmosrica.

Cada agente deve verificar periodicamente o valor medido por um sensor e enviar essa informação a um agente C que produz estatítisticas e relatórios. O sistema deve incluir pelo menos três agentes monitorizadores de temperatura, um de pressão e um de humidade, para além do agente C e de um agente encarregado de gerir as comunicações entre agentes.

O comportamento dos agentes deve ser o seguinte:

1.
Os agentes devem simular a aquisição periódica de dados, gerando valores aleatóriamente dentro de uma determinada gama1. Esses valores serão periodicamente enviados para o agente C.

2.
Caso um valor fora do normal seja detectado, tal facto deve implicar o envio imediato de uma mensagem de alarme ao agente C. Os valores limite, que desencadearão um alarme caso sejam ultrapassados, serão comunicados aos agentes pelo agente C numa mensagem inicial de configuração. Essa mensagem incluirá também as periodicidades da efectuação de medidas e do seu envio para o agente C.

3.
No caso especial dos agentes monitorizadores de temperatura existirão dois limites a vigiar:
um superior que deve implicar o envio imediato dum alarme ao agente C
um intermédio que desencadeará o seguinte comportamento: o agente termómetro consultará o agente barómetro para saber se também ele detectou alguma anomalia. se tal tiver ocorrido, um alarme será enviado.

4.
O agente C fará o registo dos dados enviados pelos rios agentes monitorizadores e produzirá médias e estatísticas. É ainda responsável pelo envio de mensagens de configuração aos outros agentes.

Dentro do sistema multi-agente o único endereço público será o do agente controlador de comunicações. Quando um agente monitorizador arrancar deverá apresentar-se ao agente C, informando-o do seu nome e especialização, ficando à espera da mensagem de configuração.


Minitestes de anos anteriores

1. Considere um sistema multi-agente composto por agentes que se ligam periódicamente a uma Central (por sua vez, também um agente), para verificar se outro agente lá terá deixado alguma mensagem para ele. Caso tenha, a Central enviar-lha e o agente deve fazer a sua visualização na interface. No caso contrário, receberá uma mensagem informando-o de que não existe correio para ele. Para facilitar, considere que não pode existir mais que uma mensagem pendente na Central.
O período de tempo entre actualizações é definido pelo utilizador atras da interface.
A ligação de cada agente com a central não é permanente - deve ser feita expressamente para o efeito e terminada após recepção da informação pedida.
Deve ser permitida a interrupção da actualização periódica por iniciativa do utilizador. Elabore o código de um Agente e da Central de mensagens. Apresente um esboço da interface utilizada no Agente, identificando os seus controlos.

2.
Elabore um programa em LPA Prolog que obedeça às seguintes especificações:
a)
O programa deve dar corpo a um agente e possuir uma interface gráfica apropriada à interacção a prever com o utilizador.
O programa deve exibir o seguinte comportamento:
b)
Um clique sobre o botão “Quem sou eu?” deve permitir o aparecimento de uma mensagem contendo a seguinte informação: o nome do agente e a porta atras da qual pode comunicar.
c)
Um clique sobre o botão “Idade deve provocar a afixação do tempo de vida do agente em segundos (ou seja, o tempo decorrido desde o seu arranque até ao momento presente).
d)
Deve possuir um botão “Sair que termine de forma correcta o programa (assegurando quer o fecho da interface, quer a paragem do agente).
e)
Deve mostrar num controlo adequado um relógio digital actualizado cada segundo.
Nota : O comportamento do agente deve ser guiado por eventos, cujos handlers determinarão qual a resposta do agente a esses eventos.