Author Topic: Sexual Reproduction  (Read 19633 times)

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #15 on: April 20, 2006, 03:06:02 AM »
As to DNA complexity: we have a hard time deciphering DNA now because we have to do it by hand.  I'm working (off and on) on an in program step by stem DNA debugger that should make such issues moot.  If we limit the DNA to be easily understood by people we're really just limiting the complexity of the primary source of, well, complexity.

As to randomness: Initially I was like you and found the idea of non-deterministic DNA flow repugnant.  However, as I play more and more with the program and the bots I realize that a little bit of randomness isn't going to hurt anything.  If it's really terrible, bots will evolve to avoid cases of co-dominance.

If 90% of genes are clearly seperated into "recessive" and "dominant", while something like 5% or 10% are co-dominant, (that is, we make the s curve really steep) I think that's a fair balance.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Sexual Reproduction
« Reply #16 on: April 20, 2006, 11:29:05 AM »
I don't like the idea of random dominance.  A gene should be dominant because of what it does not beceuse of some random chance.  Let's consider the example of eye color:  you get blue eyes if you make a small amount of pigment, you get dark eyes if you make a lot of pigment.  So if you are a heterozygote carrying both variants of this gene, then "blue" copy makes a bit of pigment and "dark" copy makes a lot and final amount is "a lot".  The "dark eyes" variant wins not because it just happened to win, but because it is functionally dominant.

To truly reproduce dominance we need a very simple thing: when a DNA program stores values into memlocs it does not replace the value that's already there but sums the two up.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Sexual Reproduction
« Reply #17 on: April 20, 2006, 11:43:13 AM »
Oh yeah, I get what you're saying

So that's having two (or more if you want to be triploid and awkward, or less if you want to be haploid - simple and loose out on sexual reproduction) seperate sections of DNA, executing both at once and summing up the stores into sysvars of each section.

I like that idea  

Just seperate each 'chromosome' (split the 'root codule' into 'chromasomes') into two (or other number) sections

You could also use some like X and Y to decide the sex of the bot and control mating

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #18 on: April 20, 2006, 11:45:56 AM »
As I understand it, there is no correlation between phenotype fitness and dominant/recessive.

Assuming that evolution works primarily on phenotypes, I don't think it matters if a phenotype is dominant or recessive so long as there is a possibility of either.

Taking eye colour as an example, it could, from our human perspective, be the other way around.  Blue could be alot of pigment.  The phenotypes aren't well tied into the genotype's dominance.

Hence I don't think it matters if the ability to determine dominance/recession is arbitrary, because to phenotypes in nature it already is.
« Last Edit: April 20, 2006, 11:47:10 AM by Numsgil »

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Sexual Reproduction
« Reply #19 on: April 20, 2006, 12:01:15 PM »
Just some entirely related thoughts, but ones I am really pleased with

 

How about swapping codules around as a form of horizontal gene transfer, keeping the root DNA but using viruses/gene-pumping ties (or the method below) to swap around codules like bacteria swap plasmids. You could use this either to:
  • Gain an entirely new piece of code from another bot (ie. a new antivirus code or a new trick that some other bots have evolved)
  • Use a different piece of code for a task one of your codules was already doing, temporarily 'deactivating' or discarding your codule that the new one replaces
Maybe we need a new way of swapping DNA. Like in/out except putting whole codules in there 'on display'.
.ingene1
.outgene1

That allows bots to read codules of DNA of other bots in line of sight. This also gives them more choice about who they accept genes off, whereas viruses don't (if you don't want it then tough - it's in your genome anyway). Maybe you could have a bot that accepts genes off conspecs with more kills/energy/age than them - survival of the fittest.

Ah, a moment of genius  

What do you think?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #20 on: April 20, 2006, 12:05:23 PM »
Actually Elite, that's what I had in mind too

So I obviously like it.

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Sexual Reproduction
« Reply #21 on: April 20, 2006, 12:10:20 PM »
Quote from: Numsgil
Actually Elite, that's what I had in mind too

So I obviously like it.

Great minds think alike huh?  

And I am also thinking that if we chop bots up into many codules it will make it much easier to shuffle the DNA of two bots. Species could be determined by the root DNA compatability with the codules and root DNA (and DNA shuffling routines) of the next bot. This will also make it pretty hard for non-conspecs to have a child

Hey, should we let bots shuffle their own DNA using a special codule that controls sexual reproduction? Maybe this codule could be the X/Y sex-determining one too?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #22 on: April 20, 2006, 12:23:47 PM »
I was thinking that codules that are paired together that aren't equivelant will fail at their cross-over events.

The result would be if you were to have two chromosomes not at all equal they could act as effective sex genes, since they would never cross over and would be essentially haploid.

Not quite analogous to real biology since real sex chromosomes are more two seperate chromosomes that are haploid instead of a single mismatched diploid chromosome, but the effect is similar.
« Last Edit: April 20, 2006, 12:24:41 PM by Numsgil »

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Sexual Reproduction
« Reply #23 on: April 20, 2006, 02:14:53 PM »
Quote
As I understand it, there is no correlation between phenotype fitness and dominant/recessive.

Assuming that evolution works primarily on phenotypes, I don't think it matters if a phenotype is dominant or recessive so long as there is a possibility of either.

Taking eye colour as an example, it could, from our human perspective, be the other way around. Blue could be alot of pigment. The phenotypes aren't well tied into the genotype's dominance.

Hence I don't think it matters if the ability to determine dominance/recession is arbitrary, because to phenotypes in nature it already is.

Well, but in nature it is the combined effect of both alleles that is being tested.  In your scenario the color of the eye switches randomly from "blue" to "dark".

Also, I don't really like that it works on whole codules.  Single genes would be better.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #24 on: April 20, 2006, 02:34:49 PM »
Yes, I agree that the all or nothing dominance of whole "chromosomes" seems something of a failing.

That said, it's not without precedance.  Specifically a similar appraoch was used by "Kim, Kim, Lee, Cho and Lee-Kwang" in a paper called "Winner take all strategy for a Diploid Genetic Algorithm.”

I can't find a link to the paper, but the site I gave a while ago above says
Quote
[They] employ a winner-take-all approach to diploid dominance. In their research, each chromosome is evaluated independently, and the fittest chromosome is expressed in the phenotype. Once two parents are selected, they perform crossover first on the two dominant chromosomes to generate one offspring, and then on the recessive chromosomes to generate the second offspring. In addition, they allow for some small probability of “dominance mutation”, I.e. the dominant and recessive chromosome switch places before crossover.

While not exactly similar, it does show someone else trying to use a all or nothing dominance/recessive method for a whole chromosome.

The problem is that the DNA for Darwinbots is about as far from biology as you can be and still call it "DNA".  As such, biological solutions are difficult to shoe horn onto the problem.  Bio DNA has several abstraction levels between code and effect that DB does not.  DB's DNA is more like the net effect of all the proteins in an organism instead of the DNA coding for the RNA that gets spliced together to form the proteins.
---------------------
I was thinking about what you suggested, having store simply add instead of replace.  While I think it's an interesting idea, I'm not sure if it addresses the problems of dominance/recessive for three reasons:

1.  Values in Darwinbots for memory locations aren't normalized.  For instance, *.eyeX returns values up to about 100.  *.aim gives values in the range [0, 1256], tielen could potentially go up to 1000, etc, repro takes values in the range [1, 99], delgene takes potentially values from 0 to infinity, though realistically it's probably in the range [1,100].  refxpos and refypos range the whole gamut from [0, 32000].

As a result, it's difficult to assume that bots with larger values are trying "harder".  It becomes somewhat difficult to provide a strictly downard force.  This is sort of a weak reason I'll admit.

2.  It works on stores instead of "genes".  Whereas my idea suffers from applying the dominance/recessive to too high above the gene level, you're idea works below the abstract gene level.  It's just trading one potential problem for another in this regard.

3.  If two genes both say to turn 10 degrees, I think most of us would expect the bot to turn 10 degrees instead of 20.  Several genes that all agree with each other should provide a reinforcement for the behavior instead of amplification.
« Last Edit: April 20, 2006, 02:35:54 PM by Numsgil »

Offline Welwordion

  • Bot Destroyer
  • ***
  • Posts: 325
    • View Profile
Sexual Reproduction
« Reply #25 on: April 20, 2006, 02:57:03 PM »
Hmm, until now I had a problem with the usefullness of codules in natural evolution, as a evolving bot can not decide which genes are important enough to be basic code.
However now I have an idea: How about codules are just differentiated from normal genes trough trough a tag saying "codule" then these tags sometimes could be added or deleted by a certain form of mutation.

Oh and please stop speaking of gender as long it does not serve a practical purpose, I mean if the reproduction
takes the equal resources from each bot gender only makes it harder to find a partner, if you introduce gender
then only if you plan to make a unsymetrical reproduction. (the female gives birth to an unfertilized egg(bot)providing it with energy and another bot inserts only its share of the dna for example)

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #26 on: April 20, 2006, 03:05:13 PM »
Gender: I'd like to have a system where gender is not enforced by anything except the bots.  ie: if your bots have gender, so much the better.  If they don't, then they don't.  There's nothing biologically that prevents us all from being hermaphroditic, so while gender is important I don't see it as something that should be added on the system level.

"Support, do not enforce"

Codules: I'm not certain if you're understanding what the premise of codules is.  Codules are not analogous to genes, they contain genes.

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Sexual Reproduction
« Reply #27 on: April 20, 2006, 03:40:31 PM »
Quote from: Numsgil
"Support, do not enforce"
Good strategy

If you really want eight sexes ...

Quote from: Numsgil
Codules: I'm not certain if you're understanding what the premise of codules is.  Codules are not analogous to genes, they contain genes.
I understand that. Yeah, on reflection maybe it is better to have genes paired up rather than codules

However, I like my 'sex codule' idea too. That also gives more freedom to code for males/females (and any other sexes that you might want) rather than cramming it in to one gene. Rather than mimicing real life you could have an X codule or a Y codule: Mommy sends an X codule, daddy sends a Y codule and the bot deletes one at random to decide the bot's sex.

I like my/Num's codule swapping idea though, and the in/out for DNA idea. I think I'll start a new thread for those.
« Last Edit: April 20, 2006, 03:41:08 PM by Elite »

Offline Welwordion

  • Bot Destroyer
  • ***
  • Posts: 325
    • View Profile
Sexual Reproduction
« Reply #28 on: April 20, 2006, 03:48:48 PM »
If I understand codules are something like  hause numbers in whcih a gene can reside, these numbers can be addressed by other genes and you also added some complicated system of codules calling other coduls if empty.
However what I am saying is, that there is not necessary reason to differentiate between the numbers currently used for genes and numbers for codules.
Instead of having two totally independant Dnas that work differantly, see it as two folders where it can happen that one gene stored in the one folder can instead be switched by mutation in the other folder.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Sexual Reproduction
« Reply #29 on: April 20, 2006, 04:06:50 PM »
Quote from: Welwordion
However what I am saying is, that there is not necessary reason to differentiate between the numbers currently used for genes and numbers for codules.
Instead of having two totally independant Dnas that work differantly, see it as two folders where it can happen that one gene stored in the one folder can instead be switched by mutation in the other folder.

 I'm not sure exactly what you mean, but let me clarify this and see if it matters:
 
 Part of my recent work on the program is to take the idea of a "gene" away from how the system handles DNA.  The flow commands turn on/off other commands, they are not in some way special.  They only demarcate the DNA into genes to human readers.  The DNA strand itself, as far as the program should be concerned, is just a collection of random BPs.
 
 So as many things as I can I'd like to move from the gene level onto some other abstraction, and codules seems a good target.
 
 I'm talking about things like viruses, delgene, thisgene, etc.
 
 I say this only because I think you reference gene numbers in your post, and I want to clarify.  Beyond that I'm not sure what it is you're suggesting.


edit: I think I understand now.  You want the genes to be assigned to codules, so that genes next to each other are not necessarily under the same control mechanism.

My above point is relavent then