Grace
Posted: Mon Jun 28, 2010 9:05 pm
Hi all,
Hopefully I'm not too late for this bot party... I'm working on a DEFCON bot called Grace (named in honour of Grace Hopper). I'm using the Lua framework by Peter Cawley.
Things are at a pretty early stage, but the intelligence within Grace will be distributed in a roughly hierarchical manner at four broad levels:
Strategy engine
This is a high level, game-theoretic approach to the broad aspects of DEFCON. All quantities (e.g. force concentrations, areas to take/defend) are defined in terms of heatmaps.
Task Group Co-ordination
The hard part. This routine takes strategic priorities generated from the Strategy engine and converts them (probably via a simulated annealing algorithm) into specific tasks. Allocate these tasks to task groups of units. The TGC also looks at tactical issues such as targets of opportunity, checking for unhandled enemies, and checking for win-opportunities.
Task management
The tasks (e.g. "Sweep and Clear", "Territory Air Defence") allocated by the Task Group Co-ordinator are implemented as finite state machines. For example the "Sweep and Clear" task is broken down into a activity (i.e. one of the finite states) of scouting toward a defined point, an activity of being in combat, and an activity of being at the target point.
Unit management
All unit specific management goes on here. Each activity will give specific jobs to each unit in the task group. These are embodied in atoms. These embody the simplest possible actions, and wrap any calls to the API. For example the movement atom will move units but also embody the intelligence to keep a minimum distance between the units in a task group
The roadmap is (currently I'm at 0.1.1):
Grace 0.0 - "Hello world"
Grace 0.1 - Single TGs only. Hard coded Strategy and TGC behaviour. SaC TG behaviour only, at MI. Partial Fact engine implementation. Fight Activity at MI. Scout Activity at MI. Attack atom at MI. Move atom at MI. Wait atom at MI.
Grace 0.2 - Strategy engine and TGC hard coded. Multiple TGs. Fact engine running at MI. SaC running at MI.
Grace 0.3 - Add Territory Air Defense task and related activities/atoms for airbases.
Grace 0.4 - Add subs. Sub combat in Fight activity. Sub sneak and sub strike tasks. Anti-sub patrols. Movement activity.
Grace 0.5 - Add strategy engine, with simple heat map for fleet, air defense, silos and sub-strike. Add silo strike task.
Grace 0.6 - Add carriers (anti-sub only). Add coastal defense task. Add bomber strike.
Grace 0.7 - Add carrier launching to naval combat. Add coastal strike. Add coastal scout.
Grace 0.8 - Implement simple TGC. Deployment according to strategy map.
Grace 0.9 - Working TGC
Grace 1.0 - Working minimum implementation. Strategy engine and TGC working to MI standard.
Grace 1.1 - Add spawned TGs.
Grace 1.5 - Add basic belief engine.
Grace 2.0 - Learning behaviour complete.
Grace 2.5 - Task Group interaction.
Grace 3.0 - Angels and demons complete.
Hopefully I'm not too late for this bot party... I'm working on a DEFCON bot called Grace (named in honour of Grace Hopper). I'm using the Lua framework by Peter Cawley.
Things are at a pretty early stage, but the intelligence within Grace will be distributed in a roughly hierarchical manner at four broad levels:
Strategy engine
This is a high level, game-theoretic approach to the broad aspects of DEFCON. All quantities (e.g. force concentrations, areas to take/defend) are defined in terms of heatmaps.
Task Group Co-ordination
The hard part. This routine takes strategic priorities generated from the Strategy engine and converts them (probably via a simulated annealing algorithm) into specific tasks. Allocate these tasks to task groups of units. The TGC also looks at tactical issues such as targets of opportunity, checking for unhandled enemies, and checking for win-opportunities.
Task management
The tasks (e.g. "Sweep and Clear", "Territory Air Defence") allocated by the Task Group Co-ordinator are implemented as finite state machines. For example the "Sweep and Clear" task is broken down into a activity (i.e. one of the finite states) of scouting toward a defined point, an activity of being in combat, and an activity of being at the target point.
Unit management
All unit specific management goes on here. Each activity will give specific jobs to each unit in the task group. These are embodied in atoms. These embody the simplest possible actions, and wrap any calls to the API. For example the movement atom will move units but also embody the intelligence to keep a minimum distance between the units in a task group
The roadmap is (currently I'm at 0.1.1):
Grace 0.0 - "Hello world"
Grace 0.1 - Single TGs only. Hard coded Strategy and TGC behaviour. SaC TG behaviour only, at MI. Partial Fact engine implementation. Fight Activity at MI. Scout Activity at MI. Attack atom at MI. Move atom at MI. Wait atom at MI.
Grace 0.2 - Strategy engine and TGC hard coded. Multiple TGs. Fact engine running at MI. SaC running at MI.
Grace 0.3 - Add Territory Air Defense task and related activities/atoms for airbases.
Grace 0.4 - Add subs. Sub combat in Fight activity. Sub sneak and sub strike tasks. Anti-sub patrols. Movement activity.
Grace 0.5 - Add strategy engine, with simple heat map for fleet, air defense, silos and sub-strike. Add silo strike task.
Grace 0.6 - Add carriers (anti-sub only). Add coastal defense task. Add bomber strike.
Grace 0.7 - Add carrier launching to naval combat. Add coastal strike. Add coastal scout.
Grace 0.8 - Implement simple TGC. Deployment according to strategy map.
Grace 0.9 - Working TGC
Grace 1.0 - Working minimum implementation. Strategy engine and TGC working to MI standard.
Grace 1.1 - Add spawned TGs.
Grace 1.5 - Add basic belief engine.
Grace 2.0 - Learning behaviour complete.
Grace 2.5 - Task Group interaction.
Grace 3.0 - Angels and demons complete.