From 6982608043a2cbbefe766f9c27bfd9d943a1f3fd Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Mon, 7 Mar 2011 22:59:55 -0500 Subject: [PATCH] more AI fixes --- .../src/mage/player/ai/ComputerPlayer2.java | 161 +++++++++++------- .../src/mage/player/ai/ComputerPlayer3.java | 116 +++++++------ .../mage/player/ai/GameStateEvaluator.java | 16 +- .../src/mage/player/ai/SimulatedPlayer.java | 23 ++- .../src/mage/player/ai/SimulationNode.java | 15 +- Mage.Server/plugins/mage-player-aiminimax.jar | Bin 38416 -> 39053 bytes Mage.Tests/plugins/mage-player-aiminimax.jar | Bin 38416 -> 39053 bytes .../abilities/costs/common/PayLifeCost.java | 2 +- 8 files changed, 198 insertions(+), 135 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java index b5e0f68f5a..717d65fc40 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer2.java @@ -29,6 +29,7 @@ package mage.player.ai; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.UUID; @@ -39,6 +40,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import java.util.logging.Level; import mage.Constants.Outcome; import mage.Constants.PhaseStep; import mage.Constants.RangeOfInfluence; @@ -182,14 +184,18 @@ public class ComputerPlayer2 extends ComputerPlayer implements if (!getNextAction(game)) { Game sim = createSimulation(game); SimulationNode.resetCount(); - root = new SimulationNode(null, sim, maxDepth, playerId); + root = new SimulationNode(null, sim, playerId); logger.debug("simulating actions"); addActionsTimed(new FilterAbility()); if (root.children.size() > 0) { root = root.children.get(0); actions = new LinkedList(root.abilities); combat = root.combat; + if (logger.isDebugEnabled()) + logger.debug("adding actions:" + actions); } + else + logger.debug("no actions added"); } } @@ -215,20 +221,20 @@ public class ComputerPlayer2 extends ComputerPlayer implements return false; } - protected int minimaxAB(SimulationNode node, FilterAbility filter, int depth, int alpha, int beta) { + protected int minimaxAB(SimulationNode node, FilterAbility filter, int alpha, int beta) { UUID currentPlayerId = node.getGame().getPlayerList().get(); SimulationNode bestChild = null; boolean isSimulatedPlayer = currentPlayerId.equals(playerId); for (SimulationNode child: node.getChildren()) { if (alpha >= beta) { - logger.debug("alpha beta pruning"); + logger.debug(indent(node.depth) + "alpha beta pruning"); break; } - if (SimulationNode.nodeCount > maxNodes) { - logger.debug("simulating -- reached end-state"); - break; - } - int val = addActions(child, filter, depth-1, alpha, beta); +// if (SimulationNode.nodeCount > maxNodes) { +// logger.debug(indent(node.depth) + "simulating -- reached end-state"); +// break; +// } + int val = addActions(child, filter, alpha, beta); if (!isSimulatedPlayer) { if (val < beta) { beta = val; @@ -236,7 +242,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements node.setCombat(child.getCombat()); } if (val == GameStateEvaluator.LOSE_SCORE) { - logger.debug("simulating -- lose, can't do worse than this"); + logger.debug(indent(node.depth) + "simulating -- lose, can't do worse than this"); break; } } @@ -247,7 +253,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements node.setCombat(child.getCombat()); } if (val == GameStateEvaluator.WIN_SCORE) { - logger.debug("simulating -- win, can't do better than this"); + logger.debug(indent(node.depth) + "simulating -- win, can't do better than this"); break; } } @@ -256,11 +262,11 @@ public class ComputerPlayer2 extends ComputerPlayer implements if (bestChild != null) node.children.add(bestChild); if (!isSimulatedPlayer) { - logger.debug("returning minimax beta: " + beta); + logger.debug(indent(node.depth) + "returning minimax beta: " + beta); return beta; } else { - logger.debug("returning minimax alpha: " + alpha); + logger.debug(indent(node.depth) + "returning minimax alpha: " + alpha); return alpha; } } @@ -274,7 +280,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements return null; } - protected void resolve(SimulationNode node, int depth, Game game) { + protected void resolve(SimulationNode node, Game game) { StackObject ability = game.getStack().pop(); if (ability instanceof StackAbility) { SearchEffect effect = getSearchEffect((StackAbility) ability); @@ -287,16 +293,16 @@ public class ComputerPlayer2 extends ComputerPlayer implements SearchEffect newEffect = getSearchEffect((StackAbility) newAbility); newEffect.getTarget().addTarget(targetId, newAbility, sim); sim.getStack().push(newAbility); - SimulationNode newNode = new SimulationNode(node, sim, depth, ability.getControllerId()); + SimulationNode newNode = new SimulationNode(node, sim, ability.getControllerId()); node.children.add(newNode); newNode.getTargets().add(targetId); - logger.debug("simulating search -- node#: " + SimulationNode.getCount() + "for player: " + sim.getPlayer(ability.getControllerId()).getName()); + logger.debug(indent(node.depth) + "simulating search -- node#: " + SimulationNode.getCount() + "for player: " + sim.getPlayer(ability.getControllerId()).getName()); } return; } } } - logger.debug("simulating resolve "); + logger.debug(indent(node.depth) + "simulating resolve "); ability.resolve(game); game.applyEffects(); game.getPlayers().resetPassed(); @@ -307,7 +313,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements FutureTask task = new FutureTask(new Callable() { public Integer call() throws Exception { - return addActions(root, filter, maxDepth, Integer.MIN_VALUE, Integer.MAX_VALUE); + return addActions(root, filter, Integer.MIN_VALUE, Integer.MAX_VALUE); } }); pool.execute(task); @@ -316,6 +322,12 @@ public class ComputerPlayer2 extends ComputerPlayer implements } catch (TimeoutException e) { logger.debug("simulating - timed out"); task.cancel(true); + // sleep for 1 second to allow cleanup to finish + try { + Thread.sleep(1000); + } catch (InterruptedException ex) { + logger.fatal("can't sleep"); + } } catch (ExecutionException e) { logger.fatal("Simulation error", e); task.cancel(true); @@ -325,28 +337,28 @@ public class ComputerPlayer2 extends ComputerPlayer implements } } - protected int addActions(SimulationNode node, FilterAbility filter, int depth, int alpha, int beta) { + protected int addActions(SimulationNode node, FilterAbility filter, int alpha, int beta) { Game game = node.getGame(); - int val; if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } - if (depth <= 0 || SimulationNode.nodeCount > maxNodes || game.isGameOver()) { - logger.debug("simulating -- reached end state"); + int val; + if (node.depth > maxDepth || game.isGameOver()) { + logger.debug(indent(node.depth) + "simulating -- reached end state"); val = GameStateEvaluator.evaluate(playerId, game); } else if (node.getChildren().size() > 0) { - logger.debug("simulating -- somthing added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth-1, alpha, beta); + logger.debug(indent(node.depth) + "simulating -- somthing added children:" + node.getChildren().size()); + val = minimaxAB(node, filter, alpha, beta); } else { if (logger.isDebugEnabled()) - logger.debug("simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + (node.getPlayerId().equals(playerId)?"yes":"no")); + logger.debug(indent(node.depth) + "simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + node.depth + " step:" + game.getTurn().getStepType() + " for player:" + (node.getPlayerId().equals(playerId)?"yes":"no")); if (allPassed(game)) { if (!game.getStack().isEmpty()) { - resolve(node, depth, game); + resolve(node, game); } else { // int testScore = GameStateEvaluator.evaluate(playerId, game); @@ -365,55 +377,57 @@ public class ComputerPlayer2 extends ComputerPlayer implements } else if (node.getChildren().size() > 0) { //declared attackers or blockers or triggered abilities - logger.debug("simulating -- attack/block/trigger added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth-1, alpha, beta); + logger.debug(indent(node.depth) + "simulating -- attack/block/trigger added children:" + node.getChildren().size()); + val = minimaxAB(node, filter, alpha, beta); } else { - val = simulatePriority(node, game, filter, depth, alpha, beta); + val = simulatePriority(node, game, filter, alpha, beta); } } if (logger.isDebugEnabled()) - logger.debug("returning -- score: " + val + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.debug(indent(node.depth) + "returning -- score: " + val + " depth:" + node.depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); return val; } - protected int simulatePriority(SimulationNode node, Game game, FilterAbility filter, int depth, int alpha, int beta) { + protected int simulatePriority(SimulationNode node, Game game, FilterAbility filter, int alpha, int beta) { if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } node.setGameValue(game.getState().getValue()); SimulatedPlayer currentPlayer = (SimulatedPlayer) game.getPlayer(game.getPlayerList().get()); boolean isSimulatedPlayer = currentPlayer.getId().equals(playerId); - logger.debug("simulating -- player " + currentPlayer.getName()); + logger.debug(indent(node.depth) + "simulating -- player " + currentPlayer.getName()); SimulationNode bestNode = null; List allActions = currentPlayer.simulatePriority(game, filter); if (logger.isDebugEnabled()) - logger.debug("simulating -- adding " + allActions.size() + " children:" + allActions); + logger.debug(indent(node.depth) + "simulating -- adding " + allActions.size() + " children:" + allActions); for (Ability action: allActions) { if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); break; } Game sim = game.copy(); if (sim.getPlayer(currentPlayer.getId()).activateAbility((ActivatedAbility) action.copy(), sim)) { sim.applyEffects(); - if (checkForRepeatedAction(sim, node, action, currentPlayer.getId())) + if (checkForUselessAction(sim, node, action, currentPlayer.getId())) { + logger.debug(indent(node.depth) + "found useless action: " + action); continue; + } if (!sim.isGameOver() && action.isUsesStack()) { // only pass if the last action uses the stack sim.getPlayer(currentPlayer.getId()).pass(); sim.getPlayerList().getNext(); } - SimulationNode newNode = new SimulationNode(node, sim, action, depth, currentPlayer.getId()); + SimulationNode newNode = new SimulationNode(node, sim, action, currentPlayer.getId()); if (logger.isDebugEnabled()) - logger.debug("simulating -- node #:" + SimulationNode.getCount() + " actions:" + action); + logger.debug(indent(node.depth) + "simulating -- node #:" + SimulationNode.getCount() + " actions:" + action); sim.checkStateAndTriggered(); - int val = addActions(newNode, filter, depth-1, alpha, beta); + int val = addActions(newNode, filter, alpha, beta); if (!isSimulatedPlayer) { if (val < beta) { beta = val; @@ -421,7 +435,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements node.setCombat(newNode.getCombat()); } if (val == GameStateEvaluator.LOSE_SCORE) { - logger.debug("simulating -- lose, can't do worse than this"); + logger.debug(indent(node.depth) + "simulating -- lose, can't do worse than this"); break; } } @@ -436,18 +450,18 @@ public class ComputerPlayer2 extends ComputerPlayer implements choices = node.getChoices(); } if (val == GameStateEvaluator.WIN_SCORE) { - logger.debug("simulating -- win, can't do better than this"); + logger.debug(indent(node.depth) + "simulating -- win, can't do better than this"); break; } } if (alpha >= beta) { - logger.debug("simulating -- pruning"); - break; - } - if (SimulationNode.nodeCount > maxNodes) { - logger.debug("simulating -- reached end-state"); + logger.debug(indent(node.depth) + "simulating -- pruning"); break; } +// if (SimulationNode.nodeCount > maxNodes) { +// logger.debug(indent(node.depth) + "simulating -- reached end-state"); +// break; +// } } } if (bestNode != null) { @@ -455,11 +469,11 @@ public class ComputerPlayer2 extends ComputerPlayer implements node.children.add(bestNode); } if (!isSimulatedPlayer) { - logger.debug("returning priority beta: " + beta); + logger.debug(indent(node.depth) + "returning priority beta: " + beta); return beta; } else { - logger.debug("returning priority alpha: " + alpha); + logger.debug(indent(node.depth) + "returning priority alpha: " + alpha); return alpha; } } @@ -606,8 +620,8 @@ public class ComputerPlayer2 extends ComputerPlayer implements } } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, playerId, playerId)); - SimulationNode newNode = new SimulationNode(node, sim, node.getDepth()-1, activePlayerId); - logger.debug("simulating -- node #:" + SimulationNode.getCount() + " declare attakers"); + SimulationNode newNode = new SimulationNode(node, sim, activePlayerId); + logger.debug(indent(node.depth) + "simulating -- node #:" + SimulationNode.getCount() + " declare attakers"); newNode.setCombat(sim.getCombat()); node.children.add(newNode); } @@ -627,8 +641,8 @@ public class ComputerPlayer2 extends ComputerPlayer implements } } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, playerId, playerId)); - SimulationNode newNode = new SimulationNode(node, sim, node.getDepth()-1, defenderId); - logger.debug("simulating -- node #:" + SimulationNode.getCount() + " declare blockers"); + SimulationNode newNode = new SimulationNode(node, sim, defenderId); + logger.debug(indent(node.depth) + "simulating -- node #:" + SimulationNode.getCount() + " declare blockers"); newNode.setCombat(sim.getCombat()); node.children.add(newNode); } @@ -698,22 +712,43 @@ public class ComputerPlayer2 extends ComputerPlayer implements return sim; } - private boolean checkForRepeatedAction(Game sim, SimulationNode node, Ability action, UUID playerId) { + /** + * resolve current ability on the stack if there is one, then + * check if current game state is the same as the previous, if so then + * action has no effect and is not useful + * + * @param sim + * @param node + * @param action + * @param playerId + * @return + */ + private boolean checkForUselessAction(Game sim, SimulationNode node, Ability action, UUID playerId) { + int currentVal = 0; + int prevVal = 0; if (action instanceof PassAbility) return false; - int val = GameStateEvaluator.evaluate(playerId, sim); SimulationNode test = node.getParent(); - while (test != null && !test.getPlayerId().equals(playerId)) { - test = test.getParent(); + if (test == null) + return false; + if (action.isUsesStack()) { + Game testSim = sim.copy(); + StackObject ability = testSim.getStack().pop(); + ability.resolve(testSim); + testSim.applyEffects(); + currentVal = GameStateEvaluator.evaluate(playerId, testSim, true); } - if (test != null && test.getAbilities() != null && test.getAbilities().size() == 1) { - if (action.toString().equals(test.getAbilities().get(0).toString()) && GameStateEvaluator.evaluate(playerId, sim) == val) { - if (logger.isDebugEnabled()) - logger.debug("found repeated action " + action); - return true; - } + else { + currentVal = GameStateEvaluator.evaluate(playerId, sim, true); } - return false; + prevVal = GameStateEvaluator.evaluate(playerId, test.getGame(), true); + return currentVal == prevVal; + } + + protected String indent(int num) { + char[] fill = new char[num]; + Arrays.fill(fill, ' '); + return Integer.toString(num) + new String(fill); } } diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java index ec2291780d..571c7e0d6c 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/ComputerPlayer3.java @@ -156,7 +156,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { currentScore = GameStateEvaluator.evaluate(playerId, game); Game sim = createSimulation(game); SimulationNode.resetCount(); - root = new SimulationNode(null, sim, maxDepth, playerId); + root = new SimulationNode(null, sim, playerId); logger.debug("simulating pre combat actions -----------------------------------------------------------------------------------------"); addActionsTimed(new FilterAbility()); @@ -165,7 +165,11 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { root = root.children.get(0); actions = new LinkedList(root.abilities); combat = root.combat; + if (logger.isDebugEnabled()) + logger.debug("adding pre-combat actions:" + actions); } + else + logger.debug("no pre-combat actions added"); } } @@ -174,7 +178,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { currentScore = GameStateEvaluator.evaluate(playerId, game); Game sim = createSimulation(game); SimulationNode.resetCount(); - root = new SimulationNode(null, sim, maxDepth, playerId); + root = new SimulationNode(null, sim, playerId); logger.debug("simulating post combat actions ----------------------------------------------------------------------------------------"); addActionsTimed(new FilterAbility()); // addActions(root, new FilterAbility(), maxDepth, Integer.MIN_VALUE, Integer.MAX_VALUE); @@ -182,34 +186,38 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { root = root.children.get(0); actions = new LinkedList(root.abilities); combat = root.combat; + if (logger.isDebugEnabled()) + logger.debug("adding post-combat actions:" + actions); } + else + logger.debug("no post-combat actions added"); } } @Override - protected int addActions(SimulationNode node, FilterAbility filter, int depth, int alpha, int beta) { + protected int addActions(SimulationNode node, FilterAbility filter, int alpha, int beta) { boolean stepFinished = false; int val; Game game = node.getGame(); if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } - if (depth <= 0 || SimulationNode.nodeCount > maxNodes || game.isGameOver()) { - logger.debug("simulating -- reached end state"); + if (node.depth > maxDepth || game.isGameOver()) { + logger.debug(indent(node.depth) + "simulating -- reached end state"); val = GameStateEvaluator.evaluate(playerId, game); } else if (node.getChildren().size() > 0) { - logger.debug("simulating -- somthing added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth-1, alpha, beta); + logger.debug(indent(node.depth) + "simulating -- somthing added children:" + node.getChildren().size()); + val = minimaxAB(node, filter, alpha, beta); } else { if (logger.isDebugEnabled()) - logger.debug("simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(game.getPlayerList().get()).getName()); + logger.debug(indent(node.depth) + "simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + node.depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(game.getPlayerList().get()).getName()); if (allPassed(game)) { if (!game.getStack().isEmpty()) { - resolve(node, depth, game); + resolve(node, game); } else { stepFinished = true; @@ -220,21 +228,21 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { val = GameStateEvaluator.evaluate(playerId, game); } else if (stepFinished) { - logger.debug("step finished"); + logger.debug(indent(node.depth) + "step finished"); int testScore = GameStateEvaluator.evaluate(playerId, game); if (game.getActivePlayerId().equals(playerId)) { if (testScore < currentScore) { // if score at end of step is worse than original score don't check further - logger.debug("simulating -- abandoning check, no immediate benefit"); + logger.debug(indent(node.depth) + "simulating -- abandoning check, no immediate benefit"); val = testScore; } else { switch (game.getTurn().getStepType()) { case PRECOMBAT_MAIN: - val = simulateCombat(game, node, depth-1, alpha, beta, false); + val = simulateCombat(game, node, alpha, beta, false); break; case POSTCOMBAT_MAIN: - val = simulateCounterAttack(game, node, depth-1, alpha, beta); + val = simulateCounterAttack(game, node, alpha, beta); break; default: val = GameStateEvaluator.evaluate(playerId, game); @@ -244,31 +252,31 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { } else { if (game.getTurn().getStepType() == PhaseStep.DECLARE_ATTACKERS) - val = simulateBlockers(game, node, playerId, depth-1, alpha, beta, true); + val = simulateBlockers(game, node, playerId, alpha, beta, true); else val = GameStateEvaluator.evaluate(playerId, game); } } else if (node.getChildren().size() > 0) { - logger.debug("simulating -- trigger added children:" + node.getChildren().size()); - val = minimaxAB(node, filter, depth, alpha, beta); + logger.debug(indent(node.depth) + "simulating -- trigger added children:" + node.getChildren().size()); + val = minimaxAB(node, filter, alpha, beta); } else { - val = simulatePriority(node, game, filter, depth, alpha, beta); + val = simulatePriority(node, game, filter, alpha, beta); } } if (logger.isDebugEnabled()) - logger.debug("returning -- score: " + val + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.debug(indent(node.depth) + "returning -- score: " + val + " depth:" + node.depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); return val; } - protected int simulateCombat(Game game, SimulationNode node, int depth, int alpha, int beta, boolean counter) { + protected int simulateCombat(Game game, SimulationNode node, int alpha, int beta, boolean counter) { Integer val = null; if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } if (game.getTurn().getStepType() != PhaseStep.DECLARE_BLOCKERS) { @@ -279,12 +287,12 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { if (!game.getStep().skipStep(game, game.getActivePlayerId())) { game.fireEvent(new GameEvent(GameEvent.EventType.DECLARE_ATTACKERS_STEP_PRE, null, null, game.getActivePlayerId())); if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_ATTACKERS, game.getActivePlayerId(), game.getActivePlayerId()))) { - val = simulateAttackers(game, node, game.getActivePlayerId(), depth, alpha, beta, counter); + val = simulateAttackers(game, node, game.getActivePlayerId(), alpha, beta, counter); } } else if (!counter) { simulateToEnd(game); - val = simulatePostCombatMain(game, node, depth, alpha, beta); + val = simulatePostCombatMain(game, node, alpha, beta); } } } @@ -293,26 +301,26 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { game.fireEvent(new GameEvent(GameEvent.EventType.DECLARE_BLOCKERS_STEP_PRE, null, null, game.getActivePlayerId())); if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.DECLARING_BLOCKERS, game.getActivePlayerId(), game.getActivePlayerId()))) { //only suitable for two player games - only simulates blocks for 1st defender - val = simulateBlockers(game, node, game.getCombat().getDefenders().iterator().next(), depth, alpha, beta, counter); + val = simulateBlockers(game, node, game.getCombat().getDefenders().iterator().next(), alpha, beta, counter); } } else if (!counter) { finishCombat(game); - val = simulateCounterAttack(game, node, depth, alpha, beta); + val = simulateCounterAttack(game, node, alpha, beta); } } if (val == null) val = GameStateEvaluator.evaluate(playerId, game); if (logger.isDebugEnabled()) - logger.debug("returning -- combat score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.debug(indent(node.depth) + "returning -- combat score: " + val + " depth:" + node.depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); return val; } - protected int simulateAttackers(Game game, SimulationNode node, UUID attackerId, int depth, int alpha, int beta, boolean counter) { + protected int simulateAttackers(Game game, SimulationNode node, UUID attackerId, int alpha, int beta, boolean counter) { if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } Integer val = null; @@ -320,10 +328,10 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { SimulatedPlayer attacker = (SimulatedPlayer) game.getPlayer(attackerId); if (logger.isDebugEnabled()) - logger.debug(attacker.getName() + "'s possible attackers: " + attacker.getAvailableAttackers(game)); + logger.debug(indent(node.depth) + attacker.getName() + "'s possible attackers: " + attacker.getAvailableAttackers(game)); for (Combat engagement: attacker.addAttackers(game)) { if (alpha >= beta) { - logger.debug("simulating -- pruning attackers"); + logger.debug(indent(node.depth) + "simulating -- pruning attackers"); break; } Game sim = game.copy(); @@ -334,19 +342,19 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { } } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, attackerId, attackerId)); - SimulationNode newNode = new SimulationNode(node, sim, depth, attackerId); + SimulationNode newNode = new SimulationNode(node, sim, attackerId); if (logger.isDebugEnabled()) - logger.debug("simulating attack for player:" + game.getPlayer(attackerId).getName()); + logger.debug(indent(node.depth) + "simulating attack for player:" + game.getPlayer(attackerId).getName()); sim.checkStateAndTriggered(); while (!sim.getStack().isEmpty()) { sim.getStack().resolve(sim); - logger.debug("resolving triggered abilities"); + logger.debug(indent(node.depth) + "resolving triggered abilities"); sim.applyEffects(); } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARE_ATTACKERS_STEP_POST, sim.getActivePlayerId(), sim.getActivePlayerId())); Combat simCombat = sim.getCombat().copy(); sim.getPhase().setStep(new DeclareBlockersStep()); - val = simulateCombat(sim, newNode, depth-1, alpha, beta, counter); + val = simulateCombat(sim, newNode, alpha, beta, counter); if (!attackerId.equals(playerId)) { if (val < beta) { beta = val; @@ -369,14 +377,14 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { node.children.add(bestNode); } if (logger.isDebugEnabled()) - logger.debug("returning -- combat attacker score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.debug(indent(node.depth) + "returning -- combat attacker score: " + val + " depth:" + node.depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); return val; } - protected int simulateBlockers(Game game, SimulationNode node, UUID defenderId, int depth, int alpha, int beta, boolean counter) { + protected int simulateBlockers(Game game, SimulationNode node, UUID defenderId, int alpha, int beta, boolean counter) { if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } Integer val = null; @@ -385,10 +393,10 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { if (game.getCombat().isAttacked(defenderId, game)) { SimulatedPlayer defender = (SimulatedPlayer) game.getPlayer(defenderId); if (logger.isDebugEnabled()) - logger.debug(defender.getName() + "'s possible blockers: " + defender.getAvailableBlockers(game)); + logger.debug(indent(node.depth) + defender.getName() + "'s possible blockers: " + defender.getAvailableBlockers(game)); for (Combat engagement: defender.addBlockers(game)) { if (alpha >= beta) { - logger.debug("simulating -- pruning blockers"); + logger.debug(indent(node.depth) + "simulating -- pruning blockers"); break; } Game sim = game.copy(); @@ -401,13 +409,13 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { } } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, defenderId, defenderId)); - SimulationNode newNode = new SimulationNode(node, sim, depth, defenderId); + SimulationNode newNode = new SimulationNode(node, sim, defenderId); if (logger.isDebugEnabled()) - logger.debug("simulating block for player:" + game.getPlayer(defenderId).getName()); + logger.debug(indent(node.depth) + "simulating block for player:" + game.getPlayer(defenderId).getName()); sim.checkStateAndTriggered(); while (!sim.getStack().isEmpty()) { sim.getStack().resolve(sim); - logger.debug("resolving triggered abilities"); + logger.debug(indent(node.depth) + "resolving triggered abilities"); sim.applyEffects(); } sim.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARE_BLOCKERS_STEP_POST, sim.getActivePlayerId(), sim.getActivePlayerId())); @@ -417,7 +425,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { val = GameStateEvaluator.evaluate(playerId, sim); } else if (!counter) { - val = simulatePostCombatMain(sim, newNode, depth-1, alpha, beta); + val = simulatePostCombatMain(sim, newNode, alpha, beta); } else val = GameStateEvaluator.evaluate(playerId, sim); @@ -444,21 +452,21 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { node.children.add(bestNode); } if (logger.isDebugEnabled()) - logger.debug("returning -- combat blocker score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.debug(indent(node.depth) + "returning -- combat blocker score: " + val + " depth:" + node.depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); return val; } - protected int simulateCounterAttack(Game game, SimulationNode node, int depth, int alpha, int beta) { + protected int simulateCounterAttack(Game game, SimulationNode node, int alpha, int beta) { if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } Integer val = null; if (!game.isGameOver()) { simulateToEnd(game); game.getState().setActivePlayerId(game.getState().getPlayerList(game.getActivePlayerId()).getNext()); - logger.debug("simulating -- counter attack for player " + game.getPlayer(game.getActivePlayerId()).getName()); + logger.debug(indent(node.depth) + "simulating -- counter attack for player " + game.getPlayer(game.getActivePlayerId()).getName()); game.getTurn().setPhase(new BeginningPhase()); if (game.getPhase().beginPhase(game, game.getActivePlayerId())) { simulateStep(game, new UntapStep()); @@ -466,9 +474,9 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { simulateStep(game, new DrawStep()); game.getPhase().endPhase(game, game.getActivePlayerId()); } - val = simulateCombat(game, node, depth-1, alpha, beta, true); + val = simulateCombat(game, node, alpha, beta, true); if (logger.isDebugEnabled()) - logger.debug("returning -- counter attack score: " + val + " depth:" + depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.debug(indent(node.depth) + "returning -- counter attack score: " + val + " depth:" + node.depth + " for player:" + game.getPlayer(node.getPlayerId()).getName()); } if (val == null) val = GameStateEvaluator.evaluate(playerId, game); @@ -506,21 +514,21 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { simulateStep(game, new EndOfCombatStep()); } - protected int simulatePostCombatMain(Game game, SimulationNode node, int depth, int alpha, int beta) { + protected int simulatePostCombatMain(Game game, SimulationNode node, int alpha, int beta) { if (Thread.interrupted()) { Thread.currentThread().interrupt(); - logger.debug("interrupted"); + logger.debug(indent(node.depth) + "interrupted"); return GameStateEvaluator.evaluate(playerId, game); } - logger.debug("simulating -- post combat main"); + logger.debug(indent(node.depth) + "simulating -- post combat main"); game.getTurn().setPhase(new PostCombatMainPhase()); if (game.getPhase().beginPhase(game, game.getActivePlayerId())) { game.getPhase().setStep(new PostCombatMainStep()); game.getStep().beginStep(game, playerId); game.getPlayers().resetPassed(); - return addActions(node, new FilterAbility(), depth, alpha, beta); + return addActions(node, new FilterAbility(), alpha, beta); } - return simulateCounterAttack(game, node, depth, alpha, beta); + return simulateCounterAttack(game, node, alpha, beta); } protected void simulateToEnd(Game game) { diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java index eb31cf6f04..59aa730248 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java @@ -63,6 +63,10 @@ public class GameStateEvaluator { public static final int LOSE_SCORE = Integer.MIN_VALUE + 1; public static int evaluate(UUID playerId, Game game) { + return evaluate(playerId, game, false); + } + + public static int evaluate(UUID playerId, Game game, boolean ignoreTapped) { Player player = game.getPlayer(playerId); Player opponent = game.getPlayer(game.getOpponents(playerId).iterator().next()); if (game.isGameOver()) { @@ -74,10 +78,10 @@ public class GameStateEvaluator { int lifeScore = (player.getLife() - opponent.getLife()) * LIFE_FACTOR; int permanentScore = 0; for (Permanent permanent: game.getBattlefield().getAllActivePermanents(playerId)) { - permanentScore += evaluatePermanent(permanent, game); + permanentScore += evaluatePermanent(permanent, game, ignoreTapped); } for (Permanent permanent: game.getBattlefield().getAllActivePermanents(opponent.getId())) { - permanentScore -= evaluatePermanent(permanent, game); + permanentScore -= evaluatePermanent(permanent, game, ignoreTapped); } permanentScore *= PERMANENT_FACTOR; @@ -91,8 +95,12 @@ public class GameStateEvaluator { return score; } - public static int evaluatePermanent(Permanent permanent, Game game) { - int value = permanent.isTapped()?4:5; + public static int evaluatePermanent(Permanent permanent, Game game, boolean ignoreTapped) { + int value = 0; + if (ignoreTapped) + value = 5; + else + value = permanent.isTapped()?4:5; if (permanent.getCardType().contains(CardType.CREATURE)) { value += evaluateCreature(permanent, game) * CREATURE_FACTOR; } diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java index 5ae447975f..9e4212be3d 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulatedPlayer.java @@ -29,6 +29,7 @@ package mage.player.ai; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -64,9 +65,11 @@ public class SimulatedPlayer extends ComputerPlayer { private FilterAbility filter; private transient ConcurrentLinkedQueue allActions; private static PassAbility pass = new PassAbility(); + protected int maxDepth; public SimulatedPlayer(UUID id, boolean isSimulatedPlayer) { super(id); + maxDepth = Config.maxDepth; pass.setControllerId(playerId); this.isSimulatedPlayer = isSimulatedPlayer; } @@ -91,6 +94,7 @@ public class SimulatedPlayer extends ComputerPlayer { simulateOptions(sim, pass); ArrayList list = new ArrayList(allActions); + //Collections.shuffle(list); Collections.reverse(list); return list; } @@ -244,23 +248,22 @@ public class SimulatedPlayer extends ComputerPlayer { } else { SimulationNode parent = (SimulationNode) game.getCustomData(); - int depth = parent.getDepth() - 1; - if (depth == 0) return true; - logger.debug("simulating -- triggered ability - adding children:" + options.size()); + if (parent.getDepth() == maxDepth) return true; + logger.debug(indent(parent.getDepth()) + "simulating -- triggered ability - adding children:" + options.size()); for (Ability option: options) { - addAbilityNode(parent, option, depth, game); + addAbilityNode(parent, option, game); } } return true; } - protected void addAbilityNode(SimulationNode parent, Ability ability, int depth, Game game) { + protected void addAbilityNode(SimulationNode parent, Ability ability, Game game) { Game sim = game.copy(); sim.getStack().push(new StackAbility(ability, playerId)); ability.activate(sim, false); sim.applyEffects(); - SimulationNode newNode = new SimulationNode(parent, sim, depth, playerId); - logger.debug("simulating -- node #:" + SimulationNode.getCount() + " triggered ability option"); + SimulationNode newNode = new SimulationNode(parent, sim, playerId); + logger.debug(indent(newNode.getDepth()) + "simulating -- node #:" + SimulationNode.getCount() + " triggered ability option"); for (Target target: ability.getTargets()) { for (UUID targetId: target.getTargets()) { newNode.getTargets().add(targetId); @@ -277,4 +280,10 @@ public class SimulatedPlayer extends ComputerPlayer { //should never get here } + protected String indent(int num) { + char[] fill = new char[num]; + Arrays.fill(fill, ' '); + return new String(fill); + } + } diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulationNode.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulationNode.java index 002ce922ab..34e2b5ccbd 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulationNode.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/SimulationNode.java @@ -55,22 +55,25 @@ public class SimulationNode implements Serializable { protected UUID playerId; protected Combat combat; - public SimulationNode(SimulationNode parent, Game game, int depth, UUID playerId) { + public SimulationNode(SimulationNode parent, Game game, UUID playerId) { this.parent = parent; this.game = game; - this.depth = depth; + if (parent == null) + this.depth = 1; + else + this.depth = parent.getDepth() + 1; this.playerId = playerId; game.setCustomData(this); nodeCount++; } - public SimulationNode(SimulationNode parent, Game game, List abilities, int depth, UUID playerId) { - this(parent, game, depth, playerId); + public SimulationNode(SimulationNode parent, Game game, List abilities, UUID playerId) { + this(parent, game, playerId); this.abilities = abilities; } - public SimulationNode(SimulationNode parent, Game game, Ability ability, int depth, UUID playerId) { - this(parent, game, depth, playerId); + public SimulationNode(SimulationNode parent, Game game, Ability ability, UUID playerId) { + this(parent, game, playerId); this.abilities = new ArrayList(); abilities.add(ability); } diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index e72f7fc42346c748545743fe696ba40e8c47aebb..7e6aedbce48c860b850b83eeed7bb7d813d73589 100644 GIT binary patch delta 31196 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 delta 30588 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 delta 30588 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 { @Override public boolean canPay(UUID sourceId, UUID controllerId, Game game) { - return game.getPlayer(controllerId).getLife() >= amount; + return game.getPlayer(controllerId).getLife() > amount; } @Override