11
« on: August 03, 2007, 01:56:41 AM »
Okay, I'm working on the whole conditional logic zerobot thing. As it stands, I've got a bot that every so often (not very often at all) will randomly decide to reproduce, tie for 1-2 cycles, virus shoot, or shoot. The children won't reproduce, however (They've got 10 body, so it's not that. It's either some wacky epigenetics, a really fragile genome, or some sort of condition on reproduction (or I'm brain-dead). No clue which.
Anyways, my questions:
Can anyone decipher the wacky code that causes whatever the hell this thing is to work?
Can anyone verify my results?
Can anyone offer advice as to where to go from here on evolving this thing?
In exchange, I'll put up my limited knowledge, and the code of the evolved zerobot.
Tips:
Select a bot, ctrl-r, reproduce. This'll make it reproduce if you like something in its genome.
Early on, don't expect much. Any bot that has one more "store", even if it doesn't do anything, is really, really good.
Once you have something decent, find the best one (just look at the DNA/behaviors manually). Then, take this one and evolve it in a sim all by itself.
Until you've got a decent amount of code, disable deletions. Also disable delta mutations.
Consider using either zero costs or perhaps negative costs to feed your bots or at least prevent them from dieing off.
If you can keep your bots from dieing, you don't need to run around with 600 of 'em. All the times I managed to get reproduction were from having about 5-10 bots, and then being able to get around 1-3 thousand cycles a second.
It'll take quite a while.
Movement tends to evolve quickly, as it's not a huge step from 0 to 1 or 2.
If you don't have anything good, set point mutations to around 100 (or lower, if you want).
Once you get something, assuming it can reproduce, start it up in a sim, with point mutations disabled, but the others (aside from delta and major deletion) enabled. That means that even if deletrious mutations occur, the original will remain unmutated and continue to reproduce hopefully healthy children.
Erm, yes. So, please, add your own tips in your posts, please! Now here comes the scary technical part. I'll leave you to scratch out your eyeballs as you attempt to decipher whatever the hell this evolved code is.
<< >
-4 ceil 47 2 ^ floor or
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 2 ^ floor xor
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 2 ^ floor xor
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 2 ^ floor or
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 dist 47 2 ^ 436 floor or
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 start
<< floor or
store
start
add pyth inc
19 ~ pow -- stop
0 << >
-4 ceil 47 0 << >
-4 ceil 47 start
<< floor or
store
dup *.maxvel pyth ~ 19 ~ pow -- else
angle 47 inc
>=
%=
not
sub store
and
store
xor
-14 ~=
dec
| 41 .dx store
1 pyth else
& pyth rnd -5 -6 =
or
or
floor stop
start
store
inc
*.timer -- ~ inc
22 %=
!~=
add << >
-4 ceil 47 2 ^ floor or
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 2 ^ floor xor
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 2 ^ floor xor
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 2 ^ floor or
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 dist 47 2 ^ 436 floor or
store
dup *.maxvel pyth or
19 ~ pow -- stop
0 << >
-4 ceil 47 start
<< floor or
store
start
add pyth inc
19 ~ pow -- stop
0 << >
-4 ceil 47 0 << >
-4 ceil 47 start
<< floor or
store
dup *.maxvel pyth ~ 19 ~ pow -- else
angle 47 inc
>=
%=
not
sub store
and
store
xor
-14 ~=
dec
| 41 .dx store
1 pyth else
& pyth rnd -5 -6 =
or
or
floor stop
start
store
inc
*.timer -- ~ inc
22 %=
!~=
add