AIAD-firstreport.docx (1)
description
Transcript of AIAD-firstreport.docx (1)
Evacuação com Agentes BDI
20152016
ei12065 Ana Moura [email protected] ei12083 David Caminha [email protected]
Agentes e Inteligência Artificial Distribuída
Mestrado Integrado em Engenharia Informática e Computação
INDICE
INDICE DESCRIÇÃO DO CENÁRIO OBJETIVOS DO TRABALHO IDENTIFICAÇÃO E CARACTERIZAÇÃO DOS AGENTES
AGENTES INDIVIDUAIS PROTOCOLOS DE INTERAÇÃO PLATAFORMAS E FERRAMENTAS DIAGRAMA UML EXPERIÊNCIAS: BIBLIOGRAFIA SOFTWARE
1 AIAD Evacuação com agentes BDI
Enunciado
DESCRIÇÃO DO CENÁRIO
Ocorreu um acidente (incêndio, inundação, libertação gás,…) que obriga à evacuação dos indivíduos presentes no local. O local onde ocorre o acidente possui múltiplas saídas de emergência e também obstáculos. Os indivíduos encontramse distribuídos pelo local ocupados nas suas tarefas usuais. Aquando da deteção do acidente, todos os indivíduos procuram atingir uma das saídas de emergência o mais rapidamente possível. Todos os agentes possuem uma mentalidade diferente podendo tomar decisões independentes e de formas diferentes.
OBJETIVOS DO TRABALHO
O programa deve tratar/simular diferentes situações possíveis de ocorrer: queda de um individuo, ferimentos, obstruções de passagem ou locais, enquanto simula uma população heterogénea a evacuar o local e a sua interação tanto com o espaço bem como os outros agentes.
O programa irá permitir a edição do local, saídas de emergência, sinalização, paredes e probabilidades de acontecer uma obstrução para além de permitir modificar a população presente no local e serviços de informação.
2 AIAD Evacuação com agentes BDI
Especificação
IDENTIFICAÇÃO E CARACTERIZAÇÃO DOS AGENTES Para criar uma melhor simulação iremos ter agentes com diferentes características representando diferentes pessoas ou grupos de pessoas.
1. AGENTES INDIVIDUAIS Security Agentes com conhecimento do espaço, dão indicações / ajudam outros agentes, são os ultimo a abandonar o local do acidente não são agressivos e nunca caem.
Este agente vai ter as seguintes características: Position: Posição em que se encontra Speed: Velocidade de movimento MyDoors: Ordem das portas que levam à saída
Nota: Este agente tem força muito alta mas 0 de agressividade para que este não caia mas também não empurre.
Modo acção: Comportamento: Este agente não se movimenta da sua posição até todos
os agentes terem evacuado a sua sala, após isso ajuda quem consegue ajudar e movimentase para o seu próximo destino procurando a sua posição nessa nova sala. Repete este comportamento até chegar à sua saída final.
Estratégias: Visualiza todos os agentes presentes nessa sala e faz broadcast para cada um deles de quais as portas que estes devem seguir. Após todos os agentes possiveis de se mover saírem da sala procura todos os agentes down mas vivos ajudaos a levantarse dizlhes as portas e segue para a porta seguinte. Quando chega a uma nova sala procura uma base livre e repete tudo para essa sala.
Processo de raciocinio em PseudoCódigo InRoom()
If(wanderesAliveInRoom) broadcastMyDoors
else
3 AIAD Evacuação com agentes BDI
if(wanderesAliveButDown) for(wanderesAliveButDown.size())
help.wandererAliveButDown else
moveNextDoor();
moveNextDoor() if(thereIsNextDoor)
goToMyNextDoor searchEmptyBase goToEmptyBase InRoom();
else End;
Wanderer Este tipo de agente é o mais importante e vai se diferenciar em diferentes características como: idade, predisposição para a violência, predisposição para ajudar os outros, agilidade (quão rápido se movimentam) e predisposição para ouvir e aceitar indicações basiado no seu nivel de pânico.
Este agente vai ter as seguintes características: Position: Posição onde se encontra Health: Vida que o agente tem se for menor que 1 o agente encontrase
morto Speed: Velocidade de movimento Aggressiviness:Agressividade do agente se for maior que 6 este agente
revela atitudes agressivas Panic: Valor de panico quando aumenta muito o agente pára de receber
indicações de seguranças Force: Força que o agente tem em caso de colisões, diminui com a sua
PhysicalCond KnowDoorsFromSecurity: Se for true o agente já recebeu ordem de
portas de um segurança e vai seguir apenas essas Down: Se estiver true o agente encontrase sem possibilidade de se
movimentar Modo acção: Comportamento: O agente vai sempre tentar movimentarse em direção a uma
porta aleatória que este veja sem que repita portas, se este for agressivo ele colide com outros agentes e tenta empurrálos se não for colide mas mantém a sua posição até que consiga movimentarse para onde quer sem empurrar ninguém.
4 AIAD Evacuação com agentes BDI
Estratégias: Se não tiver recebido e aceitado mensagens de um segurança e verifica à sua volta quais as portas que existem escolhe uma aleatoriamente e dirigese para a mesma quando lá chega verifica as portas que vê (nota quando este chega a uma porta consegue ver se dentro da outra sala existe portas) e repete até que chegue a uma saída final.
Se um agente cair durante a simulação e não tiver morrido ele verifica constantemente se não existe ninguém em cima dele de modo a que se possa levantar.
Processo de raciocinio em PseudoCódigo
if(!KnowDoorsFromSecurity) VisibleDoors = GetVisibleDoors()
else VisibleDoors = SecurityTold
if(!visibleDoors.empty()) if(!KnowDoorsFromSecurity)
MoveToOneRandomDoor else
MoveToNextDoorSecurityTold
Se em qualquer momento este criar uma colisão este pára para a resolver do seguinte modo
If (heIsStronger) giveUpMyPosition Him.down = true
Else giveHimMyPosition Me.down = true
Se o agente ficar down ele apenas corre
If(NoOneOnTopOfMe)
getUp
5 AIAD Evacuação com agentes BDI
PROTOCOLOS DE INTERAÇÃO
Os agentes Security e Person interagem de modo a que os primeiros deem uma lista conjuntos de coordenadas tal que os segundos consigam encontrar a saída. O agente Person ao ouvir uma indicação pode ou aceitar as indicações ou rejeitálas dependendo da sua implementação.
Os agentes Person e Person poderão ter várias interações: Person A está caído: Person B pode ajudar ou não. Person A ajuda Person B a levantarse: Person A pára, Person B passa a
em pé. Person A ajuda Person B a movimentar: Person A perde velocidade,
Person B ganha velocidade(média entre ambos). Person A e Person B colidem: A empurra B, B perde velocidade e fica
caído, A continua o seu caminho. Person A e Person B colidem: A empurra B e B empurra A. Verificase a
força de ambos e ganha o que a tiver melhor. O que ganhar continua o seu caminho.
Person A e Person B colidem: Nenhum empurra. Um deles fica na posição esperada e o outro numa adjacente.
Person A e Person B são familia: Person A não passa uma saída,mesmo que local, sem Person B e viceversa
6 AIAD Evacuação com agentes BDI
Desenvolvimento
PLATAFORMAS E FERRAMENTAS Ferramenta Jadex:
O Jadex BDI é um mecanismo de raciocínio orientado a agentes usado para escrever agentes a partir de codigo XML e Java. Os agentes representam componentes activos com capacidades de raciocinio individuais. Estes agentes são reactivos (respondem a eventos externos) e proactivos (agem conforme os seus proprios objectivos.
Plataformas: Eclipse Mars e Windows 10;
DIAGRAMA UML Nota: Também se encontram os ficheiros no projeto
7 AIAD Evacuação com agentes BDI
8 AIAD Evacuação com agentes BDI
9 AIAD Evacuação com agentes BDI
10 AIAD Evacuação com agentes BDI
11 AIAD Evacuação com agentes BDI
EXPERIÊNCIAS:
Foram corridas várias experiências da simulação para ver o impacto de um segurança, de aumento de agressividade e de número de agentes no mapa, bem como mais saídas os resultados correram como o esperado. Resultados:
O aumento de agressividade e de número de agentes em cena faz com que o número de mortos aumente no final.
A não presença de um segurança, na existência de várias opções de portas, faz com que o tempo que o último wanderer demora a chegar à saída aumente.
Se aos wanderers for tirada a capacidade de se levantar (ver sugestões de melhoramento) apenas com a presença do segurança é que estes se conseguem levantar e continuar caminho.
Conclusões
Como já referido as experiências que fizemos correram de acordo com as nossas expetativas simulando o que acreditamos ser o que acontece numa situação real.
O desenvolvimento do trabalho correu com alguns percalços, o facto de muitas das nossas funções serem assíncronas impossibilitounos de conseguir testar e repetir alguns casos que nos davam erro, para além disso a recepção das mensagens
12 AIAD Evacuação com agentes BDI
assíncronas muitas das vezes só eram recebidas muito depois do seu envio. O desenvolvimento do jadex também se tornou um desafio já que a falta disponibilidade de recursos e documentação fez com que as respostas a algumas dúvidas ficassem sempre aquém do que precisávamos.
No entanto podemos compreender o quando SMA era aplicável ao nosso trabalho já que para simular vários humanos a melhor forma de o fazer é com diferentes agentes.
Melhoramentos Com o desenvolvimento do projeto a escabilidade do mesmo aumento
exponencialmente, mas devido às limitações temporais foi necessário deixar algumas coisas de parte que gostariamos num tempo posterior implementálas:
Wanderers não se conseguirem levantar após uma certa vida Existência de obstáculos (terrain) numa sala e os agentes darem a volta
para chegar ao seu destino
13 AIAD Evacuação com agentes BDI
Criação de mentalidades de grupo Melhorar pequenos bugs pouco frequentes que nos foi impossível
identificar Adicionar seguranças pelo SpaceBuilder
Recursos BIBLIOGRAFIA https://paginas.fe.up.pt/~eol/AIAD/jadex/doku.php, consultado em Novembro 2015 https://www.activecomponents.org/bin/view/About/New+Home, consultado em Novembro 2015 https://www.activecomponents.org/docs/jadex2.4javadoc/, consultado em Novembro 2015
SOFTWARE Jadex Eclipse
14 AIAD Evacuação com agentes BDI
GRUPO 50% cada Elemento do grupo
Manual A aplicação já possui um mapa pre defenido portanto corrêla mostrará logo um caso. Se quiserem criar um mapa:
1. Abrir aplicação SpaceBuilder, 2. Clicar New Space 3. Adicionar os objetos disponíveis(Por ordem: wall, wanderer, exit,
terrain(ver sugestões de melhorias), blank, base para seguranças, exitFinal
4. Clicar em Save Space
15 AIAD Evacuação com agentes BDI
5. Guardar na pasta do projeto com nome simulationInfo Correr o programa jadex e observar os resultados. Nota: Devido às limitações da implementação do Securtiy este é necessário modificar programáticamente e não é possivel ter mais que um.
16 AIAD Evacuação com agentes BDI