private class RationalAI.MoveFinder
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private java.util.List<RationalAI.LegionBoardMove> |
bestMove |
private double |
bestScore |
private static double |
INITIAL_SCORE |
private boolean |
mustMove |
private static double |
NO_MOVE_EXISTS |
private long |
nodesExplored |
Modifier | Constructor and Description |
---|---|
private |
RationalAI.MoveFinder() |
Modifier and Type | Method and Description |
---|---|
private void |
branchAndBound(java.util.List<RationalAI.LegionBoardMove> performedMoves,
java.util.List<java.util.List<RationalAI.LegionBoardMove>> availableMoves,
double currentValue) |
private boolean |
checkNewCycle(MasterHex target,
MasterHex from,
java.util.List<RationalAI.LegionBoardMove> moves)
checkes if there is a path from 'from' to target, using
the moves in the list.
|
java.util.List<RationalAI.LegionBoardMove> |
findOptimalMove(java.util.List<java.util.List<RationalAI.LegionBoardMove>> all_legionMoves,
boolean mustMove) |
private java.util.List<RationalAI.LegionBoardMove> |
getValidMove(java.util.List<RationalAI.LegionBoardMove> performedMoves)
checks if a move is valid, and if so returns the moves in
an executeable sequence.
|
private double |
moveValueBound(java.util.List<java.util.List<RationalAI.LegionBoardMove>> availableMoves) |
private java.util.List<java.util.List<RationalAI.LegionBoardMove>> |
removeHeadAndConflicts(java.util.List<java.util.List<RationalAI.LegionBoardMove>> availableMoves,
RationalAI.LegionBoardMove lm) |
private java.util.List<RationalAI.LegionBoardMove> bestMove
private double bestScore
private boolean mustMove
private long nodesExplored
private static final double INITIAL_SCORE
private static final double NO_MOVE_EXISTS
public java.util.List<RationalAI.LegionBoardMove> findOptimalMove(java.util.List<java.util.List<RationalAI.LegionBoardMove>> all_legionMoves, boolean mustMove)
private double moveValueBound(java.util.List<java.util.List<RationalAI.LegionBoardMove>> availableMoves)
private java.util.List<RationalAI.LegionBoardMove> getValidMove(java.util.List<RationalAI.LegionBoardMove> performedMoves)
performedMoves
- private void branchAndBound(java.util.List<RationalAI.LegionBoardMove> performedMoves, java.util.List<java.util.List<RationalAI.LegionBoardMove>> availableMoves, double currentValue)
private boolean checkNewCycle(MasterHex target, MasterHex from, java.util.List<RationalAI.LegionBoardMove> moves)
target
- from
- moves
- private java.util.List<java.util.List<RationalAI.LegionBoardMove>> removeHeadAndConflicts(java.util.List<java.util.List<RationalAI.LegionBoardMove>> availableMoves, RationalAI.LegionBoardMove lm)