aesop_simulation (AESOP Wargame)
Military wargame simulation microservice — belligerent modeling, tactical hex-grid combat, TABORD order system, C2 chain management, Monte Carlo resolution, and INFOPS influence operations.
Simulation Apps (11 Django Applications)
| # | App Name | Purpose | Key Models |
|---|---|---|---|
| 1 | belligerents |
Define opposing forces, their will gauges, capability sectors, and war objectives | Belligerent, Will, CapabilitySector, WarObjective |
| 2 | units |
Military unit registry with type encoding, VE/VC values, and organizational links | Unit, UnitType, EssentialValue, CombatValue |
| 3 | hexgrid |
H3-based hexagonal terrain grid, terrain types, and positional indexing | HexCell, Terrain, UnitPosition |
| 4 | tabord |
Structured order table (TABORD) for movement, establishment, and engagement orders | Order, Waypoint, EstablishmentZone, TacticalBehavior |
| 5 | combat |
Combat resolution engine using VC comparisons and Monte Carlo probability | Engagement, CombatResult, Attrition |
| 6 | c2chain |
Command and control hierarchy stored as Apache AGE graph edges | C2Node, C2Edge, CommandRelation |
| 7 | montecarlo |
Stochastic simulation engine running N iterations per engagement for probability distributions | SimulationRun, RunResult, Distribution |
| 8 | infops |
Information operations: content authoring, vector selection, and will-component targeting | InfoContent, InfoVector, WillEffect |
| 9 | ooda |
OODA loop turn engine controlling Observe-Orient-Decide-Act cycle phases | Turn, Phase, OODAState |
| 10 | workstations |
Eight player workstation types with role-based views and WebSocket feeds | Workstation, WorkstationRole, DisplayConfig |
| 11 | grouplaws |
Configurable Group C conversion laws mapping VE inputs to VC combat outputs | ConversionLaw, VEWeight, VCOutput |
Simulation Modes
Manual Mode
Timescale: Days
Full OODA cycle executed by human players. Each phase (Observe, Orient, Decide, Act) requires explicit player input and validation. Maximum realism for training exercises.
- All 4 OODA phases: player-driven
- TABORDs authored manually
- Full deliberation time
Semi-Automatic Mode
Timescale: Hours
Orient and Decide phases require human input. Observe and Act phases are automated by the engine. Balances speed with meaningful decision-making.
- Observe: automated sensor feeds
- Orient + Decide: human players
- Act: automated execution
Automatic Mode
Timescale: Minutes
All OODA phases automated. Engine runs at maximum speed using AI-driven decisions and Monte Carlo resolution. Used for scenario stress-testing and what-if analysis.
- All 4 OODA phases: engine-driven
- Monte Carlo batch runs
- Hundreds of iterations possible
Unit Type Encoding
Two-Digit Type Code
Each unit is assigned a 2-digit type code. The first digit encodes the echelon level, the second digit encodes the domain.
| First Digit (Echelon) | Meaning | Second Digit (Domain) | Meaning | |
|---|---|---|---|---|
1 |
HQ / Command | 1 |
Joint / Combined | |
2 |
Tactical | 2 |
Land | |
3 |
Specialized | 3 |
Sea / Naval | |
4 |
Air | |||
5 |
Cyber | |||
6 |
Space | |||
7 |
Special Forces | |||
8 |
Logistics |
22 = Tactical + Land (e.g., 3RIMA infantry regiment). Type 14 = HQ + Air (e.g., Air Command). Type 37 = Specialized + Special Forces.
Tactical Behavior Matrix
Detection Reaction (1st digit) x Engaged Reaction (2nd digit) = 12 Combinations
The two-digit tactical behavior code encodes how a unit reacts when it detects an enemy (first digit) and when it is engaged in combat (second digit).
| 1 — Withdraw | 2 — Hold position | 3 — Delay & fall back | 4 — Counterattack | |
|---|---|---|---|---|
| 1 — Evade | 11 Evade + Withdraw |
12 Evade + Hold |
13 Evade + Delay |
14 Evade + Counter |
| 2 — Engage if superior | 21 Engage + Withdraw |
22 Engage + Hold |
23 Engage + Delay |
24 Engage + Counter |
| 3 — Engage always | 31 Always + Withdraw |
32 Always + Hold |
33 Always + Delay |
34 Always + Counter |
24 means the unit will engage if it has force superiority upon detection, and counterattack if engaged by the enemy. This is a typical posture for offensive mechanized units.