Dominion Strategy Forum

Please login or register.

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

Author Topic: Simulation Tournament Results (Pairs)  (Read 6263 times)

0 Members and 1 Guest are viewing this topic.

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Simulation Tournament Results (Pairs)
« on: March 03, 2012, 10:52:08 am »
+6

First of all I'd like to thanks all the entrants for putting their time into this and the quality of the scripts. All the scripts entered were competitive, winning and losing at least one match each. I put all the scripts into the final match up except one, Geronimoo's jack of all trades + silk roads script. This interesting script could beat many of the other silk road decks but lost 99% of the other games. It couldn't even beat a pure money deck. Nearly all the other entries were reassuringly winning 99% of games against a pure money deck.

There was one clear favourite combination for this tournament. All the entrants submitted an ironworks/silk road script. Three entrants took the opportunity to enter a second script and these were for baron/hunting party and wharf/fool's gold. In actual fact it was very close between the scripts and I still wouldn't like to say which is the stronger combination. When I created the rules for this tournament I accidentally created a key competitive strategy that isn't available in real play. Since each script can only reference two kingdom cards they may have uncontested control of emptying these supply piles. This means they can avoid emptying the piles if it would offer advantage to the opponent and can also choose when to buy the last card if it wins the game. To resolve the "strongest two card combo" discussion we'd need to start referencing all the cards in both scripts.

Here are the results and I'll give a brief description of the winning scripts in a second post.

WanderingWinder  Ironworks/Silk Road Won 7, Lost 1, 65.9% win rate
blueblimp        Wharf/Fool's Gold   Won 7, Lost 1, 61.1% win rate
Shark_Bait       Ironworks/Silk Road Won 6, Lost 2, 61.6% win rate
WanderingWinder  Wharf/Fool's Gold   Won 4, Lost 4, 51.9% win rate
DStu             Ironworks/Silk Road Won 4, Lost 4, 46.0% win rate
Rabid            Ironworks/Silk Road Won 3, Lost 5, 45.6% win rate
Geronimoo        Ironworks/Silk Road Won 2, Lost 6, 38.9% win rate
blueblimp        Ironworks/Silk Road Won 2, Lost 6, 31.9& win rate
Rabid            Hunting Party/Baron Won 1, Lost 7, 28.0% win rate

Congratulations to WanderingWinder for winning the tournament. Congratulations also should go to blueblimp for his wharf/fool's gold script that was able to beat all the silk road scripts (thanks to not buying out the fool's gold pile) and only lost the mirror match with Wandering Winder's wharf/fool's gold script.
« Last Edit: March 03, 2012, 11:03:56 am by DG »
Logged

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #1 on: March 03, 2012, 11:00:20 am »
0


Third Place

Shark Bait took third place with his interesting ironworks/silkroad script. This had the largest win rates (up to 96%) against other ironworks scripts by letting them gain extra ironworks while his script quickly bought a decisive majority of silk roads and/or estates. This came to a shuddering halt against WanderingWinder’s script though winning only 9% of the games. WanderingWinder’s script could afford to lose out on silk roads and estates since it built up silver mid-game and bought duchies and even provinces in the endgame, each duchy scoring as much as an opponent’s hard fought silk road.

Code: [Select]
<player name="Shark_Bait: Ironworks/Silk Road"
 author="Bruce"
 description="No description available">
 <type name="UserCreated"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="Province"/>
  <start_state>
    <hand contents="4 Copper, Estate"/>
    <discard contents=""/>
    <drawdeck contents="3 Copper, 2 Estate" shuffle="true"/>
  </start_state>
   <buy name="Ironworks">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInDeck" attribute="Silver"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Estate"/>
   <buy name="Silver">
      <condition>
         <left type="countVP"/>
         <operator type="smallerOrEqualThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks"/>
   <buy name="Silver"/>
   <buy name="Copper"/>
</player>

Second Place

This is a very straightforward and understandable Wharf/Fool’s gold script. It buys fool’s gold, up to three wharves, and provinces. What set it apart was leaving one fool’s gold in the supply to avoid a fast three pile ending for the silk road decks. Since blueblimp submitted both types of script I suspect he’d seen how they worked against each other. His silk road script was able to beat Wandering Winder’s wharf/fool’s gold but none of the other silk road scripts.

There was some talk in the tournament thread about other fool’s gold combinations but wharf seems clearly the strongest. It provides an extra buy for two turns running. It draws big hands to gather the fool’s gold together. If you trash your fool’s gold for basic gold then your wharf might draw it into hand at the start of your next turn.


Code: [Select]
<player name="Fool's Gold/Wharf (blueblimp)"
 author="blueblimp"
 description="With its +buy on two turns, Wharf pairs even better with FG than Council Room does.XXXXThis version has extra defense against rush strategies like Ironworks/Gardens whileXXXXbehaving the same against other Fool's Gold strategies.">
 <type name="UserCreated"/>
 <type name="BigMoney"/>
 <type name="Combo"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="Competitive"/>
 <type name="Province"/>
  <start_state>
    <hand contents="5 Copper"/>
    <discard contents=""/>
    <drawdeck contents="2 Copper, 3 Estate" shuffle="true"/>
  </start_state>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.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="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silver"/>
</player>
Logged

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #2 on: March 03, 2012, 11:01:53 am »
0

First Place

Wandering Winder’s ironworks/silk roads script is easily the longest entry. It checks many conditions and can follow different purchasing plans in different situations. This allowed it to narrowly edge ahead of other strong silk roads decks (Rabid, Dstu), find a strong endgame against a rush deck (shark_bait), and perform strongly against the province buying decks (only losing by 0.7 – 1.5% against the blueblimp script). It often uses many clauses to apply a single idea, such as buy silk roads ahead of duchies if the opponent is competing for silk roads, so it actually isn’t as complex as it first appears.

I’ll let WanderingWander give a full description but I’ll highlight the method of controlling card gains from the ironworks. The ironworks has three choices in play and although it is difficult to simulate this choice it can be done for this restricted kingdom. The simulator condition “still in action phase = 1 (true)” only applies when the ironworks is gaining a card. Applying more conditions can then make the decision whether to gain an ironworks for +1 action (with another ironworks in hand), gain a silver for +1 coins (perhaps with 4$ to spend in hand), or gain a victory card. The same ironworks logic can be applied to other kingdoms although other action cards can often confuse the logic.

Code: [Select]
<player name="WanderingWinder 1 - Silk Road+Ironworks"
 author="WW"
 description="The ultimate Ironworks/Silk Road bot. It can do the rush thing, but it's designed to be able to play a long game playing for duchies. It has lots of conditions to check for mirror matchups and race a little faster there, or to let things stew so as to not run out of gas in a long game. Almost nothing can beat this puppy, except variations hereupon (and massive multi-multi-card combos). It's very fast. It's very strong. It's very resilient to attack.">
 <type name="UserCreated"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="Province"/>
  <start_state>
    <hand contents="4 Copper, Estate"/>
    <discard contents=""/>
    <drawdeck contents="3 Copper, 2 Estate" shuffle="true"/>
  </start_state>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Duchy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="3.0" />
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterOrEqualThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Province"/>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Duchy"/>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="3.0" />
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Silk_Road"/>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="11.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="15.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="19.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInDeck" attribute="Duchy"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Copper"/>
</player>
Logged

shark_bait

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1103
  • Shuffle iT Username: shark_bait
  • Luckyfin and Land of Hinter for iso aliases
  • Respect: +1868
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #3 on: March 03, 2012, 11:31:17 am »
0

Congrats WW.  I feel quite humbled by the decisive way that your bot beat mine.  I knew that my bot excelled at winning the rush due to it's 1 Ironworks then start greening strategy.  I didn't even consider that a non rush Ironworks/SR could beat mine.  My conditions were set assuming that an opponent who gained SR's was also rushing. 

Regarding bluelimp's bot, I was curious to see how it would hold up if my bot was allowed to get that last FG.  With this change implemented, it was a 55:43 advantage in favor of the SR rush.  When I changed my bot to have a 5/2 start and matched it against my default bot, the 4/3 start won with a 56:33 advantage.  So if you do get a 5/2 start in a game like that, I'd wager that it is advantageous to go the Wharf/FG route even though the opponent can help end the game with the FG pile.

*EDIT*

I also edited WW's bot and added a couple lines of script at the beginning to account for ending the game on the FG pile.  I got his to win at 61:37

Code: [Select]
<player name="WanderingWinder 1 - Silk Road+Ironworks /FG"
 author="WW"
 description="The ultimate Ironworks/Silk Road bot. It can do the rush thing, but it's designed to be able to play a long game playing for duchies. It has lots of conditions to check for mirror matchups and race a little faster there, or to let things stew so as to not run out of gas in a long game. Almost nothing can beat this puppy, except variations hereupon (and massive multi-multi-card combos). It's very fast. It's very strong. It's very resilient to attack.">
 <type name="Bot"/>
 <type name="TwoPlayer"/>
 <type name="UserCreated"/>
 <type name="Province"/>
  <start_state>
    <hand contents="4 Copper, Estate"/>
    <discard contents=""/>
    <drawdeck contents="3 Copper, 2 Estate" shuffle="true"/>
  </start_state>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterOrEqualThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Duchy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="3.0" />
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterOrEqualThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Province"/>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Duchy"/>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="3.0" />
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Silk_Road"/>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="11.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="15.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="19.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInDeck" attribute="Duchy"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Copper"/>
</player>

« Last Edit: March 03, 2012, 11:39:12 am by shark_bait »
Logged
Hello.  Name's Bruce.  It's all right.  I understand.  Why trust a shark, right?

Is quite curious - Who is the mystical "Celestial Chameleon"?

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #4 on: March 03, 2012, 04:02:33 pm »
0

Congratulations to WanderingWinder. Notice that he submitted the same combos as I did and won both mirrors.

Thanks DG for running the tournament. It was really interesting. I hope there'll be another sometime.

In light of this tournament and my experiments, I'm surprised Wharf/FG is not higher-rated among openings. Maybe that's because of the general strength of Wharf, whereas Mint isn't nearly as good outside of Mint/FG.

Regarding bluelimp's bot, I was curious to see how it would hold up if my bot was allowed to get that last FG.  With this change implemented, it was a 55:43 advantage in favor of the SR rush.  When I changed my bot to have a 5/2 start and matched it against my default bot, the 4/3 start won with a 56:33 advantage.  So if you do get a 5/2 start in a game like that, I'd wager that it is advantageous to go the Wharf/FG route even though the opponent can help end the game with the FG pile.

I think that to figure out which combo is really better, it'd be better to compare against WW's bot, since my Wharf/FG bot has almost no tactics, apart from not running out the FG. (The same is true of my IW/SR bot, which I submitted mainly to snipe Wharf/FG, which it did. It's no coincidence that both my bots lost every mirror.) If the IW/SR bot is allowed to pile out the FG itself, it'd also be fair for the Wharf/FG bot to deny some SRs, although I don't know how to best implement this.
« Last Edit: March 03, 2012, 04:07:57 pm by blueblimp »
Logged

Geronimoo

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1059
  • Respect: +868
    • View Profile
    • Geronimoo's Dominion Simulator
Re: Simulation Tournament Results (Pairs)
« Reply #5 on: March 03, 2012, 04:37:46 pm »
+1

 ::)
(WW won, who else)

 :o
(his Ironworks/Silk Road bot's code is about 10 times longer than mine)

 :-[
(his uber tuned bot even crushes the Jack-Silk Road bot I made as a counter to the Ironworks/SR strat)

 8)
(congrats to WW, you're a little crazy, but gg!!)
Logged

shark_bait

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1103
  • Shuffle iT Username: shark_bait
  • Luckyfin and Land of Hinter for iso aliases
  • Respect: +1868
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #6 on: March 03, 2012, 04:47:48 pm »
+1

I don't have WW's bot for wharf/FG, but I got yours much closer by implementing SR buy rules in a few places.  It only loses 51:48 against the modified WW silk road bot that ends the game on running FG if leading.  Basically, I told your bot to buy SR's over duchies, when it has $4 and 1 buy, or when FG are at 1 or 0 left in supply.

Code: [Select]
<player name="Fool's Gold/Wharf (blueblimp)/SR"
 author="blueblimp"
 description="With its +buy on two turns, Wharf pairs even better with FG than Council Room does.XXXXThis version has extra defense against rush strategies like Ironworks/Gardens whileXXXXbehaving the same against other Fool's Gold strategies.">
 <type name="UserCreated"/>
 <type name="Bot"/>
 <type name="BigMoney"/>
 <type name="Combo"/>
 <type name="Province"/>
 <type name="Competitive"/>
 <type name="TwoPlayer"/>
  <start_state>
    <hand contents="5 Copper"/>
    <discard contents=""/>
    <drawdeck contents="2 Copper, 3 Estate" shuffle="true"/>
  </start_state>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.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="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silk_Road"/>
   <buy name="Silver"/>
</player>
Logged
Hello.  Name's Bruce.  It's all right.  I understand.  Why trust a shark, right?

Is quite curious - Who is the mystical "Celestial Chameleon"?

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #7 on: March 03, 2012, 05:12:55 pm »
0

I don't have WW's bot for wharf/FG, but I got yours much closer by implementing SR buy rules in a few places.  It only loses 51:48 against the modified WW silk road bot that ends the game on running FG if leading.  Basically, I told your bot to buy SR's over duchies, when it has $4 and 1 buy, or when FG are at 1 or 0 left in supply.

Code: [Select]
<player name="Fool's Gold/Wharf (blueblimp)/SR"
 author="blueblimp"
 description="With its +buy on two turns, Wharf pairs even better with FG than Council Room does.XXXXThis version has extra defense against rush strategies like Ironworks/Gardens whileXXXXbehaving the same against other Fool's Gold strategies.">
 <type name="UserCreated"/>
 <type name="Bot"/>
 <type name="BigMoney"/>
 <type name="Combo"/>
 <type name="Province"/>
 <type name="Competitive"/>
 <type name="TwoPlayer"/>
  <start_state>
    <hand contents="5 Copper"/>
    <discard contents=""/>
    <drawdeck contents="2 Copper, 3 Estate" shuffle="true"/>
  </start_state>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.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="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silk_Road"/>
   <buy name="Silver"/>
</player>

Nice. I modified the buy conditions for Duchies and Estates to use #gains to end rather than #provinces remaining, and now it wins about 57/42.

Code: [Select]
<player name="Fool's Gold/Wharf (blueblimp)/SR"
 author="blueblimp"
 description="With its +buy on two turns, Wharf pairs even better with FG than Council Room does.XXXXThis version has extra defense against rush strategies like Ironworks/Gardens whileXXXXbehaving the same against other Fool's Gold strategies.">
 <type name="UserCreated"/>
 <type name="BigMoney"/>
 <type name="Competitive"/>
 <type name="Province"/>
 <type name="Bot"/>
 <type name="TwoPlayer"/>
 <type name="Combo"/>
  <start_state>
    <hand contents="5 Copper"/>
    <discard contents=""/>
    <drawdeck contents="2 Copper, 3 Estate" shuffle="true"/>
  </start_state>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold">
      <condition>
         <left type="countCardsInOpponentsDecks" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silk_Road"/>
   <buy name="Silver"/>
</player>
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4381
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Tournament Results (Pairs)
« Reply #8 on: March 04, 2012, 08:37:35 am »
+3

Okay, time to explain what I'm doing here. First off, I optimized sort of the straight rush strategy, playing this pretty much like you'd play ironworks/gardens, trying to three pile really quickly and more or less totally ignoring everything that costs 5 or more. I ended up with this bot:
Code: [Select]
<player name="I/SR WW"
 author="WW"
 description="No description available">
 <type name="UserCreated"/>
 <type name="TwoPlayer"/>
 <type name="Province"/>
 <type name="Bot"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterOrEqualThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Province"/>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Duchy"/>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="8.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Silk_Road"/>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Copper"/>
</player>
....which is pretty strong in its own right. Then I had the idea that going a little harder for duchies, especially if behind on the rush, made sense, which led to this:
Code: [Select]
<player name="I/SR/Duchy WW"
 author="WW"
 description="No description available">
 <type name="UserCreated"/>
 <type name="TwoPlayer"/>
 <type name="Province"/>
 <type name="Bot"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterOrEqualThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Province"/>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Estate"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInHand" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="6.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="8.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Ironworks"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Duchy"/>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Silver">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="isActionPhase"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="equalTo" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="2.0" />
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Ironworks">
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
   </buy>
   <buy name="Silk_Road"/>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="11.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="15.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="equalTo" />
         <right type="constant" attribute="19.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInDeck" attribute="Duchy"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Silk_Road"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Copper"/>
</player>
And then I started moving that duchy buy earlier and earlier because I figure I'm probably getting the silk roads eventually anyway off of ironworks, and it's harder to pull in the duchies later, in general, than it is the silk roads, because your money density goes down.
But okay, that's the process, what about the bot itself? The first few conditions are just to get the thing to end in a win instantly if possible. Then always buy a province, pretty normal stuff. Well, ok, here's where it gets interesting. There are lots of conditions fairly high to grab ironworks with ironworks if it's still the action phase and you have more ironworks in hand, because hey, those extra ironworks are nice and often important for three-piling, and otherwise the extra ironworks in your hand end up being useless. Okay, then there's the question of when to start grabbing silk roads over ironworks. I want at least a couple ironworks in my deck, and then a little more than that if my opponent isn't going to be racing me. How do I know if that's the case or not? There are a lot of conditions I threw in mostly based on the number of ironworks in my deck and the overall stack in general. If they add to ten (you can't do this in the sim, so I put in every plausible combination manually, part of why this looks so long), my opponent isn't racing me. If they don't, they probably are. Well, I should have had some similar conditions for silk road as well, probably more, but for whatever reason that's not what I went with.
What else? Well, the other important thing was to stop rushing the piles out, particularly the ironworks, and somewhat to a lesser extent the estates, if I'm behind. If that's the case, I need to slam on the brakes and build an economy to go after duchies. And definitely don't pile the game out if that leads to a loss. Well, I'm not sure how the sim handles that on gains by itself, because unless you have a very sophisticated (well, somewhat obnoxious really for a program, though it's not so hard for a human to see) set of rules there, it's going to make me misplay some stuff. Oh yeah, and ironworks a silver if that's going to grab you a duchy or province and the silk roads are out. Because grabbing an estate is a huge gamble as to whether you draw a treasure, and the silver is a guaranteed $1 (and a better deck later on); it would be better of course if . Um, I think that's about it, actually.
I tested my decks against:
Each other
Mint/FG
Tactician/Vault
Bridge/City
Hunting Party/Baron
The Golden Deck
NV/Bridge
Ironworks/Gardens
And a few other things that turned out to be pretty terrible.

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4381
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Tournament Results (Pairs)
« Reply #9 on: March 04, 2012, 09:05:11 am »
+1

My I/SR against Shark_Bait's:
Well, what to say? Interestingly enough, the bot I have that was more or less rushing the silk road beats this slightly too. I guess that still goes for duchies a bit more. Checking out some sample games, though, I'm actually not losing the race to silk roads too too often - maybe 30% of the time - and the duchies are massive. Like very rarely he gets 4 point silk roads, and if they're fewer, only 2 duchies are needed to match. Actually, if I never prefer duchy to silk road, I think I might come out even on the SR almost every time. I think 1 is just so few ironworks. Although I think the really big thing is the very very slow pace at which it's running the ironworks out in the mirror. Starting with one and then having to pick up nine more with how fast he's rushing the green - it takes a long, long, long time. Probably five is a few too many to get in the non-mirror in any case? I seem to remember 3-4 being good, if I know my opponent's strategy is fast (which, hey, in this tournament, it must be). I would guess that the real reason his bot is so good in the mirror is that it picks off the estates really early, but I'd still think you want that second ironworks.

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4381
    • View Profile
    • WanderingWinder YouTube Page
Re: Simulation Tournament Results (Pairs)
« Reply #10 on: March 04, 2012, 09:10:31 am »
+1

As for the other question, well, it's really moot isn't it? If you have 4/3, you definitely want Ironworks/Silk road. And if you have 5/2, I'm pretty sure you want wharf/fool's gold. As for the one on 4/3 against the other on 5/2... well, with a few modifications, I'm back to losing only about 47/51 to the last bot posted. Probably you can do better somewhere, but I think the big improvement might come from getting more FG earlier, in which case... well I can't test it because I never get the sim to trash FG into gold for me, because I can never get a gold in my deck to start with. Without taking advantage of that, that strategy doesn't quite work. Of course, the last bot posted isn't really a 2 card combo anymore anyway, as it goes so heavily for SR, and mostly that is in a denial attempt anyhow.
If anyone's interested, here's my Wharf/FG (which I did submit, in some respects, to protect the other - thankfully it did!):
Code: [Select]
<player name="WanderingWinder 2 - Fool's Gold+Wharf"
 author="WanderingWinder"
 description="A somewhat surprisingly much better combination than Mint+Fool's Gold, this blitzes to the provinces. Fast. It can keep up with about anything in terms of getting to the fool's golds, and in getting quick buying power, it's unparallelled.  It makes sure it's sufficiently set up before heading green, and it can keep up over the long haul, because it's got a good transition into a traditional wharf/BM deck if the fool's golds would otherwise crash too soon.">
 <type name="UserCreated"/>
 <type name="Combo"/>
 <type name="BigMoney"/>
 <type name="TwoPlayer"/>
 <type name="Province"/>
 <type name="Bot"/>
  <start_state>
    <hand contents="5 Copper"/>
    <discard contents=""/>
    <drawdeck contents="2 Copper, 3 Estate" shuffle="true"/>
  </start_state>
   <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="smallerThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="16.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="3.0" />
      </condition>
   </buy>
   <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="smallerThan" />
         <right type="countMAXOpponentVP"/>
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="16.0"/>
      </condition>
      <condition>
         <left type="countVP"/>
         <operator type="greaterThan" />
         <right type="countMAXOpponentVP"/>
         <extra_operation type="minus" attribute="6.0" />
      </condition>
      <condition>
         <left type="countAvailableMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="9.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Fool$s_Gold"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInDeck" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardsInSupply" attribute="Fool$s_Gold"/>
         <operator type="equalTo" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.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="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countBuysLeft"/>
         <operator type="equalTo" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Fool$s_Gold"/>
   <buy name="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Wharf">
      <condition>
         <left type="countCardsInDeck" attribute="Wharf"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
   </buy>
</player>

I'd be interested in seeing Geronimoo's Jack+SR bot.

shark_bait

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1103
  • Shuffle iT Username: shark_bait
  • Luckyfin and Land of Hinter for iso aliases
  • Respect: +1868
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #11 on: March 04, 2012, 10:29:37 am »
0

My I/SR against Shark_Bait's:
Well, what to say? Interestingly enough, the bot I have that was more or less rushing the silk road beats this slightly too. I guess that still goes for duchies a bit more. Checking out some sample games, though, I'm actually not losing the race to silk roads too too often - maybe 30% of the time - and the duchies are massive. Like very rarely he gets 4 point silk roads, and if they're fewer, only 2 duchies are needed to match. Actually, if I never prefer duchy to silk road, I think I might come out even on the SR almost every time. I think 1 is just so few ironworks. Although I think the really big thing is the very very slow pace at which it's running the ironworks out in the mirror. Starting with one and then having to pick up nine more with how fast he's rushing the green - it takes a long, long, long time. Probably five is a few too many to get in the non-mirror in any case? I seem to remember 3-4 being good, if I know my opponent's strategy is fast (which, hey, in this tournament, it must be). I would guess that the real reason his bot is so good in the mirror is that it picks off the estates really early, but I'd still think you want that second ironworks.


I would guess that my bot excelled in most of the mirrors because the other players went with me on a fast rush.  Possibly in getting a few too many Ironworks and/or helping with the estates.  I think as WW showed, my bot falls flat on it's face against a bot that only cares about picking up some of the SR's.  My bot can't empty the piles fast enough by itself.  It needs help and as said earlier, I think mine did so well because other bots helped enough with the 3-pile for my blitz to work.
Logged
Hello.  Name's Bruce.  It's all right.  I understand.  Why trust a shark, right?

Is quite curious - Who is the mystical "Celestial Chameleon"?

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #12 on: March 04, 2012, 11:06:57 am »
0

Quote
There are a lot of conditions I threw in mostly based on the number of ironworks in my deck and the overall stack in general. If they add to ten (you can't do this in the sim, so I put in every plausible combination manually, part of why this looks so long), my opponent isn't racing me.

I think that countCardsInOpponentsDecks will be sufficient in most cases, provided the opponent isn't trashing your key cards. Trashing is a particularly hard simulator decision so I'm not surprised it didn't feature in this contest. If anyone wants to play around with bishop/hunting party they might find some interesting but very difficult simulation coding and see why I prohibited the bishop (and other cards).

Here is the Geronimoo script to compete against ironworks/silk roads. I suspect that an ironworks/island or ironworks/great hall script might be equally competitive. They might even beat pure money! The wharf/fool's gold combination seems comparatively bulletproof.

Code: [Select]
<player name="Geronimoo: Jack/Silk Road"
 author="Geronimoo"
 description="Jack on the Road! (Estate is on the bottom of the buy rules to prevent Jack from trashing them)">
 <type name="UserCreated"/>
 <type name="Province"/>
 <type name="Competitive"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="Combo"/>
  <start_state>
    <hand contents="4 Copper, Estate"/>
    <discard contents=""/>
    <drawdeck contents="3 Copper, 2 Estate" shuffle="true"/>
  </start_state>
   <buy name="Province"/>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInDeck" attribute="Jack_of_all_Trades"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Jack_of_all_Trades">
      <condition>
         <left type="countCardsInDeck" attribute="Jack_of_all_Trades"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silver"/>
   <buy name="Copper"/>
   <buy name="Estate"/>
</player>
« Last Edit: March 04, 2012, 11:09:36 am by DG »
Logged

blueblimp

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2849
  • Respect: +1559
    • View Profile
Re: Simulation Tournament Results (Pairs)
« Reply #13 on: March 04, 2012, 04:57:27 pm »
0

Good posts.

Trashing is a particularly hard simulator decision so I'm not surprised it didn't feature in this contest. If anyone wants to play around with bishop/hunting party they might find some interesting but very difficult simulation coding and see why I prohibited the bishop (and other cards).

I assumed you prohibited Bishop/Vault/etc. because they involve opponent interaction (which is really hard to plan for if you don't know your opponent!). W.r.t. simulator play rules, maybe it'd be worth doing a tournament with Dominate, which has worse default decisions but allows everything to be overridden by bots.
Logged
Pages: [1]
 

Page created in 0.131 seconds with 21 queries.