Dominion Strategy Forum

Please login or register.

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

Author Topic: Yet another simulation challenge: Oasis in rush strategies  (Read 3986 times)

0 Members and 1 Guest are viewing this topic.

Geronimoo

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1059
  • Respect: +868
    • View Profile
    • Geronimoo's Dominion Simulator
Yet another simulation challenge: Oasis in rush strategies
« on: February 29, 2012, 05:23:57 am »
0

Pretty simple challenge: create a bot that goes for a rush strategy and buys Oasis over Silver (once or even occasionaly is enough) and beats its counterpart that never buys Oasis. No other action cards are allowed! Rush strategy = Silk Road, IGG, Duke....

This was inspired by this thread
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #1 on: February 29, 2012, 11:25:16 am »
0

No other action cards? Not going to be much of a rush....

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #2 on: February 29, 2012, 11:34:42 am »
0

You can improve a basic hoard strategy (default in the simulator say) by buying oasis after turn 6. I'm guessing that every green card strategy will get improved similarly by hoard+oasis.
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #3 on: February 29, 2012, 12:49:31 pm »
0

Well, I wouldn't call it a rush, but here's a Silk Road strat:
Code: [Select]
<player name="Silk Road"
 author="Computer"
 description="This bot has been generated by the computer without any optimization. XXXXIt just buys a single Action card and money">
 <type name="Province"/>
 <type name="SingleCard"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="BigMoney"/>
 <type name="Generated"/>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="18.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="11.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="8.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="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <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="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Copper">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
</player>
And here's the first thing I did trying to add oasis:
Code: [Select]
<player name="Silk Road/oasis"
 author="Computer"
 description="This bot has been generated by the computer without any optimization. XXXXIt just buys a single Action card and money">
 <type name="Province"/>
 <type name="SingleCard"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="BigMoney"/>
 <type name="Generated"/>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="18.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="11.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="8.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="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <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="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="6.0"/>
      </condition>
   </buy>
   <buy name="Oasis">
      <condition>
         <left type="countTurns"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="4.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="countAllCardsInDeck"/>
         <extra_operation type="divideBy" attribute="5.0" />
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Copper">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
</player>
Oasis wins by a little, I'm sure it's possible to do better.

Davio

  • 2012 Dutch Champion
  • *
  • Offline Offline
  • Posts: 4787
  • Respect: +3413
    • View Profile
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #4 on: February 29, 2012, 01:30:52 pm »
0

I think it's only fair that you try to improve the Silver bot (if that's possible) as well as the Oasis bot. No use "proving" Oasis is better if your Silver bot is deprecated or underperforming.  ;D
Logged

BSG: Cagprezimal Adama
Mage Knight: Arythea

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #5 on: February 29, 2012, 01:46:11 pm »
0

I think it's only fair that you try to improve the Silver bot (if that's possible) as well as the Oasis bot. No use "proving" Oasis is better if your Silver bot is deprecated or underperforming.  ;D
I actually spent a lot more time on the silver bot than the oasis one. I set up the Silk Road to be the generic BMU+SR bot, took about half an hour to work on it and improve it. Then I spent about 30 seconds on the oasis bot, throwing in the first oasis condition I could think of, saw it was better, and called it a day.

Geronimoo

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1059
  • Respect: +868
    • View Profile
    • Geronimoo's Dominion Simulator
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #6 on: February 29, 2012, 04:19:14 pm »
0

WW, you're going to hate this little bot (easily beats your Oasis/Silk Road):
Code: [Select]
<player name="Silk Road rush"
 author="Geronimoo"
 description="Simplest Silk Road rush possible (only money as support)">
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="SingleCard"/>
 <type name="Province"/>
 <type name="TwoPlayer"/>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="20.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="20.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="Gold"/>
   <buy name="Silver"/>
   <buy name="Copper">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
</player>
Logged

A_S00

  • Spy
  • ****
  • Offline Offline
  • Posts: 84
  • Respect: +41
    • View Profile
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #7 on: February 29, 2012, 05:01:50 pm »
0

Not hardly optimized, but my version of a Duke bot that buys 2 Hoards before going for full green does better if it starts buying Oasis over Silver (wins 51-44) once it has $12 in deck.  Whether you buy 2 Hoards or 1 doesn't seem to matter for winning overall, but Oasis makes more of a difference if you buy 2.

Bots (haven't been modified, so they're mostly just the Duke bot):

Code: [Select]
<player name="Duke/Hoard/Oasis"
 author="A_S00"
 description="Duke/Duchy wants Hoard and Oasis.">
 <type name="Optimized"/>
 <type name="Province"/>
 <type name="UserCreated"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="BigMoney"/>
 <type name="SingleCard"/>
   <buy name="Hoard">
      <condition>
         <left type="countCardsInDeck" attribute="Hoard"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterOrEqualThan" />
         <right type="constant" attribute="14.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Duchy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Duchy"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Duke">
      <condition>
         <left type="countCardsInSupply" attribute="Duchy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Duke"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Oasis">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterOrEqualThan" />
         <right type="constant" attribute="12.0"/>
      </condition>
   </buy>
   <buy name="Silver"/>
   <buy name="Copper"/>
</player>

Code: [Select]
<player name="Duke/Hoard"
 author="A_S00"
 description="Duke/Duchy wants Hoard.">
 <type name="Province"/>
 <type name="Optimized"/>
 <type name="UserCreated"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="BigMoney"/>
 <type name="SingleCard"/>
   <buy name="Hoard">
      <condition>
         <left type="countCardsInDeck" attribute="Hoard"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterOrEqualThan" />
         <right type="constant" attribute="14.0"/>
      </condition>
   </buy>
   <buy name="Province">
      <condition>
         <left type="countCardsInSupply" attribute="Duchy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Duchy"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="7.0"/>
      </condition>
   </buy>
   <buy name="Duke">
      <condition>
         <left type="countCardsInSupply" attribute="Duchy"/>
         <operator type="equalTo" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
   <buy name="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Duke"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silver"/>
   <buy name="Copper"/>
</player>
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #8 on: February 29, 2012, 10:23:36 pm »
0

WW, you're going to hate this little bot (easily beats your Oasis/Silk Road):
Code: [Select]
<player name="Silk Road rush"
 author="Geronimoo"
 description="Simplest Silk Road rush possible (only money as support)">
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="SingleCard"/>
 <type name="Province"/>
 <type name="TwoPlayer"/>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="20.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="20.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="Gold"/>
   <buy name="Silver"/>
   <buy name="Copper">
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="0.0"/>
      </condition>
   </buy>
</player>
I can do better than that:

Code: [Select]
<player name="Silk Road2"
 author="Computer"
 description="This bot has been generated by the computer without any optimization. XXXXIt just buys a single Action card and money">
 <type name="Province"/>
 <type name="SingleCard"/>
 <type name="TwoPlayer"/>
 <type name="Bot"/>
 <type name="UserCreated"/>
 <type name="BigMoney"/>
 <type name="Generated"/>
   <buy name="Province">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="18.0"/>
      </condition>
   </buy>
   <buy name="Duchy">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="2.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="11.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="25.0"/>
      </condition>
   </buy>
   <buy name="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="8.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="Silk_Road">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerThan" />
         <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="Estate">
      <condition>
         <left type="countCardsInSupply" attribute="Province"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
      <condition>
         <left type="countCardsInDeck" attribute="Silk_Road"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="1.0"/>
      </condition>
   </buy>
   <buy name="Gold"/>
   <buy name="Silk_Road">
      <condition>
         <left type="getTotalMoney"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="18.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="Silver"/>
   <buy name="Estate">
      <condition>
         <left type="gainsNeededToEndGame"/>
         <operator type="smallerOrEqualThan" />
         <right type="constant" attribute="5.0"/>
      </condition>
   </buy>
   <buy name="Copper">
      <condition>
         <left type="countCardTypeInDeck" attribute="Victory"/>
         <operator type="greaterThan" />
         <right type="constant" attribute="3.0"/>
      </condition>
   </buy>
</player>
Interestingly enough, my two bots and yours perform pretty differently between the three of them against different opponents. Case in point: Duke. My first one crushes duke handily, yours beats it slightly, my new one gets destroyed by it. Very very weird.

Geronimoo

  • Saboteur
  • *****
  • Offline Offline
  • Posts: 1059
  • Respect: +868
    • View Profile
    • Geronimoo's Dominion Simulator
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #9 on: March 01, 2012, 01:54:37 am »
0

@WW: but can you add Oasis to your new bot and not make it worse?
Logged

WanderingWinder

  • Adventurer
  • ******
  • Offline Offline
  • Posts: 5275
  • ...doesn't really matter to me
  • Respect: +4386
    • View Profile
    • WanderingWinder YouTube Page
Re: Yet another simulation challenge: Oasis in rush strategies
« Reply #10 on: March 01, 2012, 09:15:51 am »
0

@WW: but can you add Oasis to your new bot and not make it worse?
Sure, but not make it meaningfully better either. I got it somewhere where you could tell it was making a difference really slightly on the graphs, but coming out about tied. And I was bending over backwards to do it. I dunno, I can probably find someway to eek out half a percentage point. But I think you're point is pretty clear.
On the other hand, I think that you've got a great example of where oasis can be good in the hoard decks. Any deck where hoard features is going to be liking oasis, because you have massive massive variance.

RaVeNLoRD

  • Herbalist
  • **
  • Offline Offline
  • Posts: 7
  • Respect: 0
    • View Profile
Tunnel
« Reply #11 on: March 05, 2012, 10:22:27 am »
0

Oasis combos really well with Tunnel and both work with Silk road or Garden rush strategy.
This also satisfy no additional action played.
Someone should try and make a bot out of it.
Logged
Pages: [1]
 

Page created in 0.052 seconds with 20 queries.