Dominion Strategy Forum

Please login or register.

Login with username, password and session length
Pages: 1 [2]  All

Author Topic: Big Money completely revised  (Read 13360 times)

0 Members and 1 Guest are viewing this topic.

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Big Money completely revised
« Reply #25 on: February 29, 2012, 11:12:52 am »
0

The Cheese script actually has a modified PPR and it took me a while to track down what this does. It ducks the penultimate province when 1 or 2 points behind even when there are no duchies in the supply. This performs badly against my turns + PPR script but is actually an advantage against the "betterer" script! I think there are some similar triangular issues with late copper purchasing if someone wants to investigate them, however the variance of the results makes my PC too slow to run enough tests.

It must be possible to create a "resilient money" script that has extra conditions to deal with cursing, trashing, three pile rushes, and lack of competition for provinces. However since most interesting decks will beat a resilient money script anyway there might not be much advantage in substituting one losing baseline for another.
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4384
    • View Profile
    • WanderingWinder YouTube Page
Re: Big Money completely revised
« Reply #26 on: February 29, 2012, 11:15:08 am »
0

The Cheese script actually has a modified PPR and it took me a while to track down what this does. It ducks the penultimate province when 1 or 2 points behind even when there are no duchies in the supply. This performs badly against my turns + PPR script but is actually an advantage against the "betterer" script! I think there are some similar triangular issues with late copper purchasing if someone wants to investigate them, however the variance of the results makes my PC too slow to run enough tests.

It must be possible to create a "resilient money" script that has extra conditions to deal with cursing, trashing, three pile rushes, and lack of competition for provinces. However since most interesting decks will beat a resilient money script anyway there might not be much advantage in substituting one losing baseline for another.

I agree on the last point. And I'm actually getting differences of a couple hundred games out of a couple hundred thousand at this point, so who really cares?
Here is a quickish one that looks at how many cards are left in your draw deck and loses by somewhere between a quarter and a half a percent to the beterer and best turn based script posted yesterday:
Code: [Select]
<player name="Big Money Ultimate43"
 author="WanderingWinder"
 description="The optimized strategy that buys only treasure.">
 <type name="Province"/>
 <type name="SingleCard"/>
 <type name="Optimized"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="BigMoney"/>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="plus" attribute="3.0" />
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="smallerThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="18.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="9.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="14.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="14.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="19.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="9.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="9.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsLeftInDrawDeck"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="14.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
</player>

Cheese

  • Swindler
  • ***
  • Offline Offline
  • Posts: 16
  • Respect: +23
    • View Profile
Re: Big Money completely revised
« Reply #27 on: February 29, 2012, 05:49:33 pm »
0

Interesting script. I guess it still ends pretty similar. Seems like the problem with tuning pure BM vs BM is that there are so few non-obvious decisions, where one script gets an opportunity to really prove itself. So, regardless of whether you use turns, deck position, or money, you end up calibrating the thresholds to get provinces after the third reshuffle and going hard green when provinces run low. Then the only opportunity to manage your luck is for a couple turns in the midgame where the decisions are very complicated and one variable probably can't tell you what to do. And even then luck will frequently still get the better of you.

I think a resilient script would be really cool but I can't see how you would make a solid one based on any single one of the metrics available. Unfortunately, the simulator code isn't really built for multivariable approaches (i.e. take the total money in your deck divided by the cards and do the same for your opponent and add the result and...ad infinitum). Maybe at some point there will be user-scripted conditions?  :P

The Cheese script actually has a modified PPR and it took me a while to track down what this does. It ducks the penultimate province when 1 or 2 points behind even when there are no duchies in the supply. This performs badly against my turns + PPR script but is actually an advantage against the "betterer" script! I think there are some similar triangular issues with late copper purchasing if someone wants to investigate them, however the variance of the results makes my PC too slow to run enough tests.

Haha, didn't even notice that. Whoops. I don't think it is totally surprising that there is a bit rock-paper-scissors going on there, especially when we are talking about a different of small percentages. I don't think it means something significant, but rather is a byproduct of the fact that each script is so simple that it handles certain rare situations extremely poorly. If you make a move that inadvertently pushes another script into one of its degenerate situations you increase your chance to win by "confusing" it.
Logged
Pages: 1 [2]  All
 

Page created in 0.047 seconds with 21 queries.