Bots and Simulations > Evolution and Internet Sharing Sims

Zerobot Evolution - Where to now?

<< < (3/3)

Numsgil:

--- Quote from: Trafalgar ---* = Couldn't think of an already existing word off the top of my head which means "returns a value that may appear random but is actually based on non-random variables" - like angle and dist and such, which return different values for the same input.
--- End quote ---

Pseudorandom is the word you're looking for.  You were pretty close

googlyeyesultra:
W00T! My bots have evolved once more. They now constantly shoot. Not feeding shots (They're storing 1 into shoot, with nothing in shootval, so they're trying to mess with .up), so they aren't beneficial, yet, but they don't drop any of their previous behaviors to do so.

Also, it appears that non-gene viruses can be transmitted, that are immune to .delgene inc .delgene inc. Someone needs to fix it, or someone needs to teach me how it works so I can make uberviruses that can even infect SG bots.

Also, technically, they will feed. Just only if they are at the VERY, VERY verge of their shooting distance (compared to their target, maybe .eye5) (meaning the point where only a couple of the shots will actually hit). Does that count as conditional logic? I suppose that's evolutionarily beneficial, since it allows an occasional bit of feeding but doesn't allow you to kill your children or your parents. It's like conspec! If you're really, really close, then you might be my kid or my parent! I won't hurt you!

Edit: They don't feed. They somehow manage to force bots that don't have any poison, to return poison shots. I have no clue what the hell that does, or how it works.

Also, I shall reveal my mutation rates! Muahaha! These are rather high, but they work well with my bot and settings. Also, 32x mutations.

Point: 500
Delta: Disabled
Copy: 500
Insertion: 700
Reversal: 600
Minor Deletion: 600
Major Deletion: Disabled


--- Code: --- << >
 -4 ceil 47 2 ^ floor or
 store
 dup *.maxvel pyth or
 19 ~ pow -- stop
 -10 >> >
 -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 or
 floor ^ store
 dup *.maxvel pyth or
 19 ~ pow -- stop
 0 << >
 -4 dist 47 2 ^ 494 angle 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 ~ add 8 ~ pow -- cond
 angle 47 inc
 >=
 %=
 not
 sub store
 and
 store
 xor
 -14 ~=
 dec
 | 41 .dx store
 1 pyth else
 & pyth rnd 1 -6 =
 or
 or
 floor stop
 start
 store
 inc
 *.timer 6 ~ inc
 22 %=
 !~=
 add << >
 -4 pyth 47 2 ^ floor or
 store
 dup *.setaim pyth or
 19 ~ pow -- stop
 0 << >
 1 ceil 47 2 ^ floor xor
 store
 dup *.maxvel pyth or
 19 ~ pow -- stop
 0 << >
 -4 ceil 47 2 ^ angle 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 ^ 436 floor or
 store
 dup *.maxvel pyth or
 19 ~ pow -- *.dx 0 << >
 -4 ceil 47 start
 << floor or
 store
 start
 add pyth inc
 19 ~ pow -- stop
 0 << >
 -4 ceil 47 0 << >
 add ceil 47 start
 << floor or
 store
 dup *.maxvel pyth ~ 19 ~ pow -- else
 angle 47 inc
 >=
 %=
 not
 sub store
 and
 -14 xor
 store
 ~=
 dec
 | 41 *-665 .dx store
 1 pyth else
 & pyth rnd =
 -6 -5 or
 or
 floor stop
 start
 store
 inc
 *.timer -- ~ inc
 22 %=
 !~=
 add
--- End code ---

Trafalgar:
If that counted as conditional logic, I would point out that I evolved a zerobot on 7/9/2007 which made ties to other nearby bots on a 16000x12000 map, but only made the ties on the very leftmost part of the screen or so (It was moved around by brownian motion). It also did various other things from time to time.

I didn't consider that an example of conditional logic, however, and the first reason is that this is that bot's DNA:

--- Code: ---'#name: smallzerobot_0da.txt
'#generation: 0
'#mutations: 5065
 dec
 stop
 and
 start
 >=
 angle inc
 ceil div dist !=
 3 not
 stop
 sgn or

'#hash: ']($\S#^ANxO:fLy64=W
--- End code ---

There's no visible condition and not even an SGized condition in there. The only thing in there which actually appears to do anything (I'm not 100% certain about this, though) is the 'angle inc'.

This bot appears to do nothing at all if it isn't moving - if brownian motion is disabled, it just sits still doing nothing. My best guess is that, most of the time, angle is making it inc unused memory addresses. There are lines running from the upper-left corner of the map, each one corresponding to a return value from ((implied) 0 0) angle. When the bot is on the line which corresponds to 330, it attempts to tie.

I also evolved bots which fired, spun and fired, moved backwards and fired, and moved forwards and fired, all using actual memory locations rather than angle crap (though they kept the angle crap as vestigal but disabled code, as it ended up inside a cond), but they didn't use any conditions either. Example:


--- Code: ---'#name: smallzerobot_2c.txt
'#generation: 0
'#mutations: 5121
 store
 start
 *0 store
 else
 0 *.sx start
 .up inc
 else
 .aimleft inc
 start
 .shoot dec
 stop
 xor
 =
 sqr *22 angle cond
 add angle inc
 >
 xor
 stop
 * and

'#hash: ST''|$HI_.]=3k@PeW(K
--- End code ---


In the end, I decided that that genome, and the others I had "evolved" from it, were probably not very good for evolving real conditions. So, I abandoned that line of bots for the time being. (I put "evolved" in quotes because by and large the bots had a tendency to evolve away from interesting features towards spending no energy by doing nothing in order to survive longer, as my method of selection was generally to pluck out the bots who survived the longest after all the others died of starvation, or to pluck out bots doing something interesting, like the ones I mentioned before).

Since then I've been working on the shepherd bot, which I'm using now to select for increasingly large numbers of genes in bots with a 13.5 thousand dna length (the original one was 13.5 thousand zeroes). I figure if I can get them to have a ridiculously large number of conditions, they should be able to hopefully evolve useful things and not be as likely to lose them while evolving more new things.

googlyeyesultra:
Okay, the current evolved one I've makes the children face the parents, even if I drag the parent away. I'm not sure why, but it seems to either use ties to do so, or transmit the data through ties.

Trafalgar:
Of course, maybe there really are conditions buried in your bots' DNA somewhere. Who knows. It's rather difficult to tell from looking at the DNA.

Navigation

[0] Message Index

[*] Previous page

Go to full version