Hi Dave (and everyone else interested on how command & control works in the engine),
on my quest to expose relevant command & control parameters in the engine, I've come across the routine
TaskDoctrine:
etermineReassessmentPeriod()
which regulates the duration of units replanning - that is, any reassessment of on-going plans. This is a quite critical bit of the engine, as it sets to how fast are forces able to adapt their plans to changing conditions (what Robert S. Leonhard calls "inertia").
I see this routine to use the orders delay tables in ScenCommonAI as a 'base' to determine the duration of these re-planning events. It is a quite complicated routine, and I'd like you to confirm my reading of the code there, as well as, illustrating its meaning with some remarks regarding the design rationale. Let's work out the process
1) Determine Standard Reassessment Duration
This is done by referring to the table in ScenCommonAI that establishes the average (?) duration of a reassessment depending on force size. These durations are given as
Army Group = 1440 minutes
Army = 1440 minutes
Corps = 1440 minutes
Division = 720 minutes
Brigade = 360 minutes
Battalion = 240 minutes
Coy = 120 minutes
Platoon = 60 minutes
Section = 40 minutes
2) Establish Commander Efficiency
As per the values obtained from the force's commander attributes and that can be set from within ScenMaker. A commander with an efficiency rating of 0, increases reassessment duration by 20%, with a rating of 100% decreases the time by a 20%. A commander with a rating of 50% doesn't affect reassessment duration.
3) Establish Staff Efficiency
Uses the Staff Quality, Capacity and Load attributes (ScenMaker settable attributes) to determine to what degree the staff is overloaded. Efficiency with no overload corresponds to Staff Quality, and that value degrades proportionally to overload. Varies times in the same way as the Commander Efficiency.
4) Comms modifier
This comms mod is obtained by determining to what degree the force is motorized. This is obtained by dividing the number of motorized units (as per the Estab) over the total number of units in the force.
When the ratio is above 1/3rd, then the modifier is set to
motorization ratio - 0.33 / 0.67 -> mapped into the [0.8,1] interval
which means that a force with just 1/3rd of motorized units gets no benefit, and a fully motorized force gets a 20% reduction in reassessment times.
5) The reassessment time is bounded to lie anywhere within 0 and 120 minutes by default.
6) Determine whether the force is
part of an attack, that is, it's executing an Assault or a FUP Reorganization task, if so
a) the force reassessment period is set to a 5% of the standard reassessment time, modified by the efficiency and comms modifiers. For instance, a pure infantry Bn size force, with 50% efficiency ratings, will be scheduling the plan reassessment 12 minutes into the future.
b) this reassessment period is restricted to a minimum of 5 minutes, and a maximum of 120 minutes.
c) if "we are to reschedule forward another reassessment" (I don't understand what does this exactly mean), the reassess period is then the minimum between 3 minutes and a third of the previous value. For the Bn force above, it would be 4 minutes.
7) if the force
isn't part of an attack,
a) if
"we are to reschedule forward another reassessment",
i) the reassessment delay is set to a 10% of the standard time, for the Bn force above, 24 minutes
ii ) this value is then restricted to a minimum of 10 minutes and a maximum of 60 minutes
b)
otherwise, if the force is performing a sub-task of an Attack or Probe task
i) the reassessment delay is set to a 25% of the standard time, for the Bn force above, 1 hour
ii) this time is then restricted to a minimum between 30 minutes and 180 minutes
c)
otherwise, if the force is performing something unrelated to an Attack or a Probe
i) the modified standard reassessment time (4 hours for the Bn force above), is then
randomly decreased or increased up to a 25% (i.e. the reassessment delay could be between 5 and 3 hours)
ii) if the force is resting, an hour is added to the reassessment period
My observations:
* I can get this in the Estab, it's quite straightforward, by introducing a new kind of object that implements the above, triggering the corresponding computations on the basis of
force task
being a member of a given set of tasks
force task
being part of a member of a given set of tasks
* By introducing Bil's comms ratings I think we can do away with the Motorised-based comms rating above
* Seeing this code, now I understand the - relative - tardiness of the AI to react in certain contexts, like Secure Crossing or Delay, where I reckon the tempo on the command loop should be higher.
Exposing this (and the other tables on ScenCommonAI) would allow people to model a great variety of armies with wildly different doctrines over broad periods of time. For instance, it would allow us to account for that behaviour you commented about the Japanese Army tactical decision making being very fast at the lowest levels of the command chain (with Sections or Platoons taking initiatives such as charging an enemy), but not at the higher levels.