Dominion Strategy Forum

Please login or register.

Login with username, password and session length

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - BeXXsoR

Filter to certain boards:

Pages: [1]
1
Dominion Articles / Re: Combo: Animal Fair & Way Of The Butterfly
« on: May 04, 2020, 01:46:23 pm »
$2-actions are definitely a good synergy! I played a couple of sample games vs. Bots today. I got the 4th province at turn 11-13, which is quite good on most boards I think. I stumbled upon the same "Animal Fair + $2" hands that you described, where $2-actions really help.
One thing I noticed is that after the 4th province I sometimes had a deck without action cards anymore, that's where the strat gets stuck a bit. Maybe focussing on getting action cards early and only later trashing them into Animal Fairs does better.

Here are some sample games (Notation: C=Copper, E=Estate, P=Province, A=Action, AF=Animal Fair):

Game 1: 4th province on turn 12, one action left in deck
T1&2: Buy 2*A
T3: CCCEE - Buy A
T4: ACCCE - Trash A for AF
T5: ACCEE - Trash A for AF
T6: AF+ACCE - turn AF into P, trash A for AF
T7: AF+CCCC - turn AF into P, buy A
T8: CCEEP - do nothing
T9: AF+CEPP - turn AF into P
T10: ACCCE - Trash A for AF
T11: CCCCE - Buy A
T12: AF+CEEP - Turn AF into P

Game 2: 4th province on turn 11, two actions left in deck
T1&2: Buy 2*A
T3: ACCEE - Trash A for AF
T4: CCCCE - Buy A
T5: ACCEE - Trash A for AF
T6: CCCCE - Buy A
T7: AF+ACCC - Turn AF into P, trash A for AF
T8: ACEEE - Trash A for AF
T9: AF+AF+CCC - Turn AF into P, Buy A
T10: AF+CCCP - Turn AF into P, Buy A
T11: AF+CEEE - Turn AF into P

Game 3: 4th province on turn 11, 5th and 6th on turn 12 and 13. Early focus on getting action cards, Pouch and Tracker helped a lot (Po=Pouch, T=Tracker)
T1: Po+CCCE - Buy 2*T
T2: CCCEE - Buy A
T3: ACCEE - Trash A for AF
T4: T+Po+CCE - Play T, Buy 2*T, Topdeck 2*T
T5: TTTCC - Play T, Trash T for AF, Topdeck AF
T6: AF+TCCE - Turn AF into P, trash T for AF
T7: AF+TTCE - Turn AF into P, trash T for AF
T8: Po+CCCE - Buy A (A was $4-action this time, maybe 2*T would've been better)
T9: AF+ACEP - Turn AF into P, trash A for AF
T10: CCCCE - Buy A (A is $4-action with idea to maybe turn into Duchy later)
T11: AF+Po+TCP - Turn AF into P, trash T for AF
T12: AF+ACCE - Turn AF into P, trash A for AF
T13: AF+CEPP - Turn AF into P

2
Dominion Articles / Combo: Animal Fair & Way Of The Butterfly
« on: May 03, 2020, 01:14:22 pm »
 

This combo from Menagerie works well on all boards and leads to a superfast game. Way of The Butterfly lets you turn 7$-actions into provinces, and Animal Fair is a very easy to get $7-action card. The combo resolves around buying any actions, trashing them to get Animal Fairs and turning those into provinces.

Strategy:
There's no setup phase needed, you start from the get-go following these simple rules:
  • If you have no action in hand, you buy any action you can afford
  • If you have one action other than Animal Fair in hand, you use it in your buy phase as the price for Animal Fair
  • If you have multiple actions without Animal Fair in hand, you may play as many as you like, as long as you keep one in hand to buy Animal Fair with it
  • If you have an Animal Fair in hand, you play it as the Butterfly to turn it into a province
With this you have a sure way to very fast provinces. The only pitfall may be in your Animal Fairs colliding, so that you have to discard one unused and only see it again in your next shuffle.

Example game:
  Turn 1&2: buy two action cards
  Turn 3&4: Assume they don't collide, you can trash both of them on turn 3 resp. 4 for 2 Animal Fairs
  Turn 5: probably no action in hand, so you buy a new action
  Turn 6: maybe you draw an Animal Fair here, play it as the butterfly to turn it into a province, and buy another action
  Turn 7-xx: rinse and repeat, always turning Animal Fairs into provinces during your play phase, and using the other actions to buy new Animal Fairs in your buy phase. If you are lucky, you may get the 4th province as early as turn 9 or something.

Most of the time, this combo is completely independent of the rest of the board, cause in most cases you do not care what your actions do, you just use them to buy Animal Fairs. There are, however, some action cards that work better than others:
  • Most important: cards with on-gain- or on-trash-effects: First one that comes to mind should be Fortress - You can use one Fortress to buy Animals Fairs again and again. This works even better with sources of +Buy, as you get the Fortress back into your hand after trashing for Animal Fair, so you can use it again for a second one. Another card that works well is Lackeys, as it's on-gain-effect provides you with villagers, that can help with situation in which your Animal Fairs collide
After that, there are some actions that work well if you get to play them (i.e. only when they collide with other actions):
  • Trashers: Chapel, Steward, ...: You can play the trasher to thin your deck, hoping to draw your Action Fairs more frequently later on.
  • Cheap sources of +Buy: Pawn, Candlestick Maker, Market Square, ...:. They may set up a turn where you can get multiple Animal Fairs at once, if you happen to still have multiple actions in your hand after playing the cheap +Buy. (Travelling Fair would work super well, as it gives you +Buy without needing to play an action. But it's highly unlikely for a kingdom to include both Travelling Fair and Way of The Butterfly, let alone Animal Fair ...)
  • Action card gainers: Workshop, Ironworks, ...: These are great to play as they give you further fuel for Animal Fairs.
  • 4$-actions: If both players go for this combo, provinces are likely to be split 4-4, so it might be useful to have a $4-card that can be butterflied into a Duchy
  • Villages: These might help out with collision of Animal Fairs (If you haven't trashed them until that point)
Most of the time though, you are not even going to play your actions, as they are all gonna be trashed for Animal Fairs.

Counters:
It's tough to think of any hard counters. Trasher attacks could work if they find your Animal Fairs, but even then they'll have a hard time putting in good use (e.g. Swindler would need another &7-card on the board, which is higly unlikely; Knights or Giant only trash $3-$6 cards). Handsize-Attacks don't do much, because you only need one action in hand to get an Animal Fair, and only one Animal Fair in hand to get a province. Junkers only delay the process marginally. Deck order attacks might be the worst when they discard your Animal Fairs, delaying their turning-into-province until the next shuffle.

That's it for this combo. One last thought I want to mention is that the theme is just great: You're going to all the Animal Fairs, seeing all the big and strong Animals - but their strongest power only comes to light when you turn them into Butterflies :D :D

3
I played a couple games vs Provincial AI. Its an interesting bot that plays quite well on a lot of kingdoms, but plays quite bad on others. For example, I tried a kingdom containing chapel, and Provinvial AI never considered bying one in the first round, so i beat it with ease.

So i spent some time thinking how to optimize such an evolutionary algorithm, and i thought about the factors that good players include in their decision making, both at the beginning at the game and during play. That lead me to the idea of building an assessment algorithm by defining a set of factors that are important for different dominion strategies and weighting them according to the given kingdom. At any decision point in a game, the algorithm assesses each option and chooses the one with the highest score.

Of course, the weighting of a factor changes during a game. Trashing, for example, is more important at the beginning as at the end. On the other hand, victory points are best at the end of the game but generally bad at the beginning. So instead if defining a weight per factor, you have to define a function of the weight of each factor over the course of the game.

For this to work I need to identify the factors that determine the strength of a deck and the weighting functions of these on a given board. The second task can be done via evolutionary algorithms. For the first one, I need your help.
These are the factors that came to my mind:
  • Money Potential: How much money does the deck generate on average per turn?
  • Drawing Potential: Which percentage of the deck is drawn on average per turn?
  • Terminal-Collision Potential: What is the probability of a terminal collision on average per turn?
  • Trashing Potential: How many cards can the deck trash on average per turn? How many turns does the deck need to get rid of all "bad" cards (i.e. copper, curse, estate, ...). Maybe include Sifting Potential in this as well.
  • Buying Potential: How much extra buys does the deck generate on average per turn?
  • Attacking Potential: How many attacks can the deck play on average per turn?
  •   Differentiate this potential per types of attack: cursing, junking, discarding, ...
  •   Consider the counter potential that the board allwos (e.g. library as a counter to discarding attacks)
  • Counter Potential: How well can the deck counter the attacks that the board allows?
  • Victory Point Potential: How many victory points does the deck have in comparison to the opponents deck?
  • Quick-Ending-Potential: How many turns does the deck need to end the game?
  • Gaining Potential: How many cards can the deck gain on average per turn?
  • Flexibility Potential: I dont quite know yet how to measure this. I want to take into account cards like steward that allow to play them one way or another, whtaever fits best in the given situation
What do you think of these factors? What other factors do you consider in your games?

4
I've taken a look into Provincial AI, and it is indeed very close to what I want to implement. Its buying rules follow the same main principles ("buy the most desired card that you can afford"), and it has parameters to control how many copies of each card are desired and when to start greening. Furthermore, it even considers the buying priority of cards and allows cards to be split across the buying rule, so that some copies are bought earlier and others later in the game. Thats seems like a very well designed buying template.

You could probably go a bit crazier with the number of parameters.
After reading about Provincial AI, I agree to this. I'm going to do some tests on the runtime of Geronimoos sim on my PC and adjust the number of parameters.

I don't understand k_17.  For the simple Big Money strategy, it seems like k_17 doesn't matter, since either "follow your strategy" or "treasure" both lead to buying treasure.  For the Engine strategy, it doesn't usually make sense for the Engine strategy to suddenly veer into treasure during the greening phase.
This is for engine decks without enough virtual coins to start greening. These need an option to strengthen their buying power only after they have picked up all their desired engine components. So you would choose k_17 = "Treasure" in that case.
If I increase the number of parameters, this one will probably be replaced by a combination of new ones.

5
Hi everyone,

this is my first post on this forum, so first of all I'd like to say Hello to all of you.

I have used Geronimoos Simulator a lot lately, and its an amazing tool to test the effect of cards and strategies on a given board. What I have in mind now is to extend its functionality to not only let fixed strategies play against each other, but to figure out the optimal (or near-optimal) strategy on a given board on its own!

I want to use an Evolutionary Algorithm (EA) to achieve this. An EA is a heuristic algorithms that tries to solve optimization problems by imitating nature's behaviour of evolution.

Here's a quick roundup of how an EA works:
An EA starts with a random population of possible solutions (in our case, random strategies), and applies the following steps:
  • Reproduction: Two selected strategies are combined to create a new solution, meaning that the new solutions takes some parameters of the first and some of the second strategy.
  • Mutation: A random subset of the population is mutated, meaning that a random parameter of their strategy is altered randomly.
  • Evaluation: Each solution is assigned a fitness value that acts as a measure of its quality.
  • Selection: Out of all of the strategies of the starting population and the ones created in steps 2 and 3, a new population is formed by kicking out as many strategies as needed to get the population down to a given size. Strategies with a lower fitness value are more likely to be kicked out.
  • These steps are iterated until a given stopping condition is reached.
The crucial parts of implementing a good Dominion EA are:
a) The representation of Dominion strategies by as few parameters as possible, and
b) The definition of a quick to evaluate fitness function to measure the quality of a strategy


Here are my thoughts on these points:
a) The representation of Dominion strategies by as few parameters as possible
To define a strategy, I like to use Geronimoos buying rules. But these can get as complex as you like, so I have to make some restrictions:
  • Engines vs. BM are so different that it's hard to define a template that may generate both types of strategies. But as these are the two main strategies used in todays games, I like to focus on them first and ignore Slogs, Rushes, Combos for the time being.
  • I like to ignore Alt-VP cards for the time being, because they would make the template even more complex. I might add them later when the base EA works.
  • I like to ignore tax, debt, events, landmarks and some special cards as well for the same reason
My representation of a strategie looks like this:
Each strategy assigns values to 17 parameters k_1 to k_17, which are:
  • k_1, k_2, ... , k_10: Maximum number of copies the strategy wants to gain of board card 1, 2, ..., 10, resp. Valid values are 0, 1, 2 and no restriction
  • k_11: Same as k_1 to k_10 for the bane card if its in play
  • k_12, k_13: Same as k_1 to k_10 for Gold and Silver
  • k_14: Card that is check for start of greening. Valid choices are "Most-expensive card with k_i = no restriction" and "Gold"
  • k_15: Number of copies of k_14 to have in deck before greening starts. Valid values are 1, 2, 3, 4
  • k_16: Number of Provinces left in the supply before buying Duchys. Valid values are 4, 5, 7
  • k_17: What to go for if the greening condition is fulfilled, but the player doesnt have enough money to buy the next desired green card. Valid values are "Follow your usual strat" or "Treasure"
The Buy strategy with these parameters looks like this:
  • Buy Provinces if [Count in Deck(k_14) >= k_15]
  • Buy Duchys if [Count in Supply(Provinces) <= k_16]
  • Buy Estates if [Count in Supply(Provinces) <= 2]
  • Buy Gold and Silver respecting the values k_12 and k_13 if [Count in Deck(k_14) >= k_15 AND k_17 = "Treasure"]
  • Buy the most expensive kingdom card you can afforf respecting the values of k_1 to k_11. If you have the choice between two or more cards with the same cost, buy the one you have less copies of in your deck.
  • Buy Gold or Silver respecting the values k_12 and k_13
So for example a simple Big Money strategy without any actions would look like this:
  • k_1 to k_11 = 0
  • k_12 to k_13 = No Restrictions
  • k_14 = "Gold"
  • k_15 = 2
  • k_16 = 5
  • k_17 = "Treasure"
And Festival/Smithy without any treausre would look this way (lets say Festival is k_1 and Smithy is k_4):
  • k_1 and k_4 = No restrictions
  • k_2, k_3, k_5 to k_13 = 0
  • k_14 = "Festival"
  • k_15 = 4
  • k_16 = 7
  • k_17 = "Follow your strategy"

b) The definition of a quick to evaluate fitness function to measure the quality of a strategy
The hard part in this statement is the "quick to evaluate". By nature, strategies are there to compete against each other, so you cant measure their quality in a solitaire game, but have to let them play real (i.e. simulated) games vs. other strategies. I though about letting all current strategies play a littel tournament, but that would consume way to much CPU time. Therefore I came up with the idea of letting the user define 1 to 4 benchmark strategies that the new strategies have to play against. For example, these strategies could be Smithy BM ("How good is new strategy against BM), Witch & Militia ("How good does it stand against attacks) and Village & Smithy ("How does it perform vs. a base engine). The sum of the win rates against all benchmark strategies defines the fitness value of a strategy.


Before I start the implementation, I lilke to hear your opinions on this. How can i optimize the representation of a strategy? How can I generate a better and/or quicker fitness function?

And last but not least, I want to thank you, Geronimoo, for creating such a great simulator and making it open source for the community! I only can imagine how much time and energy you have invested in this tool!

Regards
BeXXsoR

Pages: [1]

Page created in 0.043 seconds with 19 queries.