Modeling Rollerslam Agents in Fluent Calculus
Objective Define the minimum Fluent Calculus/FLUX template to be reused and extended by all Rollerslam agents Focus on modeling Goal Based agents in a Fully observable environment Assumption: The flux/fluent calculus should deal only with abstract PIM-level problems concerning the agent’s behavior specification
Goal Based Agents Environment model –Each agent maintains an internal model of the world, which contains a copy of the current world and some extra information deduced from the world model and/or maintained by the agent (ex: its current goal) Action Interpretation –Updates the agent’s internal model Goal Updater –Updates the agent’s goal, from the current one and the environment model Model Based Behavior Strategy –Generates the next action from current goal and current environment model
The Agent’s internal State State Environment State (A copy of the Environment’s model) Current Goal Next Action Knowledge Base
The Agent’s internal State Environment State –Fluents related to the current state of the environment, received from the Communication Infrastructure KB (Knowledge Base) –Fluents related to the agents interpretation of the world (informations deduced by him which are not maintained by the environment)
Domain Sorts GOAL –The Agent’s possible goals AGENT_ACTION –The Agent’s possible actions
Domain Functions Goal : GOAL FLUENT –The agent’s current goal NextAction : AGENT_ACTION FLUENT –The agent’s next action
Domain Actions InterpretEnvModel : ACTION –Updates the part of the internal state which is not just a copy of the environment model UpdateGoal : ACTION –Updates the agent’s current goal ComputeNextAction : ACTION –Computes the agent’s next action
State Constraints
Action Pre-conditions
Sample State Update Axioms
Pre conditions (FLUX) poss(InterpretEnvModel, _). poss(UpdateGoal, _). poss(ComputeNextAction, _).
State Update Axioms (FLUX) state_update(Z1, interpretEnvModel, Z2, _) :- holds(position(ball, B),Z1), getMyPlayer(Me), holds(position(Me, P),s), GetDistance(P,B,D), D < 10, update(Z1, [NearBall], [], Z2).