Graph name:team

A dynamic army implements a semi-decentralized control. There are several leaders that control different subsets of team agents. Also, the dynamic army can replace a leader by another whenever it dies.

In the army, there can be specialised agents in firing or locating other agents. Evidently, it should be possible to include these behaviors into a single agent and make the whole army be a group of "I can do anything" agents. However there are time constraints and code contraints (agents cannot have threads) that suggests that having specialised agents is better.

Entities in the graph

DynamicSquadron
A dynamic squadron substitutes a captain by other soldier whenever current captain dies and there is a teamleader in the squadron
Soldier
Is an agent able to receive orders and execute them. Additional capabilities like being a sharp shooter or locating targets are left as possible extensions of this role.
SurviveABattle
The main goal of the game is to survive a round in robocode. The best survivor wins
Captain
A captain commands soldiers. In principle, a captain is supposed to be good at planning and interpreting the state of the battle.

An interesting possibility is assigning special perception capabilities to the captain, like being responsible of locating targets. Also a captain may not have this skill, but organise the radar information of its soldiers in order to locate efficiently a target.

DynamicArmy
In a dynamic army, leaders are substituted by others whenever they die. This army is composed of several squadrons. There is no "general" role in this version.