tl;dr: use Mine to improve Treasures rather than buying Treasures, use Remodel and Workshop to pick up engine pieces, wait until you have a few Smithies to get a Militia, pick up Villages early and often, sprinkle in some Markets, and grab up to 3 Cellars.
I expect an expert human player will be able to get at least an 80% win rate against the big money strategy.
This quote from the article was my motivation, at least for the first part of the process. When I reached the 80% goal, I had actually jumped from 79% to about 82% if I recall correctly, and felt I still had room for improvement. My next goal was 85%, then 87%, then 89%...and I could only just reach that. I really wanted to get up to 90%, but ran out of ideas for how to improve the bot. I took comfort in the fact that Smithy's win rate was less than 10%--not losing 90% of the time is close enough to winning 90% of the time, right?
Anyway, basically I just spent a whole lot of time on this in a pretty repetitve process: run the simulation, check the sample logs for behavior that can be improved (especially in the games where the bot lost), try something to improve it, repeat. I was surprised that eventually, just directly editing the xml became quicker than editing the bot through the GUI.
Anyway, enough about how I made the bot, onto what the bot actually does.
The Opening5/2Open Mine/Cellar. Getting a Remodel is the highest priority, then a single Village, then a Workshop.
4/3Open Remodel/Workshop. Buy one Market, then a Mine.
Building the EngineThe main idea of the deck is a Village/Smithy engine, but quite a few terminal actions that aren't Smithy are also used (Mine, Remodel, Workshop, and Militia). To make this work, whenever there are two more terminals in the deck than Villages, prioritize Village.
Use Mine to improve money; the only Treasure that is actually bought is a single Gold(actually not quite true, there are a couple rules down at the end), but only after at least one Market is bought, and only if there are no Golds in the deck. (so if Mine improves a Copper into Silver and that Silver into Gold, no Gold will be bought)
A Militia is picked up after the third Smithy. I think the key here was just that the sooner the deck can draw itself, the better. At this point, the deck is being drawn consistently enough that Militia will be played just about every turn.
The final bot in Geronimoo's article included a special rule for the case of having exaclty $7 and 2 buys: buy a Village here, then you'll have enough left for another engine part. Since the goal is a big draw engine, this is a better move than Market/Cellar. I included this rule, and also added a similar rule for $6 and 2 buys. The $6 rule is a bit more complicated: basically if there is at least one Smithy in the deck, and there is one more terminal in the deck than Villages, then use $6 and 2 buys to buy 2 Villages, rather than a Gold or a Market.
Buy 2 Smithies.
Buy up to 5 Markets.
If there is one more terminal in the deck than Villages, buy a Village.
Buy up to 6 Smithies.
Buy Market.
Buy up to 9 Villages. (avoiding the pile out reduced 3-pile endings and was a small boost)
Buy a Cellar.
Buy a second one if you have at least one Smithy. (if you have bad draws early on, don't want to get bogged down with too many Cellars. The simulator doesn't play Cellar so great, so it's more likely to overplay it and end up with a small, useless hand than a human player would be.)
Buy a third one if there are at least 4 Victory cards in the deck.
Once Remodel has turned those pesky Estates into wonderful engine pieces, it will start trashing Treasures; it will turn Golds into Provinces, and Silvers into Duchies or Markets. This can cause your deck to have a bit of an income problem, so Silver will be bought if there are fewer than 7 Treasures in the deck, and Copper will be bought with fewer than 5 Treasures in the deck.
GreeningAs Geronimoo pointed out, my bot wins 89% of the time against Smithy+BM. I tried and tried to hit 90% but just couldn't make it; I suspect if it's possible, it will be done by improving this section.
With all this fancy-pants engine building happening, Smithy+BM getting good draws can begin to build up quite a lead. If the bot is down by at least 20 points, Duchy becomes top priority. (buying Provinces before closing the gap some will just bring the game closer to the end in a victory for the Smithy+BM player)
The PPR is present in its most basic form: with 2 Provinces left in the supply and tied with or losing to the opponent, buy Duchy over Province. It was actually pretty amusing when I remembered to include this; I had spent quite a bit of time working on other, less helpful parts when it suddenly came to me. It added an immediate boost--can't remember how great it was at the time, but I think it was around 3%, might have been more.
The bot buys its first Province once it has at least 5 Smithies, and at least $14 to spend and two buys--so it won't green until it can buy a Province and something useful for the engine--or of course a second Province. Once a Province is in the deck, there are no other restrictions on Provinces.
After the way behind rule and PPR, here is a pretty standard Duchy rule: if there is at least one Province in the deck and 5 or fewer in the supply, buy Province.
Duchy had an unusual buy rule, so why not Estate too? When there are more than 2 Provinces in the supply, and the deck has reached its maximum goal of six Smithies, and there is at least one Cellar in the deck, buy an Estate.
Buy Estate if there are 2 or fewer Provinces in the supply.