From 8287364f776b860f1b3210f3d8b70f6258b850d1 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Thu, 24 Mar 2011 00:09:07 -0400 Subject: [PATCH] more optimizations --- .../src/mage/player/ai/ComputerPlayer2.java | 14 +++- .../src/mage/player/ai/ComputerPlayer3.java | 2 + .../mage/player/ai/GameStateEvaluator.java | 4 +- Mage.Server/plugins/mage-player-ai.jar | Bin 42460 -> 43253 bytes Mage.Server/plugins/mage-player-aiminimax.jar | Bin 39390 -> 40033 bytes .../condition/common/Metalcraft.java | 2 +- .../costs/common/MetalcraftCost.java | 2 +- .../abilities/keyword/LandwalkAbility.java | 2 +- Mage/src/mage/game/Game.java | 4 +- Mage/src/mage/game/GameImpl.java | 43 ++++++---- Mage/src/mage/game/permanent/Battlefield.java | 75 ++++++++++++++++++ Mage/src/mage/target/TargetPermanent.java | 28 +++++-- 12 files changed, 146 insertions(+), 30 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 a72cc2aba8..60fd7d0be7 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 @@ -40,11 +40,9 @@ 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; -import mage.Mana; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.common.PassAbility; @@ -55,7 +53,6 @@ import mage.abilities.costs.mana.VariableManaCost; import mage.abilities.effects.Effect; import mage.abilities.effects.SearchEffect; import mage.cards.Cards; -import mage.cards.decks.Deck; import mage.choices.Choice; import mage.filter.FilterAbility; import mage.game.Game; @@ -98,6 +95,8 @@ public class ComputerPlayer2 extends ComputerPlayer implements protected int maxDepth; protected int maxNodes; + protected int nodeCount = 0; + protected long thinkTime = 0; protected LinkedList actions = new LinkedList(); protected List targets = new ArrayList(); protected List choices = new ArrayList(); @@ -190,6 +189,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements addActionsTimed(new FilterAbility()); else addActions(root, new FilterAbility(), Integer.MIN_VALUE, Integer.MAX_VALUE); + logger.info(name + " simulated " + nodeCount + " nodes in " + thinkTime/1000000000.0 + "s - average " + nodeCount/(thinkTime/1000000000.0) + " nodes/s"); if (root.children.size() > 0) { root = root.children.get(0); actions = new LinkedList(root.abilities); @@ -319,9 +319,15 @@ public class ComputerPlayer2 extends ComputerPlayer implements return addActions(root, filter, Integer.MIN_VALUE, Integer.MAX_VALUE); } }); + long startTime = System.nanoTime(); pool.execute(task); try { task.get(Config.maxThinkSeconds, TimeUnit.SECONDS); + long endTime = System.nanoTime(); + long duration = endTime - startTime; + logger.info("Calculated " + root.nodeCount + " nodes in " + duration/1000000000.0 + "s"); + nodeCount += root.nodeCount; + thinkTime += duration; } catch (TimeoutException e) { logger.debug("simulating - timed out"); task.cancel(true); @@ -331,6 +337,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements } catch (InterruptedException ex) { logger.fatal("can't sleep"); } + logger.info("Calculated " + root.nodeCount + " nodes in 30s"); } catch (ExecutionException e) { logger.fatal("Simulation error", e); task.cancel(true); @@ -712,6 +719,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements newPlayer.restore(origPlayer); sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer); } + sim.setSimulation(true); return sim; } 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 cb8c57f9f5..980c5ddf1e 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 @@ -164,6 +164,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { addActionsTimed(new FilterAbility()); else addActions(root, new FilterAbility(), Integer.MIN_VALUE, Integer.MAX_VALUE); + logger.info(name + " simulated " + nodeCount + " nodes in " + thinkTime/1000000000.0 + "s - average " + nodeCount/(thinkTime/1000000000.0) + " nodes/s"); if (root.children.size() > 0) { root = root.children.get(0); actions = new LinkedList(root.abilities); @@ -187,6 +188,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { addActionsTimed(new FilterAbility()); else addActions(root, new FilterAbility(), Integer.MIN_VALUE, Integer.MAX_VALUE); + logger.info(name + " simulated " + nodeCount + " nodes in " + thinkTime/1000000000.0 + "s - average " + nodeCount/(thinkTime/1000000000.0) + " nodes/s"); if (root.children.size() > 0) { root = root.children.get(0); actions = new LinkedList(root.abilities); 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 59aa730248..095afd46ad 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 @@ -38,6 +38,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.abilities.mana.ManaAbility; import mage.counters.BoostCounter; import mage.counters.Counter; +import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -76,6 +77,7 @@ public class GameStateEvaluator { return WIN_SCORE; } int lifeScore = (player.getLife() - opponent.getLife()) * LIFE_FACTOR; + int poisonScore = (opponent.getCounters().getCount(CounterType.POISON) - player.getCounters().getCount(CounterType.POISON)) * LIFE_FACTOR * 2; int permanentScore = 0; for (Permanent permanent: game.getBattlefield().getAllActivePermanents(playerId)) { permanentScore += evaluatePermanent(permanent, game, ignoreTapped); @@ -89,7 +91,7 @@ public class GameStateEvaluator { handScore = player.getHand().size() - opponent.getHand().size(); handScore *= HAND_FACTOR; - int score = lifeScore + permanentScore + handScore; + int score = lifeScore + poisonScore + permanentScore + handScore; if (logger.isDebugEnabled()) logger.debug("game state for player " + player.getName() + " evaluated to- lifeScore:" + lifeScore + " permanentScore:" + permanentScore + " handScore:" + handScore + " total:" + score); return score; diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar index bada7a347e858436151d5f6669d2dd40421c7205..9d46b2ab6e89d9e9983420adf7c0f5f2f42ea1ff 100644 GIT binary patch delta 23350 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 B$`Swo delta 22561 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 b51v>;jp+}sD*oGf3~*ElDIPfMZ`uC=MS?7l diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index df53d832ba17bdcbd730edafdf36e466df67f355..a654a2533d51ad5c4220f7e6fe17b581034c8eed 100644 GIT binary patch delta 24320 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 delta 23692 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

5kd@HY=41NwNw@gsVMF#wR@GP+$w$?DArzg% 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 3; + return game.getBattlefield().contains(filter, source.getControllerId(), 3); } } diff --git a/Mage/src/mage/abilities/costs/common/MetalcraftCost.java b/Mage/src/mage/abilities/costs/common/MetalcraftCost.java index bec7ab86e0..a9a6687c5e 100644 --- a/Mage/src/mage/abilities/costs/common/MetalcraftCost.java +++ b/Mage/src/mage/abilities/costs/common/MetalcraftCost.java @@ -61,7 +61,7 @@ public class MetalcraftCost extends CostImpl { @Override public boolean canPay(UUID sourceId, UUID controllerId, Game game) { - return game.getBattlefield().countAll(filter, controllerId) >= 3; + return game.getBattlefield().contains(filter, controllerId, 3); } @Override diff --git a/Mage/src/mage/abilities/keyword/LandwalkAbility.java b/Mage/src/mage/abilities/keyword/LandwalkAbility.java index 449244c32f..d49b27ce89 100644 --- a/Mage/src/mage/abilities/keyword/LandwalkAbility.java +++ b/Mage/src/mage/abilities/keyword/LandwalkAbility.java @@ -73,7 +73,7 @@ class LandwalkEffect extends RestrictionEffect { @Override public boolean canBlock(Permanent attacker, Permanent blocker, Game game) { - return game.getBattlefield().countAll(filter, blocker.getControllerId()) == 0; + return !game.getBattlefield().contains(filter, blocker.getControllerId(), 1); } @Override diff --git a/Mage/src/mage/game/Game.java b/Mage/src/mage/game/Game.java index b960cea9bb..b9fe2123ef 100644 --- a/Mage/src/mage/game/Game.java +++ b/Mage/src/mage/game/Game.java @@ -107,6 +107,8 @@ public interface Game extends MageItem, Serializable { public GameStates getGameStates(); public void loadGameStates(GameStates states); public Game copy(); + public boolean isSimulation(); + public void setSimulation(boolean simulation); public Card getLastKnownInformation(UUID objectId, Zone zone); public void rememberLKI(UUID objectId, Zone zone, Card card); public void resetLKI(); @@ -119,7 +121,6 @@ public interface Game extends MageItem, Serializable { public void fireSelectTargetEvent(UUID playerId, String message, Set targets, boolean required, Map options); public void fireSelectTargetEvent(UUID playerId, String message, Cards cards, boolean required); public void fireSelectTargetEvent(UUID playerId, String message, TriggeredAbilities abilities, boolean required); -// public void fireRevealCardsEvent(String message, Cards cards); public void fireSelectEvent(UUID playerId, String message); public void fireLookAtCardsEvent(UUID playerId, String message, Cards cards); public void firePriorityEvent(UUID playerId); @@ -136,7 +137,6 @@ public interface Game extends MageItem, Serializable { public boolean replaceEvent(GameEvent event); //game play methods - //public void init(UUID choosingPlayerId); public void start(UUID choosingPlayerId); public void start(UUID choosingPlayerId, GameOptions options); public void end(); diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index dd6e8b0ef0..f8bed3cbc3 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -79,6 +79,7 @@ public abstract class GameImpl> implements Game, Serializa private transient Stack savedStates = new Stack(); private transient Object customData; + protected boolean simulation = false; protected final UUID id; protected boolean ready; @@ -113,10 +114,18 @@ public abstract class GameImpl> implements Game, Serializa this.range = game.range; this.attackOption = game.attackOption; this.state = game.state.copy(); -// for (Map.Entry entry: game.gameCards.entrySet()) { -// this.gameCards.put(entry.getKey(), entry.getValue().copy()); -// } this.gameCards = game.gameCards; + this.simulation = game.simulation; + } + + @Override + public boolean isSimulation() { + return simulation; + } + + @Override + public void setSimulation(boolean simulation) { + this.simulation = simulation; } @Override @@ -273,21 +282,27 @@ public abstract class GameImpl> implements Game, Serializa @Override public void bookmarkState() { - saveState(); - logger.fine("Bookmarking state: " + gameStates.getSize()); - savedStates.push(gameStates.getSize() - 1); + if (!simulation) { + saveState(); + logger.fine("Bookmarking state: " + gameStates.getSize()); + savedStates.push(gameStates.getSize() - 1); + } } @Override public void restoreState() { - GameState restore = gameStates.rollback(savedStates.pop()); - if (restore != null) - state.restore(restore); + if (!simulation) { + GameState restore = gameStates.rollback(savedStates.pop()); + if (restore != null) + state.restore(restore); + } } @Override public void removeLastBookmark() { - savedStates.pop(); + if (!simulation) { + savedStates.pop(); + } } @Override @@ -622,13 +637,13 @@ public abstract class GameImpl> implements Game, Serializa } } //20091005 - 704.5j, 801.14 - if (getBattlefield().countAll(filterPlaneswalker) > 1) { //don't bother checking if less than 2 planeswalkers in play + if (getBattlefield().contains(filterPlaneswalker, 2)) { //don't bother checking if less than 2 planeswalkers in play for (Permanent planeswalker: getBattlefield().getAllActivePermanents(CardType.PLANESWALKER)) { for (String planeswalkertype: planeswalker.getSubtype()) { filterPlaneswalker.getSubtype().clear(); filterPlaneswalker.getSubtype().add(planeswalkertype); filterPlaneswalker.setScopeSubtype(ComparisonScope.Any); - if (getBattlefield().count(filterPlaneswalker, planeswalker.getControllerId(), this) > 1) { + if (getBattlefield().contains(filterPlaneswalker, planeswalker.getControllerId(), this, 2)) { for (Permanent perm: getBattlefield().getActivePermanents(filterPlaneswalker, planeswalker.getControllerId(), this)) { perm.moveToZone(Zone.GRAVEYARD, null, this, false); } @@ -660,11 +675,11 @@ public abstract class GameImpl> implements Game, Serializa } } //20091005 - 704.5k, 801.12 - if (getBattlefield().countAll(filterLegendary) > 1) { //don't bother checking if less than 2 legends in play + if (getBattlefield().contains(filterLegendary, 2)) { //don't bother checking if less than 2 legends in play for (Permanent legend: getBattlefield().getAllActivePermanents(filterLegendary)) { filterLegendName.getName().clear(); filterLegendName.getName().add(legend.getName()); - if (getBattlefield().count(filterLegendName, legend.getControllerId(), this) > 1) { + if (getBattlefield().contains(filterLegendName, legend.getControllerId(), this, 2)) { for (Permanent dupLegend: getBattlefield().getActivePermanents(filterLegendName, legend.getControllerId(), this)) { dupLegend.moveToZone(Zone.GRAVEYARD, null, this, false); } diff --git a/Mage/src/mage/game/permanent/Battlefield.java b/Mage/src/mage/game/permanent/Battlefield.java index 22e76ba0c1..96da8a41fe 100644 --- a/Mage/src/mage/game/permanent/Battlefield.java +++ b/Mage/src/mage/game/permanent/Battlefield.java @@ -138,6 +138,81 @@ public class Battlefield implements Serializable { return count; } + /** + * Returns true if the battlefield contains at least 1 {@link Permanent} + * that matches the filter. + * This method ignores the range of influence. + * + * @param filter + * @return boolean + */ + public boolean contains(FilterPermanent filter, int num) { + int count = 0; + for (Permanent permanent: field.values()) { + if (filter.match(permanent)) { + count++; + if (num == count) + return true; + } + } + return false; + } + + /** + * Returns true if the battlefield contains at least 1 {@link Permanent} + * that matches the filter and is controlled by controllerId. + * This method ignores the range of influence. + * + * @param filter + * @param controllerId + * @return boolean + */ + public boolean contains(FilterPermanent filter, UUID controllerId, int num) { + int count = 0; + for (Permanent permanent: field.values()) { + if (permanent.getControllerId().equals(controllerId) && filter.match(permanent)) { + count++; + if (num == count) + return true; + } + } + return false; + } + + /** + * Returns true if the battlefield contains at least 1 {@link Permanent} + * that is within the range of influence of the specified player id + * and that matches the supplied filter. + * + * @param filter + * @param sourcePlayerId + * @param game + * @return boolean + */ + public boolean contains(FilterPermanent filter, UUID sourcePlayerId, Game game, int num) { + int count = 0; + if (game.getRangeOfInfluence() == RangeOfInfluence.ALL) { + for (Permanent permanent: field.values()) { + if (filter.match(permanent, sourcePlayerId, game)) { + count++; + if (num == count) + return true; + } + } + } + else { + Set range = game.getPlayer(sourcePlayerId).getInRange(); + for (Permanent permanent: field.values()) { + if (range.contains(permanent.getControllerId()) && filter.match(permanent, sourcePlayerId, game)) { + count++; + if (num == count) + return true; + } + } + } + return false; + } + public void addPermanent(Permanent permanent) { field.put(permanent.getId(), permanent); } diff --git a/Mage/src/mage/target/TargetPermanent.java b/Mage/src/mage/target/TargetPermanent.java index f5963cf01f..a5b2ec24ae 100644 --- a/Mage/src/mage/target/TargetPermanent.java +++ b/Mage/src/mage/target/TargetPermanent.java @@ -105,12 +105,15 @@ public class TargetPermanent> extends TargetObject< */ @Override public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) { + int remainingTargets = this.minNumberOfTargets - targets.size(); + if (remainingTargets == 0) + return true; int count = 0; MageObject targetSource = game.getObject(sourceId); for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { - if (permanent.canBeTargetedBy(targetSource)) { + if (!targets.containsKey(permanent.getId()) && permanent.canBeTargetedBy(targetSource)) { count++; - if (count >= this.minNumberOfTargets) + if (count >= remainingTargets) return true; } } @@ -127,9 +130,18 @@ public class TargetPermanent> extends TargetObject< */ @Override public boolean canChoose(UUID sourceControllerId, Game game) { - int possibleTargets = game.getBattlefield().count(filter, sourceControllerId, game); - return possibleTargets >= this.minNumberOfTargets && - this.getTargets().size() < possibleTargets; + int remainingTargets = this.minNumberOfTargets - targets.size(); + if (remainingTargets == 0) + return true; + int count = 0; + for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { + if (!targets.containsKey(permanent.getId())) { + count++; + if (count >= remainingTargets) + return true; + } + } + return false; } @Override @@ -137,7 +149,7 @@ public class TargetPermanent> extends TargetObject< Set possibleTargets = new HashSet(); MageObject targetSource = game.getObject(sourceId); for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { - if (permanent.canBeTargetedBy(targetSource)) { + if (!targets.containsKey(permanent.getId()) && permanent.canBeTargetedBy(targetSource)) { possibleTargets.add(permanent.getId()); } } @@ -148,7 +160,9 @@ public class TargetPermanent> extends TargetObject< public Set possibleTargets(UUID sourceControllerId, Game game) { Set possibleTargets = new HashSet(); for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { - possibleTargets.add(permanent.getId()); + if (!targets.containsKey(permanent.getId())) { + possibleTargets.add(permanent.getId()); + } } return possibleTargets; }