|
I composed an entire post asking for a scripting engine so we could create better builds before remembering I have a background in Computer Science. So I implemented a feature that I felt is necessary for the program to be useful.
Currently the software is "dumb" in the sense that it does exactly what you tell it to. For the most part the fastest way to a certain attacking unit goal will be to exclude drones. Unfortunately in an economy based game these glass cannon build orders are not very good. You can set a minimum number of reasonable drones but why calculate this out for every build when you can have the computer do it?
I added a setting called, "Disable All-ins" which when enabled in order for a build to qualify it must have a certain number of drones based upon the final time of the build. The threshold is generous but it eliminates all of the terrible 6 drone + units builds when you can get 16 drones in just a few more seconds.
[edit] I don't think I was very clear in describing why this feature is better than simply entering in a certain number of drones. The entire point of the program is to optimize and find the best way to do a certain build. The problem is you might not know how fast something can be done. Your "target" is usually based upon a certain number of attacking units, but the number of drones expected will be variable based upon the amount of time the build takes. Basically your expected economy will vary depending on how early or late the game is.
In order to enter a certain number of drones as a prerequisite you must know around how long the build will take to know how much economy you should have. If your guess is too high you may potentially not discover really good builds. If your guess is too low then you'll start to get those crappy builds again. Either way doing it manually will require constant tweaking.
http://c0004251.cdn.cloudfiles.rackspacecloud.com/evolutionchamber-version-0017-hansoo.jar
Relevant source:
+ Show Spoiler + EcSwingX.java addCheck(settings, "Disable All-ins", new ActionListener() { public void actionPerformed(ActionEvent e) { EcSettings.disableAllins = getTrue(e); } }).setSelected(EcSettings.disableAllins); gridy++;
EcSettings.java public static boolean disableAllins = false;
EcState.java public boolean isSatisfied(EcState candidate) { ... if (EcSettings.disableAllins) { int targetDrones = (candidate.seconds / 17 + 6) * 4 / 5; if (candidate.drones < targetDrones) return false; }
|
Seems like the new version is worse. I got the requirments from a replay, so I know it can be done I just wanted to optimize the build a little bit. The 0015 found a build in 30 mins, but 0017 spent an hour and still keeps failing by doing 10 or so hatcheries.
|
On October 25 2010 15:49 HanSoo wrote:I composed an entire post asking for a scripting engine so we could create better builds before remembering I have a background in Computer Science. So I implemented a feature that I felt is necessary for the program to be useful. Currently the software is "dumb" in the sense that it does exactly what you tell it to. For the most part the fastest way to a certain attacking unit goal will be to exclude drones. Unfortunately in an economy based game these glass cannon build orders are not very good. You can set a minimum number of reasonable drones but why calculate this out for every build when you can have the computer do it? I added a setting called, "Disable All-ins" which when enabled in order for a build to qualify it must have a certain number of drones based upon the final time of the build. The threshold is generous but it eliminates all of the terrible 6 drone + units builds when you can get 16 drones in just a few more seconds. http://c0004251.cdn.cloudfiles.rackspacecloud.com/evolutionchamber-version-0017-hansoo.jarRelevant source: + Show Spoiler + EcSwingX.java addCheck(settings, "Disable All-ins", new ActionListener() { public void actionPerformed(ActionEvent e) { EcSettings.disableAllins = getTrue(e); } }).setSelected(EcSettings.disableAllins); gridy++;
EcSettings.java public static boolean disableAllins = false;
EcState.java public boolean isSatisfied(EcState candidate) { ... if (EcSettings.disableAllins) { int targetDrones = (candidate.seconds / 17 + 6) * 4 / 5; if (candidate.drones < targetDrones) return false; }
This fix is okay, but in light of the new econ based optimizer being tested right now, possibly obsolete.
|
On October 25 2010 15:56 Meldryn wrote: This fix is okay, but in light of the new econ based optimizer being tested right now, possibly obsolete.
That sounds good. I haven't been following the entire thread and I'm not part of internal testing so I'm not aware of anything in the incubator.
I found the patch useful so I just thought I'd share it.
|
the new version with simple view is awesome! thanks to all of you for your great work. this tool makes lots of fun. even though i didn't have any sucess with my 12 roach, tunnelling claws, burrow, glial reconstitution and missle+1 upgrade rush yet :D includes two roach warrens, epic!
|
On October 25 2010 14:53 Subversion wrote: Can we make a thread or something where we can put all the awesome builds this thing uncovers?
i concur! time for some sharing, people!! :D
|
On October 25 2010 15:50 Derin wrote: Seems like the new version is worse. I got the requirments from a replay, so I know it can be done I just wanted to optimize the build a little bit. The 0015 found a build in 30 mins, but 0017 spent an hour and still keeps failing by doing 10 or so hatcheries.
What requirements did you set?
|
On October 25 2010 16:57 Dionyseus wrote:
What requirements did you set? WP0: Metabolic Boost - 6:0 WP1: 2 queens, 3 zerglings, 2 spines and a hatchery - 7:0 WP2: 8 mutalisks - 10:0 (even tried 10:20 and 7 muta, cause it kept failing) Final: 7zergling, 8 banelings, 2 mutalisks and +1 attack for flying units - 12:0
|
On October 25 2010 17:22 Derin wrote:WP0: Metabolic Boost - 6:0 WP1: 2 queens, 3 zerglings, 2 spines and a hatchery - 7:0 WP2: 8 mutalisks - 10:0 (even tried 10:20 and 7 muta, cause it kept failing) Final: 7zergling, 8 banelings, 2 mutalisks and +1 attack for flying units - 12:0
Thats because you asked it to do a "PERFECT" build. By "PERFECT" i mean a build copied from a very good player, this builds are just perfect, nothing you can improve upon them, i did the same trying to improve on 5RR that is just much more easy then your build and it did not find a way to do it even after 8h.
This tool will find you "strange builds" for example if that guy gets 8 muta at once and atacks at 10 min mark, this tool might find you a build for 6 muta by 9min and you could do the attack at a time he is not expecting but in the next min you could not get another 2 muta out.
This tool will give you rush build like 7RR
This tool should give you econ builds but i do not know how good those will be on real game since someone will attack you before your build is done and then you are off.
|
If anyone has requests for builds, please let me know. I have a few cores I can use for this purpose. I'll post the results up here.
This is the 7 roach build with 16 drones, which is finished at 4:37.
|
I'd like to see:
WP: 2 lings before 5min Final: 44 drones, 3 queens, 3 roaches and metabolic boost. (2 hatches as well I guess)
Turn of extractor trick and pull drones from gas.
Best I've got is 6.31 with a 13pool 18 hatch.
|
On October 25 2010 17:22 Derin wrote:WP0: Metabolic Boost - 6:0 WP1: 2 queens, 3 zerglings, 2 spines and a hatchery - 7:0 WP2: 8 mutalisks - 10:0 (even tried 10:20 and 7 muta, cause it kept failing) Final: 7zergling, 8 banelings, 2 mutalisks and +1 attack for flying units - 12:0
after 20 minutes, i got a build that satisfies all the waypoints and ends at 10:30
|
On October 25 2010 22:27 azzu wrote:Show nested quote +On October 25 2010 17:22 Derin wrote:On October 25 2010 16:57 Dionyseus wrote:
What requirements did you set? WP0: Metabolic Boost - 6:0 WP1: 2 queens, 3 zerglings, 2 spines and a hatchery - 7:0 WP2: 8 mutalisks - 10:0 (even tried 10:20 and 7 muta, cause it kept failing) Final: 7zergling, 8 banelings, 2 mutalisks and +1 attack for flying units - 12:0 after 20 minutes, i got a build that satisfies all the waypoints and ends at 10:30
Can you please post it?
I think with 0.17 the new scoring system is worse then before. Now it tends to add another SP or more drones even if it finishes later :-( I do think time should be above all. The time difference was big also, from 4:49 to 5:06
|
On October 25 2010 21:46 Ctuchik wrote: I'd like to see:
WP: 2 lings before 5min Final: 44 drones, 3 queens, 3 roaches and metabolic boost. (2 hatches as well I guess)
Turn of extractor trick and pull drones from gas.
Best I've got is 6.31 with a 13pool 18 hatch.
Just got a new one, 14 hatch 13 pool. 6:27. 42 million games played. Queens at 17 and 21.
|
got a question: when it says
3 Hatch 1 Lair
How many bases are actually there? Does it mean 3 Hatches, one of them is a lair? Or 3 Hatches and 1 Lair, so 4 bases? And how many bases are mining? I read somewhere that it accounts for two mining bases and the other hatches are only there for larva?
|
On October 25 2010 15:49 HanSoo wrote:I composed an entire post asking for a scripting engine so we could create better builds before remembering I have a background in Computer Science. So I implemented a feature that I felt is necessary for the program to be useful. Currently the software is "dumb" in the sense that it does exactly what you tell it to. For the most part the fastest way to a certain attacking unit goal will be to exclude drones. Unfortunately in an economy based game these glass cannon build orders are not very good. You can set a minimum number of reasonable drones but why calculate this out for every build when you can have the computer do it? I added a setting called, "Disable All-ins" which when enabled in order for a build to qualify it must have a certain number of drones based upon the final time of the build. The threshold is generous but it eliminates all of the terrible 6 drone + units builds when you can get 16 drones in just a few more seconds. [edit] I don't think I was very clear in describing why this feature is better than simply entering in a certain number of drones. The entire point of the program is to optimize and find the best way to do a certain build. The problem is you might not know how fast something can be done. Your "target" is usually based upon a certain number of attacking units, but the number of drones expected will be variable based upon the amount of time the build takes. Basically your expected economy will vary depending on how early or late the game is.
In order to enter a certain number of drones as a prerequisite you must know around how long the build will take to know how much economy you should have. If your guess is too high you may potentially not discover really good builds. If your guess is too low then you'll start to get those crappy builds again. Either way doing it manually will require constant tweaking.http://c0004251.cdn.cloudfiles.rackspacecloud.com/evolutionchamber-version-0017-hansoo.jarRelevant source: + Show Spoiler + EcSwingX.java addCheck(settings, "Disable All-ins", new ActionListener() { public void actionPerformed(ActionEvent e) { EcSettings.disableAllins = getTrue(e); } }).setSelected(EcSettings.disableAllins); gridy++;
EcSettings.java public static boolean disableAllins = false;
EcState.java public boolean isSatisfied(EcState candidate) { ... if (EcSettings.disableAllins) { int targetDrones = (candidate.seconds / 17 + 6) * 4 / 5; if (candidate.drones < targetDrones) return false; }
I want to point out that turning on "disable all-ins" runs significantly faster.
I'm averaging about 16-18K games per second with it turned on. The current version 17 runs at ~2K-5K games per second with the same settings.
Nearly every build I've tried it's been able to get the build out at the same time as the current version except disable all-ins ends up with 2+ more drones.
I feel this is an exceptional improvement.
|
On October 25 2010 23:31 OverLulz wrote: got a question: when it says
3 Hatch 1 Lair
How many bases are actually there? Does it mean 3 Hatches, one of them is a lair? Or 3 Hatches and 1 Lair, so 4 bases? And how many bases are mining? I read somewhere that it accounts for two mining bases and the other hatches are only there for larva?
4 bases, it assumes all are placed near minerals.
You can determine if those bases need to be near minerals pretty easily.
First divide the number of extractors and divide by 2. Round up and that's the minimum number of hatcheries near resources required. To determine the actual number, for every extractor, subtract 3 drones from the total drone count. Take the remaining drones and divide by 16. Round up the result and that's how many bases need to be near minerals.
That means that 47 drones with 5 extractors needs 3 hatcheries near minerals. ceil(5/2) = 3. Number of drones on minerals is 32 which is 2 bases when divided by 16.
48 drones with 4 extractors is 2 bases. 48 drones with 1 extractor is 3 bases. etc...
|
@bumblebees: thank you for your explanation.
In my case it says the following (final output) + Show Spoiler +---Final Output--- At time: 9:36 Minerals: 736 Gas: 218 Supply: 112/112 Drones: 54 Overlords: 13 Queens: 2 Zerglings: 8 Roaches: 25 Hatcheries: 3 Lairs: 1 Gas Extractors: 4 Spawning Pools: 1 Baneling Nest: 1 Roach Warrens: 1 Evolution Chambers: 1 Armor +1 Metabolic Boost Glial Reconstitution Centrifugal Hooks
Doing your calculation I come up the the following result: 4 extractors means 2 bases in gas 54 - 12 = 42 42/16=2.6. 42 drones on minearls means 3 bases.
But it still adds one more hatchery. It calculated 3 hatches and a lair. (69172K games played.)
|
On October 25 2010 22:39 icezar wrote: Can you please post it?
no didn't care enough to think about saving it XD
|
This has so much potential, wow
|
|
|
|