Darwinbots Forum

Bots and Simulations => Evolution and Internet Sharing Sims => Topic started by: Botsareus on July 06, 2014, 03:01:31 PM

Title: Automatic Zerobot evolution
Post by: Botsareus on July 06, 2014, 03:01:31 PM
Let me know what kind of results people get in different settings.
Automatic Zerobot evolution is available from global settings under evolution tab latest version.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 08, 2014, 11:04:52 AM
I don't understand the evolution formula. What exactly will the numbers here do?
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 11, 2014, 03:57:59 PM
What numbers specifically? For zerobot you should only configure the initial size, all other settings are for a different evolution mode. I May have to go trough these and make sure options get disabled that are not used by a specific mode.

The 'auto-algorithm' is pretty straight forward:

Start 50 by 50 mutating and base robots
Once a mutating robot is doing well save it stage1 ..stage2 ..stage3 ..etc.
Test this robot if it is making it by itself w/o mutations
If not, restart with both robots but replace them with later stages (anything from 16 stages ago to now can be reinserted)
The core idea here is that findbest's based on energy vs. based on population ratio is 4:1  where most of the time the program chooses only based on population but sometimes it chooses only based on energy. This forces the stage results to generally be more toward population, but eventually due to how the robots are peered up, the system produces interesting results.

Also note that 50 was chosen for the smallest field. At larger fields the population is also larger.

Finally, some times a whole species 'base' or 'mutate' population gets cut by half. In this case the program is instructed to reinsert some robots. But on every reinsert the amount of robots to be reinserted goes down. This is kinda like a half life effect from physics. Eventually, the program will give up and choose other starting robots.

Let me also note that this ideas are not really original, I just took all zerobot evolution methods talked about on the forum and merged them into one.
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 11, 2014, 04:24:18 PM
Just as I thought, I already configured that. As soon as you check the zerobot option the other frame goes away. Then just click "ok" on everything and let program (hopefully) restart.

For initial length (which is the actual amount of zeros) I use a value of 255
The go to mutations tabs and I would just enable everything here.
For DNA length * at the button I would put 107 (that means that the initial mutation rates are 255 * 107 = 27285
For Delta2 cycle interval I have chosen 1000. That means point mutations mutate (yes, the mutations themselves change) every 1000 cycles of the robot's life.

Other then that, there should not be a need to configure anything else.

edit: Please configure the mutations first, because after you click ok with one of the modes enabled everything will autorestart.
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 11, 2014, 09:27:15 PM
I think I understand where your confusion is coming from. Instead of hiding unused frames, I should start with no frames shown and only show the useful frames. That is the UI design pattern I used before. Had a little design slip there.

Other then that you should also check out log0 file. The 'Mx' means Max from the findbest function. That is the result of a calculation for findbest for the best robot. Two 'GoodTest' on the same robot within 50 cycles (that means back to back 'GoodTest') constitutes to save and configure another stage.

Sorry for the confusion, looks like I'll be working on the UI a little.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 12, 2014, 09:34:29 AM
I'm sorry for my noob questions. My mind just shuts down when confronted with math language.  :P

Quote
For initial length (which is the actual amount of zeros) I use a value of 255

Edit: So if my zerobot has 32 zeros I should enter 32 here?

You once recommended these values shown in the picture, so I've been using these. OK, this is a little more clear now. I'll give it some testing.  :)

Quote
I think I understand where your confusion is coming from. Instead of hiding unused frames, I should start with no frames shown and only show the useful frames.

Yes, this was slightly confusing at first, but it becomes clear when clicking the check boxes.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 14, 2014, 01:43:31 PM
On the "Mutations" tab on "Global Settings"; what does the number in "Delta2 for what to change" do exactly?
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 15, 2014, 12:10:31 PM
That specific one effects the "what to change, typ. ot val.?" in standard (not V2) mutations, specifically the point(original) and copyerror (original)

It needed better language a long time ago. I just can not think of anything creative. Wana help?
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 15, 2014, 02:15:03 PM
That specific one effects the "what to change, typ. ot val.?" in standard (not V2) mutations, specifically the point(original) and copyerror (original)

Yes, but what does the number stand for? Is it a sysvar, mutation rate or line of code?   :unsure:

Quote
It needed better language a long time ago. I just can not think of anything creative. Wana help?

Help with something not involving programming?  Maybe.  :)
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 15, 2014, 02:40:52 PM
Okey, lets say it was set to +- 15. That means on every robot's reproduction it changes the value in the red circle in the attached picy by increasing it or decreasing it by up to 15. Now, all my delta2 to mutations usually happen on reproduction which imo is a big improvement over what we had before. The only exception being for point and point2 mutations.

Another thing to note that I should have mentioned a while ago. Mrepro works a little differently with delta2 mutations, it simply repeats the mutation process including above between 2 more and 4 more times then normal. Classic mrepro works the way it always did.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 15, 2014, 03:21:39 PM
In that case I think what it says is fine, but how about a pop-up when you hold the mouse over it that says: "Oscillation between type and value."
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 19, 2014, 03:13:42 PM
Just one more question...

I don't understand the difference between "DNA length" and "Slowest rate DNA length" on the Mutations tab, Global Settings.

What do the numbers do here on what and when?
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 19, 2014, 03:19:25 PM
Just one question before I reply, did you know it was corrupt or not?
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 19, 2014, 03:23:03 PM
Actually, I do not even care.

Slowest possible rate is the upper cap on DNA mutation rates. It is calculated by multiplying by the length of the robots DNA by a value provided.

DNA length is an overwrite from earlier versions of DB where the default mutation rates was fixed at 5K. It is also calculated now by multiplying the current robots initial DNA length by the value provided.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 19, 2014, 03:30:53 PM
Just one question before I reply, did you know it was corrupt or not?

No corruption that I'm aware of yet.

Quote
Slowest possible rate is the upper cap on DNA mutation rates.

Will it oscillate up to that or is it just a counter on how many mutations to allow?
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 19, 2014, 04:02:09 PM
No, it is a fixed value. It literally affects the mutation cap.

Let's say we are dealing with Point Mutations:

A value in Point Mutations of 1 is really naughty as the robot mutates all the time. We all know that. I am just using as example.
Due to how mutable my new mutation algorithms where, I had the opposite problem mostly.
The mutations value was getting very, very large. Therefore, the robots would just sit there for days w/o mutating.
I invented this type of cap to fix the problem.

A counter on how many mutations to allow is a different story.
Initially, I just had a time cap on how many mutations to allowed. About 4 seconds.  That did not cross platform very well if we are talking about safemode, due to the fact that each cpu runs at different rates. I ended up replacing it with a counter. I was configuring the counter before realizing that I may have a corrupt copy of vb, and maybe the whole OS. For reference, see the source code.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 19, 2014, 04:13:09 PM
OK, so if I were to enter 1000 into that field, then Delta won't increase the rate above the rate set on the Mutation Probabilities dialog?

Example: If I put 10 into Point mutations and 1000 into Slowest rate DNA, then Delta won't raise the rate value above 10000?
Title: Re: Automatic Zerobot evolution
Post by: Botsareus on July 19, 2014, 04:26:32 PM
If I you put 1000 into Slowest rate DNA and the robot has 255 base pairs (we call them commands I think), the delta will not raise the rate value above 255,000.
Title: Re: Automatic Zerobot evolution
Post by: Testlund on July 19, 2014, 04:31:29 PM
OK, in that case the sentence "Normalize default mutation rates and slowest possible rate based on DNA length" is pretty self-explanatory.  :D Thanks for the clarifaction though.  :)