500 likes | 610 Views
Rollerslam Simulação DistribuÃda de Sistemas Multi-agentes. Antonio Jose de Vasconcelos Costa - ajvc Breno Batista Machado - bbm Cleyton Mario de Oliveira Rodrigues - cmor Marcos Aurelio Almeida da Silva - maas Pablo Santana Barbosa – psb Renata Teles Moreira - rtm
E N D
RollerslamSimulação Distribuída de Sistemas Multi-agentes Antonio Jose de Vasconcelos Costa - ajvc Breno Batista Machado - bbm Cleyton Mario de Oliveira Rodrigues - cmor Marcos Aurelio Almeida da Silva - maas Pablo Santana Barbosa – psb Renata Teles Moreira - rtm Weslei Alvim de Tarso Marinho - watm
Roteiro • O que é Rollerslam? • Características • Estratégias • Logging • Dificuldades • Estatísticas
Rollerslam: Fusãode Esportes Gaelic Football Soccer Australian Football Rollerslam! Handball Rugby Basketball American Football Ice Hockey Slamball Roller Derby
Simulação do RollerSlam Rollerslam Simulation GUI Game Visualization GUI Agent Reasoning Visualization GUI playerAgent1(teamA) playerAgent20(teamA) playerAgent1(teamB) playerAgent20(teamB) referee Coach(teamA) Coach(teamB) ... gamePhysicsRulesSimulatorAgent ...
Roteiro • O que é Rollerslam? • Características • Estratégias • Logging • Dificuldades • Estatísticas
<<interface>> Effector <<interface>> Sensor Message + doAction(ac:Message) + getActions() : Message[0..*] + sender : Agent Características - Agente Effector Sensor effector <<component>> Agent sensor
SimulationStateProvider DisplayRegistry Logging SimulationAdmin logging simulation AgentRegistry server client <<component>> Server AgentRegistryExt ClientInitialization environment[1] agent[*] ServerInitialization Effector Sensor Effector Sensor Display Service effector sensor effector sensor simulation <<component>> Rollerslam Agent <<component>> Rollerslam Environment logging logging logging initialization registration initialization display <<component>> Rollerslam Display registration simulation Características – ArquiteturaGeral
effector sensor simulation Environment State Model <<component>> AutomataAgent worldModel + state : SimulationState GoalBased Environment State Model <<component>> GoalBasedAgent worldModel GoalInitialization GoalUpdate <<interface>> GoalInitialization + initialize(m:GoalBasedEnvironmentStateModel) <<interface>> GoalUpdate + updateGoal(m:GoalBasedEnvironmentStateModel) Características – Arquitetura de um Agente • Agente GoalBased: • Jogadores; • Técnicos.
<<interface>> ActionInterpretation <<interface>> ModelBasedBehaviorStrategy <<interface>> RamificationComponent +processAction(w:EnvironmentStateModel, m:Message) + computeAction(w:EnvironmentStateModel):Message +processRamifications(world : EnvironmentStateMode) <<interface>> ModelInitialization + initialize(m:EnvironmentStateModel) Agente Autômato – O Ambiente SimulationStateProvider Effector Sensor effector sensor simulation <<component>> AutomataAgent + state : SimulationState # initialize() # think() Environment State Model worldModel ModelInitialization ActionInterpretation RamificationComponent ModelBasedBehaviorStrategy
Comportamento do Ambiente ramificationsComponent^ processRamifications(worldModel) self^initialize() s->forAll(x | actionInterpretation ^processAction(worldModel,x)) sensor .getActions() s : Set of Message self^think() [not state = RUNNING] modelBasedBehaviorStrategy ^computeAction(worldModel) effector^ doAction(action) action : Message
Características - GUIs Simulation RMI Rollerslam Mobile Display Socket Socket Socket Mobile Client 1 Mobile Client 2 Mobile Client 3
Roteiro • O que é? • Características • Estratégias • Logging • Dificuldades • Estatísticas
1. O que é que cada agente percebe e quais são as suas ações? • As percepções que os agentes (player, coach e refeer) recebem é o modelo completo do ambiente, já que o ambiente é totalmente observável para todos os agentes. • As percepções que o agente environment recebe são as ações dos outros agentes.
1. O que é que cada agente percebe e quais são as suas ações? • As ações do agente player são: • Catch – Pegar a bola com as mãos; • Release – Soltar a bola; • Tackle – Derrubar outro jogador; • Countertackle – Defender de um Tackle de outro jogador; • Throw – Jogar a bola com as mãos; • Kick – Chutar a bola com os pés; • Hit – Chutar a bola de primeira; • Dash – Mover-se; • StandUp – Levantar-se; • SendMsg – Envia uma mensagem para outros agentes. • A ação dos agentes refeer e coach é: • SendMsg – Envia uma mensagem para outros agentes. • A ação do agente environment é enviar o modelo do ambiente para os outros agentes.
2. Que variáveis os agentes vão considerar em sua tomada de decisão? • O agente player considera: • Seu objetivo inicial; • A posição da bola; • A posição dos jogadores; • Quem esta com a bola (time); • A função do jogador (papel que ele esta desempenhando no momento); • Ações de outros agentes. • O agente coach considera: • Seu objetivo inicial; • A posição da bola; • A posição dos jogadores; • Quem esta com a bola (time); • Placar do jogo (mudar a estratégia). • O agente refeer considera: • A posição da bola; • Quem esta com a bola (time). • O agente environment considera: • O estado atual do ambiente; • Ações recebidas dos agentes.
3. Como é o processo de tomada de decisão? • O agente player recebe as informações do agente coach com o seu papel. A partir daí o agente player toma as decisões de acordo com seu papel. O agente player recebe o modelo do ambiente (ambiente totalmente observável) como percepção, e a partir daí ele toma as decisões de acordo com o estado atual do modelo do ambiente, do objetivo do seu papel e das mensagens recebidas de outros agentes. • O agente refeer toma a decisão (gol ou não) de acordo com a posição da bola e quem está com a bola.
3. Como é o processo de tomada de decisão? • O agente coach recebe mensagens dos agentes players (que ainda não possuem um papel) e distribui um papel para estes de acordo com a ordem de envio das mensagens. Para as decisões de mudança de estratégia o agente coach considera quem (time) está com a bola, a posição dos jogadores e o placar do jogo. • O agente environment toma as decisões de mudança de estado do ambiente de acordo com as ações recebidas dos outros agentes.
4. Estas decisões são somente para a próxima ação e/ou são de longo prazo? • As decisões são somente para a próxima ação, pois ele toma a decisão de acordo com o modelo atual do ambiente.
5. Quão cientes estão os agentes da presença dos outros no ambiente, e que tipo de informações eles trocam? • Todos os agentes estão totalmente cientes da presença dos outros agentes no ambiente, visto que o ambiente é totalmente observável. • As trocas de informações podem ser: • Mensagens de informações táticas e estratégicas entre player e refeer; • As percepções entre environment e os outros agentes; • As ações entre os outros agentes e o environment.
6. Como os agentes vão se coordenar? E.g. eles aprendem, planejam juntos, têm protocolo compartilhado, negociam, etc. • Eles se coordenam por partilha de tarefas, ao definir os papéis que cada jogador tem no jogo (responsabilidade do técnico). Após seu papel definido, irão agir independentes de acordo com seu papel, e as comunicações dos outros agentes. Não possui negociação, pois os jogadores são cooperativos. Não possuem aprendizagem.
7. Essa coordenação é centralizada, emergente, ou híbrida? • É hibrida, pois é centralizada na distribuição dos papéis e na mudança de estratégia e emergente nos outros momentos.
8. Todos os agentes fazem as mesmas coisas? Eles têm os mesmos direitos e deveres? • Todos os players são iguais, mais eles agem de maneira diferente de acordo com os papéis atribuídos a eles, logo os direitos e deveres são diferenciados de acordo com o seu papel. • Os agentes player, coach e refeer são diferentes e possuem direitos e deveres diferentes.
9. Qual a influência do objetivo do grupo no objetivo individual de cada agente? • Os objetivos individuais do agente (do seu papel) se complementam para atingir o objetivo geral do grupo.
Estratégia do Jogador Máquina de Estados
Initial States (JOIN_GAME, WAIT_JOIN_GAME, INITIALIZATION, SET_ROLES, STOP, WAIT_MOVIMENT) INITIALIZATION WAIT_JOIN_GAME JOIN_GAME send JoinGameAction/ [model->gameStarted] send InitializationFact/ STAND_UP SET_ROLES GO_TO_INIT_COORD recv DefineRoleFact/ send StandUpAction/ [me->inGround] send DashAction/ [insideArea(0.10) and not me->hasBall and not me->inGround and not nearBall()] [me->hasBall and not me->inGround and not nearBall()] [nearBall() and not me->inGround] STOP GO_TO_BALL GO_TO_GOAL [not me->inGround] send DashAction/ send StandUpAction/ [nearBall()] [me->inGround] [not nearBall()] WAIT_MOVIMENT send DashAction/ [nearBall() and not me->inGround()] send StandUpAction/ [me->inGround]
GO_TO_BALL State GO_TO_INIT_COORD send DashAction/ [ball->withPlayer and playerWithBall.team = me.team] send DashAction/ [not me->inGround and not nearBall() and not veryNearBall()] GO_TO_BALL send TackleAction/ TACKLE_PLAYER [ball->withPlayer and playerWithBall.team <> me.team] [not me->inGround and veryNearBall()] send CatchAction/ STAND_UP send StandUpAction/ [not ball->withPlayer] [me->inGround] CATCH_BALL
CATCH_BALL State send CounterTackleAction/ COUNTER_TACKLE [nearOpponent()] send DashAction/ GO_TO_GOAL [not nearOpponent()] [me->hasBall] CATCH_BALL [not me->inGround] send DashAction/ GO_TO_BALL [not me->hasBall] [nearBall()] send StandUpAction/ [me->inGround] [playerWithBall.team <> me.team] STAND_UP send DashAction/ [not nearBall()] send DashAction/ GO_TO_INIT_COOR [playerWithBall.team = me.team]
TACKLE_PLAYER State TACKLE_PLAYER send DashAction/ GO_TO_INIT_COORD [not me->inGround] [playerWithBall.team = me.team] [playerWithBall.team <> me.team] send StandUpAction/ send DashAction/ [me->inGround] [not nearBall()] STAND_UP send DashAction/ GO_TO_BALL [nearBall()]
STAND_UP State STAND_UP send DashAction/ GO_TO_INIT_COORD [not me->inGround] [playerWithBall.team = me.team] [playerWithBall.team <> me.team] send StandUpAction/ send DashAction/ [me->inGround] [not nearBall()] STAND_UP send DashAction/ GO_TO_BALL [nearBall()]
GO_TO_GOAL State STAND_UP send StandUpAction/ send DashAction/ GO_TO_BALL [nearBall()] [me->inGround] GO_TO_GOAL [not me->inGround and not me->hasBall] send DashAction/ GO_TO_INIT_COOR [not nearBall()] [not me->inGround and me->hasBall] THROW_BALL send ThrowAction/ [not manyOponentsNear() and nearGoal(30000)] send KickAction/ [manyOponentsNear()] Near 30 meter (30000 millimeter) KICK_BALL send KickAction/ Near 50 meter (50000 millimeter) [not manyOponentsNear() and nearGoal(50000)]
THROW_BALL State STAND_UP send StandUpAction/ send DashAction/ GO_TO_GOAL [hasBall()] [me->inGround] THROW_BALL [not me->inGround and playerWithBall.team = me.team] send DashAction/ GO_TO_INIT_COOR [not hasBall()] [not me->inGround and not playerWithBall.team = me.team] send DashAction/ [not nearBall()] send DashAction/ [nearBall()] GO_TO_BALL
KICK_BALL State STAND_UP send StandUpAction/ send DashAction/ GO_TO_GOAL [hasBall()] [me->inGround] THROW_BALL [not me->inGround and playerWithBall.team = me.team] send DashAction/ GO_TO_INIT_COOR [not hasBall()] [not me->inGround and not playerWithBall.team = me.team] send DashAction/ [not nearBall()] send DashAction/ [nearBall()] GO_TO_BALL
COUNTER_TACKLE State STAND_UP send StandUpAction/ [me->inGround] COUNTER_TACKLE GO_TO_GOAL [not me->inGround and me.hasBall] [not me->inGround and not me.hasBall] GO_TO_INIT_COOR send DashAction/ [not nearBall()] send DashAction/ [nearBall()] GO_TO_BALL
Estratégia do Técnico Máquina de Estados
States (WAIT_JOIN_GAME, LISTENING, SET_POSITION, CHANGE_DEFENSIVE_POSITION, CHANGE_OFFENSIVE_POSSITION, GO_TO_BALL) WAIT_JOIN_GAME LISTENING send SendMsgAction/ [model->gameStarted] [not receiveAgentInitMsg()] [receiveAgentInitMsg()] SET_POSITION [teamLosing() and not teamWinning()] [not teamLosing() and not teamWinning() and manyEnemyNearBall()] [teamWinning() and not teamLosing()] GO_TO_BALL send SendMsgAction/ CHANGE_DEFENSIVE_POSITION CHANGE_OFFENSIVE_POSITION send SendMsgAction/ send SendMsgAction/
Roteiro O que é Rollerslam? Características Estratégias Logging Dificuldades Estatísticas
Minimal Trace Event Simulation Level Reasoning Trace Simulation User 1..* Additional Data Agent Level Reasoning Trace Agent 1..* 1..* Integrated Multi- Granularity Reasoning Trace Query & Visualization GUI Service Level Reasoning Trace Service Non-Reasoning Service Component Trace Query Reasoning Service OO Rule Firing Level Reasoning Trace Algorithmic Workflow 1..* 1..* Object-Oriented Rule Logical Object Inheritance Level Reasoning Trace 1..* 1..* Logical Object Molecule Imperative Object Justification-Based Logical Constraint Matching/Entailment Level Reasoning Trace 1..* Logical Constraint Atom Logging – Trace Driver Tracer Driver Team Trace Query
Logging - Recorder <<component>> LogRecorder LogRecording Service <<delegate>> LogRecording ServiceImpl Simulation Description
Logging - Player <<component>> LogPlayer Log Playing Service <<delegate>> LogPlayer Impl -------------------------------- + currentCycle : Integer Simulation Description
Logging – GUI Layout <<window>> LogPlayerDisplay <<frame>> GameCanvas <<ComboBox>> AgentFilter <<ComboBox>> MessageTypeFilter <<Button>> Show <<Text>> CurrentCycle <<Slider>> CurrentCycleSlider <<Text>> Messages <<Text>> Speed <<Slider>> SpeedSlider <<Button>> Run <<Button>> LoadSimulation <<FileChooser>> SelectSimulation
Roteiro O que é Rollerslam? Características Estratégias Dificuldades Estatísticas
Dificuldades • Laboratórios cheios • Problemas relativos a distribuição • Máquinas diferentes nos laboratórios • IP fora do padrão • DNS não funciona • Muito lenta • Uso de: • CHR • FLUX • Trace Driver
Roteiro O que é Rollerslam? Características Estratégias Dificuldades Estatísticas
Estatísticas • Arquivos: ~650 arquivos • Linhas de código: ~6000 • Commits: ~600 • Slides (documentação): ~300 • Reuniões: ~60 • Por que aproximadamente? • Está sempre sendo atualizado, quando você ler isto, os números já estarão diferentes
Quer saber mais? http://rollerslam.googlecode.com