Download - Ontologies Reasoning Components Agents Simulations Example of Draft KobrA-2 PIM Jacques Robin
OntologiesReasoningComponentsAgentsSimulations
Example of Draft KobrA-2 PIMExample of Draft KobrA-2 PIM
Jacques Robin
Case-Studies for Agent andCase-Studies for Agent andGame Related ExtensionsGame Related Extensions
Small scale: soccer penalty simulation
Large scale: Rollerslam simulation
3
2 k
1 s, b
Y X 1 2 3
3
2 b k
1 s
Y X 1 2 3
3 b
2 k
1 s
Y X 1 2 3
action(s,legs,shoot(2))action(k,legs,move(right))
3
2 k, b
1 s
Y X 1 2 3
action(k,hands,grab(yes))
3
2 k, b
1 s
Y X 1 2 3
gameOver, goal
gameOver, nogoal
action(s,legs,shoot(3))action(k,legs,move(right))
actions(k,legs,move(right))
PenaltySim Specification Class PenaltySim Specification Class DiagramDiagram
<<enumeration>>SimStateKind
createdrunningstopped
<<Subject Component>><<MAS>>
PenaltySim
<<Interface>>IPenaltySim
<<create>> +new()+run()+stop()
+getSimState(): SimStateKind
<<Subject Component>><<MAS>>
PenaltySim
-state:SimStateKind
<<create>> -new():-getSimState(): SimStateKind
-run()-stop()
- connect(RIPort:Port,PIPort:Port)
PenaltySim SpecificationPenaltySim SpecificationComponent DiagramComponent Diagram
PPenaltySim
IPenaltySim
PenaltySim SpecificationPenaltySim SpecificationProtocol State MachineProtocol State Machine
running stopped
new()
run()
created
stop()
run()
PenaltySim Realization Class PenaltySim Realization Class Diagram 1Diagram 1
<<enumeration>>Dir
leftright
<<enumeration>>Coord
012
<<ReflexAgent>>Player
<<Percept>> XYCoord
x:Coordy:Coord
Ball
9
<<Subject Component>><<MAS>>
PenaltySim
<<AgentAction>> MoveAction
to: Dir
<<AgentAction>> KickAction
to: XYCoord
<<AgentAction>> GrabAction
*
2
<<AgentAction>> PlayerAction
<<enumeration>>Role
shooterkeeper
<<enumeration>>AgStateKind
emptyinitialized
perceptsReceivedactionChosen
actionSent
<<AgentAction>> ArmAction
<<AgentAction>> LegAction
<<enumeration>>EnvStateKind
emptyinitialized
actionsReceivedperceptsUpdated
perceptsSent
<<enumeration>>ChannelStateKind
createdperceptsReceivedperceptsSensedactionReceivedactionSensed
Goal
FieldObjectFieldZone
3
PenaltySim Realization Class PenaltySim Realization Class Diagram 2Diagram 2
<<Effector>>Legs
+do(role:Role,action:LegAction)
<<use>><<use>><<Sensor>>
Eyes
<<signal>> +sense():XYCoord[3]{ordered}
<<ReflexAgent>>Kicker
<<ReflexAgent>>Keeper
<<Effector>>Arms
+do(role:Role,action:ArmAction)
<<use>>
<<ReflexAgent>>Player
<<Subject Component>><<MAS>>
PenaltySim
2
2
<<Interface>>IPlayer
<<create>> +new()+initialize()
+getState(): AgStateKind+getRole(): Role
+reason(percepts:XYCoord[3]{ordered}): PlayerAction
2
PenaltySim Realization Class PenaltySim Realization Class Diagram 3Diagram 3
<<Interface>>IPenaltyEnv
<<create>> +new()+initialize()
+getEnvState(): EnvStateKind-reason(shooterAction:PlayerAction{in}, keeperAction:PlayerAction{in},
shooterPercepts:XYCoord[3]{out,ordered}, keeperPercepts:XYCoord[3]{out, ordered})
<<Sensor>>GetActions
<<signal>> +getAction(role:Role):PlayerAction <<use>><<use>>
<<Effector>>SendPercepts
+sendPercept(role:Role):XYCoord[3]{ordered}
<<Environment>><<AutomataAgent>>
PenaltyEnv
<<Subject Component>><<MAS>>
PenaltySim
PenaltySim Realization Class PenaltySim Realization Class Diagram 4Diagram 4
<<Sensor>>GetActions
<<signal>> +getAction(role:Role):PlayerAction
<<Effector>>SendPercepts
+sendPercept(role:Role):XYCoord[3]{ordered}
<<Subject Component>><<MAS>>
PenaltySim
<<Effector>>Legs
+do(role:Role,action:LegAction)
<<Sensor>>Eyes
<<signal>> +sense():XYCoord[3]{ordered}
<<Effector>>Arms
+do(role:Role,action:ArmAction)
<<Component>>CommincationChannel
<<Interface>>ICommunicationChanel
<<create>> +new()+getChannelState:ChannelStateKind
<<Component>>CommunicationChannel
<<create>> -new() -getChannelState:ChannelStateKind <<signal>> -sendPercepts(role:Role):XYCoord[3]{ordered} -sense():XYCoord[3]{ordered} <<signal>> -do(role:Role,action:LegAction) <<signal>> -do(role:Role,action:ArmAction) -getAction(role:Role):Action
PenaltySim Realization Component PenaltySim Realization Component DiagramDiagram
<<Subject Component>><<MAS>>
PenaltySim
<<ReflexAgent>>Player
<<create>> -new() -initialize() -getState(): AgStateKind -getRole(): String -reason(percepts:XYCoord[3]{ordered}): PlayerAction
<<Environment>> <<AutomataAgent>>PenaltyEnv
<<create>> -new() -initialize() -getEnvState(): EnvStateKind -reason(shooterAction:PlayerAction{in}, keeperAction:PlayerAction{in}, shooterPercepts:XYCoord[3]{out,ordered}, keeperPercepts:XYCoord[3]{out, ordered})
REnv
PEnv
RPlayer[2]
PPlayer
PGetActions
PSendPercepts
RSendPerceptsRGetActions
<<Agent>>Keeper
<<Agent>>Shooter
REyesRLegs
PEyes[2]
PLegs[2]
RArms PArms
RChannel
PChannel
PenaltySim RealizationPenaltySim RealizationComposite Structure DiagramComposite Structure Diagram
<<Environment>><<AutomataAgent>>
: PenaltyEnv
rs:RPlayer
ps:PPlayer <<Component>>: CommunicationChannel
pc:PChannel
re:REnvpe;PEnv
<<ReflexAgent>>: Keeper
rlk:RLegs pak:PArms
pek:PEyes
rek:REyes
rsp:RSendPerceptsrga:RGetActions
<<ReflexAgent>>: Shooter
rls:RLegspls:PLegs
pes:PEyes
rc:RChannel
psp:RSendPerceptspga:RGetActions
rk:RPlayer
pk:PPlayer
<<SubjectComponent>>
<<MAS>>penaltySim
<<create>> -new()
rak:RArmsplk:RLegs
res:REyes
<<MAS>> : PenaltySim
PenaltySim RealizationPenaltySim RealizationActivity Diagram 1Activity Diagram 1
PenaltySim.new()
connect(rc,pc)
connect(rk,pk)
connect(rs,ps)
connect(re,pe)
connect(res,pes)
connect(rls,pls)
connect(rak,pak)
connect(rga,pga)
connect(rek,pek)
connect(rlk,plk)
PenaltyEnv.new()
Shooter.new()
Keeper.new()
CommunicationChannel.new() connect(rsp,psp)
PenaltySim Realization Activity Diagram 2PenaltySim Realization Activity Diagram 2
k.do(keeper,ka) e.getAction(k)s.do(shooter,sa) e.getAction(s)
e.sendPercepts(s) s.sense() e.sendPercepts(k) k.sense()
stop()
k.initialize()
run()
e.initialize()s.initialize()
s:Shooter e:PenaltyEnv k:Keeper
s.reason(sp) sa:LegAction k.reason(kp)
e.reason(sa,ka,sp,kp)
sp:XYCoord[3]
sa:LegAction ka:PlayerAction
ka:PlayerAction
kp:XYCoord[3]
Player Specification Class DiagramPlayer Specification Class Diagram
<<Effector>>Legs
+do(Role,LegAction)
<<use>>
<<use>><<Sensor>>
Eyes
<<signal>> +sense():XYCoord[3]{ordered}
<<ReflexAgent>>Kicker
<<ReflexAgent>>Keeper
<<Effector>>Arms
+do(Role,ArmAction)
<<use>>
<<Subject Component>><<ReflexAgent>>
Player
<<Interface>>IPlayer
<<create>> +new()+initialize()
+getState(): AgStateKind+getRole(): Role
FieldObj
Ball
<<enumeration>>Dir
leftright
<<enumeration>>Coord
012
<<enumeration>>Role
shooterkeeper
<<enumeration>>AgStateKind
emptyinitialized
perceptsReceivedactionChosen
actionSent
<<AgentAction>> MoveAction
to: Dir
<<AgentAction>> KickAction
to: Coord
<<AgentAction>> GrabAction
*
<<AgentAction>> PlayerAction
<<AgentAction>> ArmAction
<<AgentAction>> LegAction
<<Percept>> XYCoord
x:Coordy:Coord
<<ReflexAgent>>Keeper
-reason(percepts:XYCoord[3]{ordered}): PlayerAction
Player Specification Component Player Specification Component DiagramDiagram
<<Subject Component>><<ReflexAgent>>
Player
<<create>> -new()-getState(): AgStateKind
-getRole(): String-reason(percepts:XYCoord[3]{ordered}): PlayerAction
PPlayer
REyes
RLegs
RArms
IPlayer
<<sensor>> Eyes
<<effector>> Legs
<<effector>> Arms
<<ReflexAgent>>Shooter
-reason(percepts:XYCoord[3]{ordered}): LegAction
Player SpecificationPlayer SpecificationProtocol State MachineProtocol State Machine
actionSent
perceptsReceived
new()
self^CommunicationChannel.do(Role,Action)
empty
initialized
initialize()
CommunicationChannler^self.sense()
actionChosen
reason(percepts:XYCoord[3]{ordered})
CommunicationChannler^self.sense()
Shooter Realization Class DiagramShooter Realization Class Diagram
<<Subject Component>> <<ReflexAgent>>
Shooter
<<ReflexReasoner>>ShooterReflexReasoner
<<Interface>>IPlayerReflexReasoner
<<create>> +new()+reason(percepts:XYCoord[3]{ordered}):LegAction
<<Effector>>Legs
+do(Role = shooter,LegAction)
<<Sensor>>Eyes
<<signal>> +sense():XYCoord[3]{ordered}
<<ReflexReasoner>>ShooterReflexReasoner
<<create>> -new()+reason(percepts:XYCoord[3]{ordered}):LegAction
Shooter Realization Component Shooter Realization Component DiagramDiagram
<<Subject Component>><<ReflexAgent>>
Shooter
PPlayer
REyes
RLegs
IPlayer
<<sensor>> Eyes <<effector>> Legs
RPRR
IPlayerReflexReasoner
PPRR
REyes<<sensor>> Eyes
RLegs<<effector>> Legs
Shooter RealizationShooter RealizationComposite Structure DiagramComposite Structure Diagram
<<ReflexReasonert>>: ShooterReflexReasoner
ps:PPlayer
res:REyes
rsrr:RPRR
psrr:PPRR
rls:RLegs<<delegate>>resrr:REyes rlsrr:RLegs<<delegate>>
<<ReflexAgent>>: Shooter
<<Subject Component>><<ReflexAgent>>
Shooter
<<create>> -new()
Shooter Realization Activity Diagram Shooter Realization Activity Diagram 11
Shooter.new()
delegate(resrr,res)
connect(rsrr,psrr)
delegate(rlsrr,rls)
ShooterReflexReasoner..new()
Shooter Realization Activity Diagram Shooter Realization Activity Diagram 22Shooter.reason(sp)
sp:XYCoord[3]{ordered}
sa:LegAction
shooterX = sp[1].x keeperX = sp[2].x ballX = sp[3].x ballY = sp[3].y
[shooterX = ballX]
[ballX < shooterX][shooterX < ballX]
sa = mr
mr.to = right
mr = MoveAction.new()
sa = ml
ml.to = left
ml = MoveAction.new()
[shooterX < keeperX]
[shooter X = keeper X]
[keeperX < shooterX]
sa = kr
kr.to = 0
kr = KickAction.new()
sa = kl
kl.to = 2
kl = KickAction.new()
sa = klr
klr.to = 0 or klr = 1 or klr = 2
klr = KickAction.new()
[ballY = 0]
sa = void
[else]
Keeper Realization Class DiagramKeeper Realization Class Diagram
<<Subject Component>> <<ReflexAgent>>
Keeper
<<ReflexReasoner>>KepperReflexReasoner
<<Interface>>IPlayerReflexReasoner
<<create>> +new()+reason(percepts:XYCoord[3]{ordered}):PlayerAction
<<Effector>>Legs
+do(Role = keeper,LegAction)<<Sensor>>
Eyes
<<signal>> +sense():XYCoord[3]{ordered} <<Effector>>Arms
+do(Role = keeper,ArmAction)
<<ReflexReasoner>>KeeperReflexReasoner
<<create>> -new()+reason(percepts:XYCoord[3]{ordered}):PlayerAction
Keeper Realization Component Keeper Realization Component DiagramDiagram
<<Subject Component>><<ReflexAgent>>
Keeper
PPlayer
REyesRLegs
IPlayer
<<sensor>> Eyes<<effector>> Legs
RPRR
IPlayerReflexReasoner
PPRR
REyes<<sensor>> Eyes
RLegs<<effector>> Legs
RArms<<effector>> Arms
RArms<<effector>> Arms
Keeper RealizationKeeper RealizationComposite Structure DiagramComposite Structure Diagram
<<ReflexReasoner>>: KeeperrReflexReasoner
pk:PPlayer
rek:REyes
rkrr:RPRR
pkrr:PPRR
rlk:RLegs<<delegate>>rekrr:REyes
rlkrr:RLegs<<delegate>>
<<ReflexAgent>>: Keeper
<<Subject Component>><<ReflexAgent>>
Keeper
<<create>> -new()
rak:RArms<<delegate>>rakrr:RArms
Shooter Realization Activity Diagram Shooter Realization Activity Diagram 11
Shooter.new()
ShooterReflexRuleBaseComponent..new()
connect(rkrr,pkrr)
delegate(rlkrr,rlk)
delegate(rakrr,rak)
delegate(rekrr,rek)
Keeper Realization Activity Diagram Keeper Realization Activity Diagram 22
Keeper.reason(sp)
kp:XYCoord[3]{ordered}
ka:PlayerAction
shooterX = sp[1].x keeperX = sp[2].x ballX = sp[3].x ballY = sp[3].y
[keeperX = ballX]
[ballX < keeperX][keeperX < ballX]
sa = mr
mr.to = right
mr = MoveAction.new()
sa = ml
ml.to = left
ml = MoveAction.new()
[ballY = keeperY]
sa = void
[else]
sa = GrabAction.new()
PenaltyEnv Specification Class PenaltyEnv Specification Class DiagramDiagram
<<enumeration>>Dir
leftright
<<enumeration>>Coord
012
<<enumeration>>Role
shooterkeeper
<<enumeration>>EnvStateKind
emptyinitialized
actionsReceivedperceptsUpdated
perceptsSent
<<AgentAction>> MoveAction
to: Dir
<<AgentAction>> KickAction
to: Coord
<<AgentAction>> GrabAction
<<AgentAction>> PlayerAction
<<AgentAction>> ArmAction
<<AgentAction>> LegAction
<<Percept>> XYCoord
x:Coordy:Coord
<<Interface>>IPenaltyEnv
<<create>> +new()+initialize()
+getEnvState(): EnvStateKind-reason(shooterAction:PlayerAction{in}, keeperAction:PlayerAction{in},
shooterPercepts:XYCoord[3]{out,ordered}, keeperPercepts:XYCoord[3]{out, ordered})
<<Sensor>>GetActions
<<signal>> +getAction(role:Role):PlayerAction<<use>><<use>>
<<Effector>>SendPercepts
+sendPercept(role:Role):XYCoord[3]{ordered}
<<Subject Component>><<Environment>>
<<AutomataAgent>>PenaltyEnv
PenaltyEnv SpecificationPenaltyEnv SpecificationComponent DiagramComponent Diagram
PPenaltyEnv
IPenaltyEnv
<<Subject Component>><<Environment>>
<<AutomataAgent>>PenaltyEnv
<<create>> -new() initialize() -getEnvState(): EnvStateKind -reason(shooterAction:PlayerAction{in}, keeperAction:PlayerAction{in}, shooterPercepts:XYCoord[3]{out,ordered}, keeperPercepts:XYCoord[3]{out, ordered})
RGetActions
<<sensor>> GetActions
RSendPercepts<<effector>> SendPercepts
PenaltyEnv SpecificationPenaltyEnv SpecificationProtocol State MachineProtocol State Machine
perceptsSent
actionsReceived
new()
self^CommunicationChannel.sendPercepts(shooter)
empty< initializedinitialize()
CommunicationChannler^self.getAction(shooter,LegAction)
perceptsUpdated
CommunicationChannler^self.getAction(keeper,PlayerAction)
self^CommunicationChannel.sendPercepts(keeper)
reason(shooterAction:PlayerAction{in}, keeperAction:PlayerAction{in},
shooterPercepts:XYCoord[3]{out,ordered}, keeperPercepts:XYCoord[3]{out, ordered})