Closed rafaelcaue closed 9 years ago
Cheguei a fazer essa implementação, mas o meu receio é de perder um step para esse processamento da percepção da role + inclusão dos planos para a role do agente.
Acho que eles disponibilizarão as relações de usuário e role, assim poderiamos já fazer o vínculo e deixar rodando.
Se quiserem dar uma olhada na implementação de pegar o asl respectivo pela role recebida por percepção, posso catar no histórico do eclipse e commitar.
Eu acho que sim, podemos esperar um pouco para decidir isso e ver as próximas versões do cenário. Mas comita aquilo que tu fez em uma pasta diferente, qualquer coisa se precisarmos no futuro já tem.
Por enquanto podemos fazer hardcoded, os roles são dados em ordem pelo que vi, por exemplo a1 é car, e assim por diante.
Commitado!
Todos os agentes são criados utilizando o vehicle.asl. Nesse arquivo, o agente, ao receber a percepção de role, realiza o include do respectivo asl com os planos de sua role. Talvez seja necessário a chamada de algum goal em comum (tipo "!start"), para que dê partida no
Minha dúvida é: se o agente for mais reativo, orientado a percepções, ao receber a percepção da role, o agente poderá ter "perdido" outras percepções que vieram antes dessa. Agora, se o agente for mais pró-ativo, como saber que ele já recebeu todas as percepções do step?
Essa discussão ocorreu na semana passada, estávamos pensando apenas em reativo e o @rafaelcaue nos disse que não funcionaria, já que o agente apenas responderia a eventos de curta duração e nunca completaria nada.
Talvez seja necessário a chamada de algum goal em comum (tipo "!start"), para que dê partida no .asl.
Um objetivo básico seria chegar aos shops para descobrir os preços.
Minha dúvida é: se o agente for mais reativo, orientado a percepções, ao receber a percepção da role, o agente poderá ter "perdido" outras percepções que vieram antes dessa. Agora, se o agente for mais pró-ativo, como saber que ele já recebeu todas as percepções do step?
O truque seria o agente apenas reagir apenas ao +step(X)
, que deverá/deveria ser a última percepção do passo e como nenhuma percepção deve ocorrer antes do +step(0)
não sei como ele poderia perder algo, apenas sobrescrever dados seria o correto.
Essa discussão ocorreu na semana passada, estávamos pensando apenas em reativo e o @rafaelcaue nos disse que não funcionaria, já que o agente apenas responderia a eventos de curta duração e nunca completaria nada.
Até funciona, mas em vez do agente decidir o que fazer a cada passo e enviar uma única ação para esse passo, ele vai tentar executar múltiplas ações e vai acabar falhando algumas e perdendo alguns steps. O que não significa que precisamos responder apenas a percepção do step, podemos responder as outras percepções manipulando crenças, trocando mensagens com outros agents, etc. Só temos que garantir que apenas 1 ação vai ser escolhida por step.
O truque seria o agente apenas reagir apenas ao +step(X), que deverá/deveria ser a última percepção do passo e como nenhuma percepção deve ocorrer antes do +step(0) não sei como ele poderia perder algo, apenas sobrescrever dados seria o correto.
Não necessariamente o step vai ser a última. Olhem o código do Jomi de 2014, o código newStep.asl trata disso. Ele faz alguns waits que deve ter sido para resolver esse problema. Em cima disso ele ainda tem um wait_and_select_goal para depois chamar o select_goal que vai resultar em uma única ação por step. Fora isso ainda foi modificado a arquitetura do agente e o buf (belief update function) que acho que vamos precisar. Sugiro dar uma olhada no código de 2014 do Jomi na pasta src/java/env.
Entendi mal então, fiquei viciado nessa ideia do step desde a última reunião... O link da equipe do Jomi está aqui pra quem quiser dar uma olhada. Vamos ter que dar uma estudada nessa solução então.
Done.
Na segunda reunião eu tinha dito que tinha como pegar os papéis dos agentes e relacionar com o nome deles pelos arquivos de configuração, pois o cenário do ano passado era assim, mas não encontrei esse arquivo no cenário desse ano.
Anibal, só para confirmar, tu não achou nada parecido né? Eu tive uma ideia que acho que vai funcionar, a gente faz um asl genérico vehicle.asl, que dependendo do papel que receber ele inclui o asl respectivo do papel recebido. Se não funcionar eu já tenho outras ideias de como resolver esse problema, só vou esperar tu me confirmar que tu não achou como pegar o role de cada agente antes da execução e aí eu implemento.