Author Topic: Selecting for increasingly large numbers of genes  (Read 3854 times)

Offline Trafalgar

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Selecting for increasingly large numbers of genes
« on: August 04, 2007, 05:10:21 PM »
I've been able to get an evosim going which rapidly selects for increasingly large numbers of genes in zerobots whose genome was originally 13,500 zeros. Here's a screenshot of the population, average age, and dna cond statements graphics, along with markers on the timeline and notes on what the markers are (the markers in the top-left graph are numbered, the ones in the other graphs correspond to those and are not numbered).



I had previously (very slowly) attempted to evolve those initial zerobots without any kind of selective pressure besides the default energy costs, with little notable results. Bigzerobot_0a was the first bot I saved from the previous evosims for these large-dna bots, and Bigzerobot_0aa was one descended from that. Those had gone for hundreds of thousands of cycles without going past 1 or 2 genes (Bigzerobot_0aa had 1 more gene than Bigzerobot_0a).

There's just one problem - some of the bots have become ... immune. They can't be culled, they can't be forcibly reproduced, and they can't <many other things>. It LOOKS like they can be given energy via a tie, except that it only shows up in the bot info panel, not in their memory or on the console. (See http://www.darwinbots.com/Forum/index.php?showtopic=2157&hl= )


At 28k cycles, which is where the above charts ended, only some of the bots were suffering from that. By 48k cycles, all of them were.

And by "some" I mean "all." All the bots in the sim besides the shepherds now are suffering from this condition. (Confirmed by the population and dna conditions graphs flattening off for the entire species in the time period from 48k to 89k cycles, starting sometime between 28k and 48k cycles - I lost the graphs between 28k and 48k when I saved and closed DB at 48k without screenshotting the graphs first)
« Last Edit: August 04, 2007, 06:03:04 PM by Trafalgar »

Offline googlyeyesultra

  • Bot Destroyer
  • ***
  • Posts: 109
    • View Profile
Selecting for increasingly large numbers of genes
« Reply #1 on: August 04, 2007, 05:26:38 PM »
Try increasing the rate of Major and Minor deletions, the DNA costs, and lower the amount of zeros in the starting bot.

Offline Trafalgar

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Selecting for increasingly large numbers of genes
« Reply #2 on: August 04, 2007, 06:12:09 PM »
Quote from: googlyeyesultra
Try increasing the rate of Major and Minor deletions, the DNA costs, and lower the amount of zeros in the starting bot.

No, this was working quite remarkably well until the bots began seemingly evolving into DNA-disabledness, at which point culling and forcibly reproducing stopped working on them. I note that by only 28k cycles I had bots with 8 genes (without viruses), and by 48k cycles (by which time evolution had completely stopped), I had bots with 12 genes.
« Last Edit: August 04, 2007, 06:15:24 PM by Trafalgar »

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Selecting for increasingly large numbers of genes
« Reply #3 on: August 09, 2007, 03:53:07 PM »
Put a small negative cost for conditions. That way bots with more 'cond' will be rewarded with free energy.

Altough those emerging through evolution characteristics take time, you'll need a faster sim with shorter DNA's.
« Last Edit: August 09, 2007, 03:53:32 PM by MacadamiaNuts »
Sometimes you win, and sometimes you lose...

Offline Trafalgar

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Selecting for increasingly large numbers of genes
« Reply #4 on: August 09, 2007, 06:03:06 PM »
I got around the problem eventually, and now have mobile zerobots with a whopping 382 genes.

There seems to be a strong trend towards decreasing DNA length as time goes on: This 382-gene bot, for example, has a DNA length of 7926, which is only 59% of what the zerobots originally started with.

I've made several modifications to the shepherds as the zerobots evolved.

After the zerobots evolved powered movement, I changed the shepherds to spread out at about tie distance and then sit in place. When a bot gets within tie range and the shepherd deems it ready for analyzing (or destroying), the shepherd ties to it and immediately immobilizes it. Then it performs its scans and rewarding, or kills the bot. If it isn't being killed, it may be reproduced, but the shepherd sets the bot's fixpos to 0 on the cycle before making the bot repro (If it repros while fixed in place, the offspring will also be fixed in place).

I also improved the code that controlled killing bots, particularly in regard to viruses, unified the two shepherd genes, made having more than 1 gene be a trigger for apoptosis, and changed the apoptosis mechanisms to be more robust (they were failing when the shepherd had enough energy to get both venom and poison up to 32000).

The shepherds are also now selecting for higher values of trefeye, treating an increase of 1 in trefeye as being equivalent to an increase of 10 genes.

The bots have evolved some interesting behavior, but nothing overtly conditional - they fly foward, they shoot info shots (but this is due to a bug - the code that does it is '1 7 0 store store'), and they always fly in the same direction (although I have seen the direction change due to mutation - just not due to a condition).

They also managed to - in two separate sims - disable all the shepherds by setting all their memory locations to random values. I'm not certain if they accomplished this with info shots or viruses, but judging by the fact that a few of the shepherds were missing genes or had a duplicate gene, and that I found one shepherd with a zerobot gene, and that all the bots had acquired the main shepherd gene, I presume it was likely to have been viruses. That was the reason for the improvements to anti-viral stuff, combining the shepherd genes, better virus-making-bot-destruction, and apoptosis (Having the copyingFinished memory location randomized now triggers apoptosis instead of making the shepherd's genes stop running). Once I had made those improvements, I restarted the sim with an older version of the bots which lacked the stolen shepherd gene.

P.S. In the time it took to write this post, the bots went from being 378-382 genes with 3 eye references to being 382-385 with 4 eye references. That's how fast the shepherds can accelerate evolution, even though it's only running at 1.8 frames per second right now (with 106 bots, 81 shepherds, smallest map size, dynamic costs enabled and set to 100).
« Last Edit: August 09, 2007, 06:03:29 PM by Trafalgar »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Selecting for increasingly large numbers of genes
« Reply #5 on: August 10, 2007, 01:25:24 PM »
This is an interesting approach, I'll be very interested to see what the end product will be.