GeekGold Bonus for All Supporters at year's end: 1000!
8,553 Supporters
$15 min for supporter badge & GeekGold bonus
19 Days Left

Support:

Recommend
21 
 Thumb up
 Hide
46 Posts
1 , 2  Next »   | 

Dominion» Forums » General

Subject: Towards a Dominion Evolver rss

Your Tags: Add tags
Popular Tags: [View All]
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
A few years ago, in a fit of mild obsession (and a quiet patch at work), I wrote a simulation of Puerto Rico in MS Excel intended to use genetic algorithm-type thingies to evolve reasonable players of the game from a random start. This worked surprisingly well, on the whole, and the Evolver is still being downloaded from the Geek from time to time.

I've now become similarly obsessed with Dominion and have thus just finished (and uploaded to the files section as Diminion Evolver 0.5 or something) an attempt to do the same for this game. (The original set only).

I've put it up here in case anybody else is interested in the project and/or helping evolve players. I have no idea if this will work - it's basically down to whether or not I've built enough scope into the potential "genes" for it to be possible for good players to evolve.

If anybody does want to have a go, you'll need Excel, and to have Macros enabled.

First thing to do is create some random players. To do this, click Run, enter 3 and then pick a number of players. The more there are (maximum to 30,000 or so) the more variation we'll have and - in theory at least - the more chance there is of the evolution working. But each generation will also need many more games to get a fair result, so this is a trade-off. I'm going to start with 1000 players to see how things work. (I can scale this up later with a bit of manual jiggery-pokery if I want to).

You might also want, for good record keeping, to change cell K16 in the "Players" worksheet to 0. This is the count of generations evolved so far.

The spreadsheet is presently set up to evolve players for a 2-player game (I think Attack cards will get more highly valued in games with more players). To change this, change the number in cell C3 on the worksheet "Setup". 2, 3 or 4 should work fine.

Then click Run again and enter 2 to evolve these players. You'll need to pick first a number of generations to run through (there's no point in doing too many unless you're going to leave a machine to run this for hours / days) and a number of games in each generation. I'm going to try 10,000 games per generation (so that each player gets an average of 20 games).

Then wait. I'm using Excel 2007, and this seems to be much slower than Excel 2000 or 2003 for some reason. On my laptop, 10,000 games takes 2 to 3 hours (this should speed up significantly when/if the players get better).

The spreadsheet saves itself automatically after each generation to protect against system crashes.

What happens in each generation is:
- A number of games is run setting random players against each other. The number of games played and wins is scored to get a Win percentage for each player
- The players are now sorted from best to worst
- The best 16% or so of players each have 4 children. These children may each contain random mutations. The next 16% or so of players live, but without children. Everybody else dies.

I've put some notes on how the "genes" are meant to work in the "Player DNA notes" worksheet. Broadly speaking, these give each player an "ideal" deck composition based on a mix of card benefits (extra Actions etc) and specific card types (e.g. Chapel). There are also genes controlling which order to play Action cards in, and which order to discard cards in (both voluntarily and of necessity).

If you do play with this, please let me know how you get on.

It is, incidentally, possibly to use the Evolver to play a game of Dominion. This was necessary to check I've actually coded the game engine correctly. (I _think_ I have). But it is NOT even slightly pretty and never will be. It also doesn't fully explain what Computer players do in their turn. If you do want to play a game you'll first need to create some random players as above and then change one (or more) of the "C"s in cells B41 to B44 in "Setup" to "H".

Any comments, suggestions and bug-spots would be appreciated.

Tony




15 
 Thumb up
2.05
 tip
 Hide
  • [+] Dice rolls
Drew Spencer
United States
Tucson
Arizona
flag msg tools
badge
Avatar
mbmbmbmbmb
That sounds awesome. Will it work in the OpenOffice equivalent of Excel?
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
No, 'fraid not. Open Office doesn't fully implement VBA (and I can't use it at work).
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
gf1024 wrote:
I really, really don't want to look stupid, but what is this again, what does it do?


In theory, it starts with (say) 1,000 Dominion players who play the game completely randomly according to their "genetic code". Over the course of many generations the better players will have children and the worse players will die. Children may be slightly mutated versions of their parents. As a result, each new generation of players should be very slightly better at playing the game as the last. Eventually they might even be quite good.

Of course, the file upload doesn't seem to have gone through yet.

Tony

 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Andrew Snyder
United States
Philadelphia
Pennsylvania
flag msg tools
badge
Shouldn't you be playing a game with me instead of wasting time on the Internet?
Avatar
mbmbmbmbmb
gf1024 wrote:
I really, really don't want to look stupid, but what is this again, what does it do?

it is a self teaching AI to play Dominion. Presumably you could take the results and create a program that let you play dominion against computer opponents; or analyze the results and improve your own play. It would have to be re-created for each new card.
1 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Destroyer of Islands
Canada
flag msg tools
Avatar
mbmbmbmbmb
I played with the PR evolver a bit, but didn't like the interface. And could only play on my work laptop since I only run linux at home. I would really, really, like it if you could implement it in something more portable, like Java, so anyone could use it. It would also then be usable by other apps. I would be happy to contribute to the learning if it were in Java.
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
queenc wrote:
I played with the PR evolver a bit, but didn't like the interface. And could only play on my work laptop since I only run linux at home. I would really, really, like it if you could implement it in something more portable, like Java, so anyone could use it. It would also then be usable by other apps. I would be happy to contribute to the learning if it were in Java.


I'm afraid I don't know Java and don't have the time or inclination to learn it. If you didn't like the PR Evolver interface, then you'll _hate_ this one.

Tony
4 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Richard Roberts
United States
East Windsor
New Jersey
flag msg tools
mbmbmbmbmb
GREAT!!! I love the PR Evolver, and I will definitely give this a whirl when I get home tonight!
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Destroyer of Islands
Canada
flag msg tools
Avatar
mbmbmbmbmb
TonyMitton wrote:
queenc wrote:
I played with the PR evolver a bit, but didn't like the interface. And could only play on my work laptop since I only run linux at home. I would really, really, like it if you could implement it in something more portable, like Java, so anyone could use it. It would also then be usable by other apps. I would be happy to contribute to the learning if it were in Java.


I'm afraid I don't know Java and don't have the time or inclination to learn it. If you didn't like the PR Evolver interface, then you'll _hate_ this one.

Tony


C++? Perl? Something/anything that doesn't require Windows to work?
1 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
United States
Providence
Rhode Island
flag msg tools
badge
Avatar
mbmbmbmbmb
queenc wrote:
TonyMitton wrote:
queenc wrote:
I played with the PR evolver a bit, but didn't like the interface. And could only play on my work laptop since I only run linux at home. I would really, really, like it if you could implement it in something more portable, like Java, so anyone could use it. It would also then be usable by other apps. I would be happy to contribute to the learning if it were in Java.


I'm afraid I don't know Java and don't have the time or inclination to learn it. If you didn't like the PR Evolver interface, then you'll _hate_ this one.

Tony


C++? Perl? Something/anything that doesn't require Windows to work?


You're terribly misinformed.

Windows does not work...gulp
4 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Joe Childers
United States
Dayton
Ohio
flag msg tools
Avatar
mbmbmbmbmb
queenc wrote:
TonyMitton wrote:
queenc wrote:
I played with the PR evolver a bit, but didn't like the interface. And could only play on my work laptop since I only run linux at home. I would really, really, like it if you could implement it in something more portable, like Java, so anyone could use it. It would also then be usable by other apps. I would be happy to contribute to the learning if it were in Java.


I'm afraid I don't know Java and don't have the time or inclination to learn it. If you didn't like the PR Evolver interface, then you'll _hate_ this one.

Tony


C++? Perl? Something/anything that doesn't require Windows to work?


Give him a break. Not everyone is a professional programmer. I think this is a pretty good accomplishment!

- Joe
4 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
MainiacJoe wrote:
Give him a break. Not everyone is a professional programmer. I think this is a pretty good accomplishment!

- Joe


Thanks Joe. I an, indeed, not a professional programmer and the only programming-like tool I have available at both work and home is Excel.

Anyway, the file I tried to upload seems to have got stuck somewhere. If anyone wants a copy, please email me at tony AT tonymitton DOT com.

Tony
3 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Brian Schoner
United States
Marietta
GA
flag msg tools
designer
badge
As a matter of fact, I AM the boss of you.
Avatar
mbmbmbmbmb
Tony, this makes me very afraid, because your Puerto Rico evolver consistently beats the crap out of me. blush

I look forward to seeing the new version. How does it handle different kingdom card sets? I.e., are the 10,000 games of a given generation all with a single card set, or is it random for each game, or...?
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Odin Wednesday

Indiana
msg tools
mbmbmb
Are you taking the first player advantage into account, by playing with equal turns (or possibly even phantom provinces)?
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
bschoner wrote:
How does it handle different kingdom card sets? I.e., are the 10,000 games of a given generation all with a single card set, or is it random for each game, or...?


Every game uses a random board (generated from the cards in the original Dominion set).

Mr_Wednesday wrote:
Are you taking the first player advantage into account, by playing with equal turns (or possibly even phantom provinces)?


This is accounted for in the sense that player positions are allocated randomly and so, over a lot of plays, it _ought_ to average out.

Actually, I am coming to suspect that the randomness of every board means I should run many more games per generation in order to give evolution a better chance. I've now moved to 50,000 games per evolution as a test of this. (But it does seem to be working. I've just played a game after 28 generations and won 48 to 24. The last game I played, after 8 generations, was more like 45 to 5).

Tony
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
gf1024 wrote:
Can you check, or follow individual players checking what they did, bought etc?


You can watch a game between 2 (or more) AI players by selecting "Play a game" with none of the players set to human. It's also possible to work how how to read the "DNA" with some effort. I may at some point write a "decompiler".

Tony
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Terry Donahue
United States
Laurens
New York
flag msg tools
mbmbmbmbmb
I downloaded the Dominion Evolver and have been trying it out for the past couple of days. It's a very nice program to use. I have a background in programming and AI in particular, so I'm interesting in seeing this program expand.

Experiment setup
I created two copies of the Evolver excel file, and labelled them Habitat 1 and Habitat 2.

In each Habitat, I created 100 random players and decided to play them in 3000 3-player games. per generation.

So far I have gone through about 30 generations in each Habitat (a generation now takes about 15 minutes to process for each Habitat).

Results
In Habitat 1, after 4 generations, I played a 3 player game against the top 2 computer players. I won 69-18-12, using a Bureaucrat-Lab strategy.

But after 28 generations, I only won by 49-21-6, using a Market strategy. The computer players played Thieves a lot, and one bought several Duchies, rather impressively.

I'll say more about the other habitat in another post.

Bugs
I’m getting an error message of "Run-time error ‘6’: Overflow" right at the start about 30% of the times I try to "Play a single hand". I think it is when a particular card is in the set, most likely Chapel, since I've never been able to play a game with Chapel in the deck, and Chapel is always there when the error happens. An example card sets when the bug happens: Adv, Gardens, Cellar, Chapel, Thief, Moat, Throne Room, Festival, Militia, Market. Another example: Chancellor, Witch, Moneylender, Bureaucrat, Chapel, Village, Woodcutter, Thief, Market, Laboratory.

Suggestions

1) I'd like to see a few simple features added for the "Play a single game": Display of turn #, Display of current victory points for each player.

2) I'd like the ability to separate the players into multiple independent habitats (i.e. each group of 100 players competes independently and has offspring independently, not competing with each other). I believe this will result in a higher diversity of solutions, since it is common for one solution to wipe out virtually everything after a few generations, leaving only its mutated offspring. I've been doing this manually with my two "Habitats", but it would be easier to manage if I could just specify that I'd like 500 players separated into 10 habitats.

3) If #2 is implemented, then I'd suggest going one step further and fixing (or semi-fixing) the set of cards in a given habitat. This would likely mean that far fewer games would be needed per generation to determine fitness, since the players would all be tuned for that habitat and play in the same (or a similar) habitat each game.

4) In addition to random mutation, it would be interesting to use crossover genetic recombination to produce some offspring for the next generation (http://en.wikipedia.org/wiki/Crossover_%28genetic_algorithm%...).

One interesting idea would be to create crossover offspring using the top players from each habitat as parents (more parents usually improves crossover algs) and then put those offspring in all the habitats!

One challenge with implementing crossover will be to come up with a way to do so given the constraints (percentages must add up to 100, etc.).

5) I'm also interested in seeding some solutions in areas where there are likely local optimal points, such as a standard Big Money strategy. Perhaps the mutations would lead to a variety of strategies around that which would be interesting. This type of approach is commonly used with Genetic Algorithms (http://en.wikipedia.org/wiki/Genetic_algorithm).

Overall, I'm very impressed with the program, and look forward to using it more in the future.

1 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
Thanar wrote:
Experiment setup
I created two copies of the Evolver excel file, and labelled them Habitat 1 and Habitat 2.

In each Habitat, I created 100 random players and decided to play them in 3000 3-player games. per generation.

So far I have gone through about 30 generations in each Habitat (a generation now takes about 15 minutes to process for each Habitat).


I'm doing something similar. I have the evolver running on two separate machines. They're each evolving 1000 players for the 2-player game and running 50,000 games per generation. (As your evolutions demonstrate this is probably overkill right now, but a high game-per-generation number will be more important the better the players get).

Thanar wrote:
Results
In Habitat 1, after 4 generations, I played a 3 player game against the top 2 computer players. I won 69-18-12, using a Bureaucrat-Lab strategy.

But after 28 generations, I only won by 49-21-6, using a Market strategy. The computer players played Thieves a lot, and one bought several Duchies, rather impressively.


I've gone from winning scores of about 70-5 to 50-25 or so. I will upload my best players sometime.

Thanar wrote:
Bugs
I’m getting an error message of "Run-time error ‘6’: Overflow" right at the start about 30% of the times I try to "Play a single hand". I think it is when a particular card is in the set, most likely Chapel, since I've never been able to play a game with Chapel in the deck, and Chapel is always there when the error happens. An example card sets when the bug happens: Adv, Gardens, Cellar, Chapel, Thief, Moat, Throne Room, Festival, Militia, Market. Another example: Chancellor, Witch, Moneylender, Bureaucrat, Chapel, Village, Woodcutter, Thief, Market, Laboratory.


Yes - I get this sometimes and need to dig into it. I can, however, play games with the Chapel. I do need to look into it, and may try to do so tomorrow.

Thanar wrote:
Suggestions

1) I'd like to see a few simple features added for the "Play a single game": Display of turn #, Display of current victory points for each player.


This should be easy enough.

Thanar wrote:
2) I'd like the ability to separate the players into multiple independent habitats (i.e. each group of 100 players competes independently and has offspring independently, not competing with each other). I believe this will result in a higher diversity of solutions, since it is common for one solution to wipe out virtually everything after a few generations, leaving only its mutated offspring. I've been doing this manually with my two "Habitats", but it would be easier to manage if I could just specify that I'd like 500 players separated into 10 habitats.


I'll have a think about this. It would be straightforward to separate the players into discrete blocks for death/reproductive purposes (so that the best players from block 1 breed in block 1 and the best players from block 2 breed in block 2 etc). But re-coding to truly separate them into different "habitats" (where only players in the same habitat compete against each other) would be tricky - it could, however, be done by creating a separate worksheet for each habitat and adding in some code. But it would end up functionally identical to just having a different version of the Evolver spreadsheet for each habitat and running them one after the other (albeit with more work).

So I'm not really sure how worthwhile this would be.

What I'd prefer to do is simulate the habitats idea by having as many people as possible run their own evolutions and then share their best players here.

Thanar wrote:
3) If #2 is implemented, then I'd suggest going one step further and fixing (or semi-fixing) the set of cards in a given habitat. This would likely mean that far fewer games would be needed per generation to determine fitness, since the players would all be tuned for that habitat and play in the same (or a similar) habitat each game.


This won't work with the way I've written the code. What I will aim to do is put a flag by each board position. This flag will effectively be "Leave this card here all the time" or "Randomise this card every time".

Thus one could run an evolution (again, in a separate copy of the spreadsheet) to a fully-fixed or semi-fixed board.

I note, however, that my aim has always been to try and create very general-purpose players able to cope with any board configuration.

Thanar wrote:
4) In addition to random mutation, it would be interesting to use crossover genetic recombination to produce some offspring for the next generation (http://en.wikipedia.org/wiki/Crossover_%28genetic_algorithm%...).

One interesting idea would be to create crossover offspring using the top players from each habitat as parents (more parents usually improves crossover algs) and then put those offspring in all the habitats!

One challenge with implementing crossover will be to come up with a way to do so given the constraints (percentages must add up to 100, etc.).


Ah, sexual reproduction. I have been toying with this. The easy way is to mix whole "chromosome" strands from the parents. Thus a child player gets the standard 9 chromosomes, each of which will come randomly from one or other parent (and may then be mutated slightly).

Thanar wrote:
5) I'm also interested in seeding some solutions in areas where there are likely local optimal points, such as a standard Big Money strategy. Perhaps the mutations would lead to a variety of strategies around that which would be interesting. This type of approach is commonly used with Genetic Algorithms (http://en.wikipedia.org/wiki/Genetic_algorithm).


I'd be interested to see how this works out if you have a go. I've artificially created somethin like a "Big Money" player by setting chromosomes 1,2,3 and 4 to:

AWHC
AAVAAAAAAA
AAKAKAAAAA
AAKAKAAAAA

This puts all the weight on Money cards at the start of the game, then moves weighing Money and VPs equally later.

Thanar wrote:
Overall, I'm very impressed with the program, and look forward to using it more in the future.


Thanks. And I'd like to see the best 3-player game players you've evolved so far.

Tony
1 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
I have just uploaded a new version of the Evolver (version 0.60), incorporating many of Thanar's suggestions and a bunch of bug fixes.

It also has 100 players included that are partially-evolved for 2-player games. I have started running evolutions of 1000 games each. Since these take less than a minute on my PC it is possible to get through quite a high number on an overnight run.

Tony
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Andrew Snyder
United States
Philadelphia
Pennsylvania
flag msg tools
badge
Shouldn't you be playing a game with me instead of wasting time on the Internet?
Avatar
mbmbmbmbmb
I had a look at the old version of the Evolver (0.51), and while I can't run excel I can read code and make a few suggestions.

I'd think about a 'want_to_trash' function so the AI could make better choices with Chapel, Ambassador, Remodel, Trading Post, and the like. You might also want to calculate an 'expected_avg_cash'. Buying a Chapel without ever trashing coppers, or estates is sub optimal.

'play_specific_action' would be faster if you make an array of simple cards (Village, Market, Great Hall, etc) and just loop thought all of the possible actions. That would reduce the number of string comparisons significantly.


oh, I and Trading Post is broken

ElseIf names(Index) = "Trading Post" Then
If active_player = 0 Then
phase = "trading_post"
lblPrompt = "Choose a card to trash"
Call hide_next
lblPrompt.Tag = 0
Else
Call gain_card(active_player, find_best_card_for_cost(4))
End If

edit- I meant market, not militia
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Whitney Barnes

California
msg tools
Rather than evolving whole strategies by hard coding how the computer makes card-by-card decisions, have you tried to evolve those card usage rules de novo?

For instance, the computer knows the contents of its drawdeck, its hand, how many provinces are left, and what's available on the board. The genes would be how highly it values the cards in its hands and deck, and the choices on the on the board (should it use a Celler to discard Copper that would allow it to buy a Duchy for the chance at a Province?) Why not give it all those variables, and let it evolve a strategy for deciding what to discard with Cellar, or trash with Chapel?

Make a baby board with basic cards and start each player with a Silver and a Chapel or Cellar, and see what they do with it.

We might learn things too. GAs sometimes come up with unorthodox solutions.
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
I had a look at the old version of the Evolver (0.51), and while I can't run excel I can read code and make a few suggestions.

Andrew Snyder wrote:
I'd think about a 'want_to_trash' function so the AI could make better choices with Chapel, Ambassador, Remodel, Trading Post, and the like. You might also want to calculate an 'expected_avg_cash'. Buying a Chapel without ever trashing coppers, or estates is sub optimal.


This was the initial approach I considered, but in the end decided was unnecessary. Every time it plays Chapel, the AI compares the "score" of its current deck with that of its deck having trashed one or more cards from its hand so that it ends up with the best scoring deck. So the AI can, and does, trash Estates and Coppers.

Andrew Snyder wrote:
'play_specific_action' would be faster if you make an array of simple cards (Village, Market, Great Hall, etc) and just loop thought all of the possible actions. That would reduce the number of string comparisons significantly.


I'm not quite sure what you mean here. I do have an array for these cards. It's called varCard_Ref. Ah, I think I see now...


Andrew Snyder wrote:
oh, I and Trading Post is broken

ElseIf names(Index) = "Trading Post" Then
If active_player = 0 Then
phase = "trading_post"
lblPrompt = "Choose a card to trash"
Call hide_next
lblPrompt.Tag = 0
Else
Call gain_card(active_player, find_best_card_for_cost(4))
End If


... this isn't my code, I'm afraid. I haven't gone beyond the basic Dominion set, and so haven't coded Trading Post.

Tony
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
Tony Mitton
United Kingdom
Unspecified
Unspecified
flag msg tools
swbarnes2 wrote:
Rather than evolving whole strategies by hard coding how the computer makes card-by-card decisions, have you tried to evolve those card usage rules de novo?

For instance, the computer knows the contents of its drawdeck, its hand, how many provinces are left, and what's available on the board. The genes would be how highly it values the cards in its hands and deck, and the choices on the on the board (should it use a Celler to discard Copper that would allow it to buy a Duchy for the chance at a Province?) Why not give it all those variables, and let it evolve a strategy for deciding what to discard with Cellar, or trash with Chapel?


I took a decision, mostly out of laziness, that the AI would only ever consider the current decision in front of it, rather than plan ahead.

The AI evolves a plan for what cards to discard whenever it needs or wants to. This is simply an ordered list of every card in the game (actually, to cope with expansion, it's a list of 100 cards many of which are just junk DNA right now). Some of the cards are to the left of a "Want to discard" marker and some are to the right of it.

So when it plays Cellar, the AI discards all the cards in its hand that are to the left of the "Want to discard" marker. And when it suffers from something like Militia, the AI discards the leftmost card in the "Discard" DNA that's in its hand (and so on until it has discarded every card it needs to).

Looking right now at the best player I've evolved so far, the "want to discard" section of the DNA reads:

"030201080504060:07090;0@"

The means that it will use a cellar to discard in order:
Province
Duchy
Estate
Gardens
Silver
Copper
Gold
Laboratory
Curse
Village
Militia
Chancellor

As you can see, it's made a good start but hasn't yet learned to discard Copper before Silver. (And it will presumably one day learn never to voluntarily discard Gold).

What the AI doesn't do is any kind of probabilistic estimate, trying to calculate if it discards, say, a Copper what its chances are of drawing a Gold and being able to buy a Province. I did consider this, but decided it would be a bit hard for me.

Trashing cards with Chapel is done differently. Here the AI compares the potential resulting deck structures to its ideal deck structure / composition and trashes to end up with the best fit. The ideal deck is evolved from a random start.

Tony
 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
José San Miguel
Spain
Valencia
flag msg tools
badge
Avatar
mbmbmbmbmb
Tony, your PR Evolver was amazing, I've played it A LOT. I'm definitely trying this
3 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
César Moreno
Spain
Castellon
flag msg tools
badge
Avatar
mbmbmbmbmb
Hi there. I learned to play PR with your evolver. Also I translated it into spanish. Care if I also translate this one?

Btw, I've tried it a couple of times, and noticed there were two decks with the same action card (i.e. 10 villages, and then 10 villages more).
1 
 Thumb up
 tip
 Hide
  • [+] Dice rolls
1 , 2  Next »   | 
Front Page | Welcome | Contact | Privacy Policy | Terms of Service | Advertise | Support BGG | Feeds RSS
Geekdo, BoardGameGeek, the Geekdo logo, and the BoardGameGeek logo are trademarks of BoardGameGeek, LLC.