Author Topic: Delurk  (Read 5637 times)

Offline EricL Newbie

  • Bot Neophyte
  • *
  • Posts: 10
    • View Profile
Delurk
« on: March 09, 2006, 12:06:41 AM »
Hey there.

Okay, first things first.  DB rocks!  I have wanted to do something similar for years since I saw Karl Sim's Connections Machines demos in the 90s!  I've played with Avida and Tierra and even written a few thousands lines of mutation and selection code for Microsoft's .NET Terrarium, but those are either too acedemically focused or not focused on ALife.  I must say that DB is smack on what I've been looking for.  Well done guys.

Okay, second, is there a active Internet FTP bot location for sharing bots?  I have 2.37.6 up and running and would like to just watch different bots from different authors while I learn the language but neither the FTP site in the code nor the IP address in the Internet forum seems to be live.

Again, well done.  I look forward to authoring my own bots and playing around with 2.4.  Yes, at some point I can help with the code too.

Regards,

Eric

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Delurk
« Reply #1 on: March 09, 2006, 12:49:07 AM »
These days bots are generally shared through the beastiary, which is a sub forum here in the forum.

In the (relatively near hopefully (like before summer)) future, it should be possible to share bots directly from within the program.  (I was inspired by the hour demo by Will Wright about Spore).

Offline EricL Newbie

  • Bot Neophyte
  • *
  • Posts: 10
    • View Profile
Delurk
« Reply #2 on: March 09, 2006, 01:44:54 AM »
Thanks, saw the forum.  I'll cut and paste.

On a completely different topic, is there an ETA for allowing the encoding of the mutation rate to be part of the genome and for allowing selection to operate independently on the mutation rate for different parts of the genome?  Excuse the verbosity so that I may be as clear as possible.  If memory serves, in biological DNA, there are different ways to code for the sme amino acid I.e. different 3 letter sequence encodings can code for the same amino acid, ultimatly producing the same phenotype - they have no impact on expression or behaviour - yet the different encodings have different probabilites (by orders of magnitude) of introducing errors during copying.  Such a mechansim allows for selection to operate on the diversity of encodings I.e. on the mutation rates of different parts of the genome such that where it is favorable for organims to have hot spots of mutation in their genome (such as the chemical make up of the posion secreted by cone snails, which can vary from one generation to the next) evolution has selected for those sections of the genome being encoded in ways where the mutation rate is higher.  Where stasis is favorable, those portions of the genome are selected to be encoded for a lower probability of copy-induced mutation.

From what I've read, the realization of the role this mechanism plays in "self selection" of mutation rates is relatively recent, yet I think it is critical for providing a means for adaptations to occur more quickly when needed and stability to persist where stability is needed.  That is, that the mutation rate can itself be operated upon by selection and that different parts of the genome at different granulatiries can have their own independent mutation rates that get selected for independently is IMHO a not well known yet very important mechanim.  I'd love to see it in DB.

I've seen a few posts related to this idea in my cursory browsing, but can't find them at the moment.  One can imagine a mechanim where say, each sysvar had multiple underlying numbers which mapped to the same program behaviour.  Different numbers wouldn't impact the bot behaviour, but would impact the probability of a mutation at the location in the genome.  A similar mechanim could operate at the gene level, impacting the probability of gene copying, deletion, etc. This would be in addition to the "external" cosmic ray mutations currently in the system.  If done right, I think this would allow bots to converge on their own favorable mutation rates for different parts of their genome.

Eric

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Delurk
« Reply #3 on: March 09, 2006, 02:04:40 AM »
Interesting.  ;)

An issue you run into when you try to implement something like that is bot DNA (and real DNA I would suspect) tends to be a whole lot more convulted than we like to think.  Bot DNA can get totally scrambled, diced, spliced, fried, and mangled.  Meaning that any area based effects you try to have on a particular "section" of DNA would quickly fall apart.

Which leaves the effects on single atomic commands, which I can imagine working.

Perhaps each command/sysvar has a mutation multipler attached with it that can itself be modified by mutations.  I imagine these mutations would probably need to effect "areas" and "sections" of DNA instead of individual atomic units, but that does solve the problem of the DNA "remembering" what section it was in...

Offline EricL Newbie

  • Bot Neophyte
  • *
  • Posts: 10
    • View Profile
Delurk
« Reply #4 on: March 09, 2006, 02:18:25 PM »
Yup, I hear ya.  Eventually, I'd love to see both atomic instruction level and module 'area' level mutation encoded inside the genome but I fully understand how the latter is more involved.  Perhaps it may fall out of future work on sexual reporduction as that may necessitate a stronger notion of module or gene cluster for the purposes of meaningfull recombination.

Give me a week or two.  I'll re-read Lynn Caporale's 'Darwin in the Genome', take a look at the C++ code, then offer up a concrete proposal and perhaps some code.

-E

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Delurk
« Reply #5 on: March 09, 2006, 03:39:43 PM »
That would be pretty cool :D

Offline Carlo

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Delurk
« Reply #6 on: March 09, 2006, 05:52:15 PM »
Quote
Yup, I hear ya.  Eventually, I'd love to see both atomic instruction level and module 'area' level mutation encoded inside the genome but I fully understand how the latter is more involved.
Just add some new token (instruction) to the dna code (say , for example, 'mut') which has no effect but increasing the mutation rate of the surrounding code. Say that the mutation rate of the surrounding code increases proportionally with the proximity to the mut tokens. And that the influence of the mut tokens is addictive. The token moves with the code, as it is subject to deletions, transpositions, etc. It is subject itself to mutations, and it can be inserted, deleted, etc.
Would it be ok?

Bye

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Delurk
« Reply #7 on: March 09, 2006, 06:53:42 PM »
My only qualm would be that it could possibly "clutter up" the neighborhood associativity of DNA commands.

For instance, 3 5 add 2 div is a method to push 2 onto the stack.  This little equation takes 5 base pairs/atomic units in the DNA.

Now suppose you throw in some muts:

3 5 mut mut add mut 2 mut div

The computational complexity of the equation hasn't changed one iota, but its elements have become more sparse, leading to less homogenous effects from mutations, and different selective pressures.

Which is why I think attributes of DNA strands should not be emcoded in the DNA array itself (at least, not in a way that changes neighborhood associativity)..
« Last Edit: March 09, 2006, 06:55:56 PM by Numsgil »

Offline Carlo

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Delurk
« Reply #8 on: March 10, 2006, 03:15:20 AM »
Quote
3 5 mut mut add mut 2 mut div

The computational complexity of the equation hasn't changed one iota, but its elements have become more sparse, leading to less homogenous effects from mutations, and different selective pressures.
What do you mean precisely with "less homogeneous effects from mutations" and "different selective pressures"? Could you make an example?

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Delurk
« Reply #9 on: March 10, 2006, 03:21:18 AM »
Maybe we could tie in a couple of ideas here. Suppose every 1999 units the counter reset to zero. Therefore 2003 is the same as 3. 3199 would be the same as 199.

The sysvars would have the same appearence as the normal numbers but their numeric values would be radically different.

Then have mutation rates of those sysvars slightly rise as the values increase. There'd be 16 different matches for any single sysvar but they'd have different rates of mutating as the number increased in size.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Delurk
« Reply #10 on: March 10, 2006, 01:33:42 PM »
That would make sysvars something called an "equivelance class" instead of a number.

Like .shoot would be {.shoot, .shoot + 1000, .shoot + 2000...} if you reset every 1000 units.

I don't really have a point, I'm just excited that I get to use something a term I learned in Abstract Algebra in the real world. :D
« Last Edit: March 10, 2006, 01:37:23 PM by Numsgil »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Delurk
« Reply #11 on: March 10, 2006, 01:36:37 PM »
Quote
Quote
3 5 mut mut add mut 2 mut div

The computational complexity of the equation hasn't changed one iota, but its elements have become more sparse, leading to less homogenous effects from mutations, and different selective pressures.
What do you mean precisely with "less homogeneous effects from mutations" and "different selective pressures"? Could you make an example?
Sorry, this is an abstract idea and I wasn't being very clear.

let's take my two examples and apply a mutation that extracts 3 BPs and moves them to a different point in the genome.

In the original example, you could extract add 2 div and move it somewhere else.

In the modified example with muts, it would be mut 2 mut.

The first has more cohesion to what the original equation was.  Mutations are less likely to destroy equations by moving them around.

Offline Carlo

  • Bot Destroyer
  • ***
  • Posts: 122
    • View Profile
Delurk
« Reply #12 on: March 11, 2006, 05:29:49 AM »
Quote
let's take my two examples and apply a mutation that extracts 3 BPs and moves them to a different point in the genome.

In the original example, you could extract add 2 div and move it somewhere else.

In the modified example with muts, it would be mut 2 mut.

The first has more cohesion to what the original equation was.  Mutations are less likely to destroy equations by moving them around.
Well, you're right. Though this would count as an increase in the mutation rate of the portion of code you considered - and we were talking about methods to increase the mutation rates of code portions.
On the other side, I understand that you may want to increase just the rate for "single base" mutations, without affecting the splicing rates. But, in order to obtain this, you may just have to modify a little the splicing routine, by adding the directive "never splice just before a 'mut' token". Done that, the cohesion of

2 | add | store
and
2 mut | add mut mut | store

remains exactly the same (I have put in evidence the slicing points). Consider the other advantages of this system: it is easily readable and writable by humans, some of its effects come naturally (increased insertion rate, for example).