The general architecture (match) of JPortal is:
Match architecture
Collected gibberish follows
Current understanding: 24.8.2011 of Enhanced AI processing:
Match → MatchComputerPlayer
→ (Interface) AISituationHAndler, implemented by
→ (abstract) AbstractEnhancedAI
→ (inherited by) EnhancedAI
→ (method) .generatePlan() / / does nothing if current plan already built, and match did not change
→ (class) EAIPlan (built by generatePlan), Plan holds a plan for all round/steps, current round/phase/step is held in variable lastStep
→ within EAIPlan
→ (static method) createSchedules() is called to generate the best fitting EAISchedules (currently known) for all future phases (till a maximum)
→ each phase information is held in (class) EAISchedule[]
→ the generation of these EAISchedules is done in class EAIPlanTree
→ (class) EAIPlanTree generates possible future scenarios, which can be judged by weighting functions
→ root of the tree is built with current game/phase information
→ (method) root.buildLeafs() → generates child (future phases) scenarios
→ (method) .executePlan(), gets the current (class) EAIScedule for the current Phase (lastStep)
→ (class) EAIScedule hold actions to be done for the current Phase
→ within .executePlan() (class) EAIActionStack (mSaack) is supplied with the next action from EAIScedule (one by one)
→ (method) executeAction(), which executes the next available action on stack