Darwinbots Forum

Code center => Suggestions => Topic started by: Numsgil on March 11, 2005, 06:40:20 AM

Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 06:40:20 AM
A couple of ideas I've had have been short circuited because of the linear nature of DNA in DB.  Gene 1 affects the cell.  Then gene 2 affects the cell.  That's not how real DNA works.  In real DNA gene 1 and gene 2 happen at the same time.

So what if, when a gene effects the cell, it's put into a action list.  After the DNA has executed, the action list is applied to the cell.  Then each gene would seem to be executing at the same time.

If two actions contradict (-6 .shoot store and -1 .shoot store) then we can either:
1. average the values -or-
2. the more numerous command wins (2 -6's override the one -1) -or-
3. some commands take precedance over others.  (-6 takes precedence over -1.)
4. one of the actions is randomly chosen (whichever gene managed to get its signals to the appropriate mechanism first).

We could even make the action sensitive to the command.  Maybe shooting figures out the most numerous while turning averages the values.

There are some subtle implications if we do this.  Alot of things would need to be worked out.  But it would theoretically be the first step in a number of complex additons, such as diploid (or X ploid) DNA and a more complex sexual reproduction.
Title: Simoltaneous DNA execution
Post by: PurpleYouko on March 11, 2005, 09:11:00 AM
I like this concept.

It is how DB was originally designed to be but it fell somewhat short of the goal.

Removal of the linearity would be a very good idea. It is going to seriously screw with most existing robots though. No more using the stack to keep values for later use in the same cycle.

Major changes.

 :unsure:  PY  :unsure:
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 09:28:41 AM
I think we'd have to include a 'run DNA linearly' button in the options menu so older bots could be run, but yeah, huge implications for alot of bots.

After that, though, things like diploid DNA and sexual reproduction come very easily.  Sexual reproduction just becomes finding a way to fuse two cells into one.

The major advantage of this is that the genes become a kind of object-oriented design, allowing genes to be written that don't know anything about other genes.
Title: Simoltaneous DNA execution
Post by: Zelos on March 11, 2005, 09:50:57 AM
:evil: first numsgil, -6 is lower than -1, coz -1 is closer to 0 then -6
second, this would be very good.
third, if we use diploid dna and use the system I sugjested whit gene strenghts, we could use simulare here. decied which is gonna be active by the strenght. like:
Code: [Select]
cond
start
-1 .shoot store
stop
strenght 5

cond
start
-6 .shoot store
stop
strenght 1
the first gene would be activated coz it has more strenghts in its command. and when we have diploid dna we could make it like
Code: [Select]
ploidstart
cond
start
-5 .shoot store
stop
strenght 1

cond
start
-2 .shoot store
stop
strenght 6
ploidend

ploidstart
cond
start
5 .shoot store
stop
strenght 4

cond
start
9 .shoot store
stop
strenght 2
ploidend
here would the first ploid be the commanding 1 coz the active gene there is the most powerful 1, I think it should be like that. or it could be like 1+6=7 and 2+4=6 so the first ploid wins thx to the entire strenght is bigger, if they are equal it would be random

 :evil: zelos
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 10:22:36 AM
First off, I never said -6 was higher than -1.  I just said we could artificially give it precedence.

Second, what I'm thinking doesn't involve any kind of artificial pairing of genes, or anything along those lines.

You'd have DNA threads, each being a chromosome.  Each has a beginning and an end.  These threads then all activate simoltaneously.  If you have multiple copies of the same chromosome, then you have multiplie copies of the same chromosome.  Woop de do.

From this simple system, diploid and Xploid DNA could naturally develop.  Sexual reproduction would simply be combining the DNA of two haploid cells (which is where real sexual reproduction came from).

So, aside from non-linear DNA all we'd have to add is a way for DNA to be divided into threads, and for a way for cells to combine their DNA (maybe some kind of fusing, the opposite of reproducing).

Also, we'd have to add a time delay for DNA reproduction based on the length of the DNA.  Real organisms will reproduce through meiosis if they are stressed because it's much faster (you don't have to reproduce any chromosomes, you just split the diploid DNA and you're good to go.)

Last, we have to add a way for chromosomes to become associated with each other.  Similar to the centromeres in real chromosomes.  Real chromosomes do this with a long series of repeating patterns that somehow keep the two chromosomes together.

As I said before Zelos, genes will just learn to have the highest strength in your system.  That doesn't help us at all.
Title: Simoltaneous DNA execution
Post by: Zelos on March 11, 2005, 12:28:09 PM
ok, let us say we have 2 genes, 1 is bad (now) and 1 is good (now). the good 1 have the strenght 8 and the bad 2, if the bad sudenly is mutated to gain 9 it will cause the bot in question to die sooner then it should, coz its so bad. so the gene will keep its strenght down so its allways below the good one. but what if it all of a suddenly happen to be a good gene? then it will gain strenght while the toher, who are bad now, will get lower, both want to exist, so the bad one let the good 1 rule
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 02:28:31 PM
Ok people slow down , If we do this, How do you suppose math and loops are going to work in the new system? (I know there is no actual loops, I mean stuff like "every cycle count a++  memory(a) = 20 until a > 200")
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 02:30:36 PM
I think old robots should not lose there Functionality. There is just has to be a way for the Dna to be liner and non liner at the same time. I say we eather add new nonliner methods to the dna, or change the exsisting robots to use new liner methods in the dna.

Quote
I think we'd have to include a 'run DNA linearly' button

A softwear must always be backwords compatible unless the old virsion is complete jibrish, but in this case its not , in 2.35 math is easyer to do then in what you prapose here.

Making a new "button" makes it no more backwords compatible
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 02:37:05 PM
That's the implications I'm talking about.

The stack wouldn't work between genes.  It wouldn't affect any kind of counters you have going, though.

Any linearity between genes at all would ruin the system, so it'd have to be all or nothing.

Quote
A softwear must always be backwords compatible unless the old virsion is complete jibrish, but in this case its not , in 2.35 math is easyer to do then in what you prapose here.

That's why I said:

Quote
I think we'd have to include a 'run DNA linearly' button in the options menu so older bots could be run

Am I talking in a vacuum here?
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 02:39:23 PM
Quote
Am I talking in a vacuum here?

I am starting to like repeating myself :P

Quote
I think we'd have to include a 'run DNA linearly' button

A softwear must always be backwords compatible unless the old virsion is complete jibrish, but in this case its not , in 2.35 math is easyer to do then in what you prapose here.

Making a new "button" makes it no more backwords compatible

P.S.

The new qustion is How will NUm piss me off tuday? Endy and MP already did.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 02:56:16 PM
Quote
A softwear must always be backwords compatible unless the old virsion is complete jibrish, but in this case its not , in 2.35 math is easyer to do then in what you prapose here.

Making a new "button" makes it no more backwords compatible
So when you say something like this, it's a good idea to reference back to the person who said something like it already.

IE:

I agree with Numsgil, A softwear must always be backwords compatible unless the old virsion is complete jibrish, but in this case its not , in 2.35 math is easyer to do then in what you prapose here.

Making a new "button" makes it no more backwords compatible
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 03:09:47 PM
Num , think about it if we put a new button for liner Dna execution. That means we are seporating the old robots from the new robots. If we have some robots on the screen with liner execution and nonliner in the same time, then there is no fear balance in the simulation. Seporating old robots from new robots does not solve the backwords compatability issue!!@@!!!!!! , you see now?

Hey, I give you credit , at least you agree that "A softwear must always be backwords compatible"
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 06:30:12 PM
Quote
Seporating old robots from new robots does not solve the backwords compatability issue!

Yes, it does.  Are we talking about the same definition of backward compatible?

backward compatible - able to use old files in the new version

Quote
Hey, I give you credit , at least you agree that "A softwear must always be backwords compatible"

There are some instances where backward compatibility is destructive to the final product.  But I think that most of the time if you can do it, you should.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 08:46:59 PM
backward compatible - able to use old files in the new version and/with new files. Therefore allowing for fear competition between the files.

Yea my definition is a (little bit) more complex.

P.S.

Before I Studied how they made a cadd program backwards compatible; It was fear competition between the old files and new files because the I.o. was the same for both types of files and the user.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 08:49:23 PM
Quote
There are some instances where backward compatibility is destructive to the final product.

I agree 100% , but they [you]some[/you] instances. Not all instances.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 09:02:46 PM
Backward compatible (http://dictionary.reference.com/search?q=backward%20compatibility).

Note that the definition uses 'can read old files'.  Having older versions of bots and newer versions of bots interact works only if they don't interphere with the way the other works, and doesn't actually effect the backward compatible nature of the program.

That said, allowing a checkbox for each individual species in the startup options screen would work.  So you could run one species with linear DNA, and another without.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 09:21:45 PM
If we have some robots on the screen with liner execution and nonliner in the same time, then there is no fear balance in the simulation. For example one will mutate easyer then the other one.

I posted my own solution to this problem already.

P.S.
I say we use my own definition of backwords compatible or forget about this new dna system. wana wote?

Btw+p.s. of p.s.

I think my definition is the correct definition , your link does not go agenst my definition in any way.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 09:43:55 PM
Your definition is a subset of my definition.

That is, to use logic, your definition implies my definition, but the opposite is not true.  That is, my definition does not imply your definition.

AND WHAT THE HECK DO YOU MEAN WHEN YOU SAY 'FEAR'.  Seriously, I don't think you're using the right word.

Fear (http://dictionary.reference.com/search?q=fear).

Last, for this to work at all the DNA for a bot has to be either ALL linear or ALL non linear.  Any mixing of the two defeats the purpose entirely.  The purpose is to 'free' the genes from the direct influence of each other.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 09:52:57 PM
lol Num,  :banghead: Fair = fear back to the Twilight zone (cant spell)

I  MEAN [you]FAIR [/you] NUM
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 09:57:15 PM
OOhhhhhh....

Makes sense now.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 10:05:02 PM
Old bots would still run (most of them don't use any kind of intergene communication anyway.  Well, most of the nontop bots and non mutated anyway).

If anything this would make the math easier to understand.  The stack would be isolated to each gene, things like:

cond
start
6
stop

cond
6 !=
start
blah blah...
stop

won't work anymore.

I honestly don't understand your passive aggressiveness.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 10:08:54 PM
"If anything this would make the math easier to understand. " IF you say so Num, ok I am cool.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 10:13:39 PM
How about we write some kind of "Dna Converter" to make top bots and mutated bots work under your system? (The tricky thing is under the new costs they should lose as mutch energy as under the old costs.)

P.S.
I am not being agresive Num , chill...
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 10:22:18 PM
That's what the 'use linear DNA' button would do, allow older bots to work in the new simulation.  Are we speaking the same language here?  I feel that we're not communicating effectively.

Comments like:
[quonte]
The heck with all the current robots

The heck with simple to understand ,math like, dna processing.
[/quote]
are passive aggressive.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 11, 2005, 10:28:19 PM
No more comments :D

If we simply add a button: then the robots wont mutate correctly together. You expect to keep the old mutation system and the new mutation system? What If I am trying to mutate a robot to switch from using liner dna, into using nonliner dna, How would I do that?
Title: Simoltaneous DNA execution
Post by: Numsgil on March 11, 2005, 10:47:56 PM
Manually.  The two systems just don't mesh.  And anyway, the promise of more interesting mutations and natural development lies along this path, so why would you want to mutate old top bots and mutated bots anyway when you can get more interesting results elsewhere.
Title: Simoltaneous DNA execution
Post by: shvarz on March 12, 2005, 01:21:35 AM
Cool idea.  Here are ways to solve some of the problems mentioned:
1. Chromosomes should be defined by DNA commands.

chromostart
blah-blah
chromoend

Within a single chromosome the stack is used as before - allows inter-gene communication.  Each new chromosome resets the stack.  To make your old files run in new version, simply add chromostart in the beginning and chromoend at the end - most of the bots should be just fine this way.

2. Allow single-chromosome genomes.  After all, not all genomes are diploid.  Poliploidy is not necessary, it does not add much anyway.

3. All pairing up that is needed is just to place paired chromosomes one after another.  During sexual reproduction, take odd chromosomes from mother, even from father (just like sexrepro works now).  This actually makes tetraploidy possible (or any other even-number-ploidies).

Comment:
Nums, organisms don't go through meiosis just because it is faster :)  There are always better reasons :)  But we can make meiosis possible, should not be hard.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 12, 2005, 01:53:09 AM
We could allow stack manipulations to pass along the same chromosome I guess...  but the store commands would have to be at the same time.

Ideally the program wouldn't have a 'diploid mechanism', it'd just set up the basic mechanisms that allowed it to develop in the first eukaryotes.  I think a 'double strand DNA break' mutation would prompt this kind of action (that's why real organisms became diploid).  So single strand chromosomes are really the default.

How do we know which chromosomes to associate with one another though?  How do real cells know which chromosomes to stick together during mitosis?  I've heard some plant species can interbeed with others, then double their chromosome number to become a proper diploid creature.  Something like that should be possible too, I think.

Basically, I think we should have sub commands, like crossing over and chromosome reproduction that can be macroed with a simple meiosis command.

I read that thing about meiosis being faster somewhere on the internet.  After looking it up it's actually much slower since their are 4 cells at the end instead of 2.  Shows you that you can't always trust info online.
Title: Simoltaneous DNA execution
Post by: shvarz on March 12, 2005, 02:12:51 AM
The chromosomes are linked in pairs.  Same will be here.  Just like this:
1a
1b
2a
2b
3a
3b

and so on.  If the order gets mixed up - the off-spring will also get severely mixed up and die.

Quote
So single strand chromosomes are really the default.

What do you mean?

Quote
I've heard some plant species can interbeed with others, then double their chromosome number to become a proper diploid creature. Something like that should be possible too, I think.

It is possble, but not that important.  Don't bother.

Quote
Basically, I think we should have sub commands, like crossing over and chromosome reproduction that can be macroed with a simple meiosis command.

You mean actual commands for cross-over?  That would say "crossover here"?  But cross-overs are random.  Anyway, recombination is a whole other matter.  Simple re-assortment of mother's and father's chromosomes will add a lot of power already.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 12, 2005, 03:17:19 AM
Here's what I'd like to see (http://en.wikipedia.org/wiki/Centromere).

Imagine a system where a single chromosome bot learns to associate two identical copies of the same chromosome together to fix DNA damage, or split up chromsomes randomly, or whatever.  Maybe two haploid identical copies of a cell combine to form a diploid individual.

If we have the right rules in place, we should see things like sexual reproduction and diploid-ness arise naturally.

That's what I'm talking about.  Then chromosomes learn for themselves how to associate similar chromosomes together.  As long as we can figure out some kind of mechanism for them to use, we're set.

Unfortunately, the process that real chromosomes use is somewhat epigenetic, which probably wouldn't work well.  Any ideas?

And recombination is only a part of the advantage of meiotic reproduction.    Crossing over helps keep chromsomes more or less consistant with one another.  It wouldn't be alot of extra work to figure it out.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 12, 2005, 03:20:58 AM
It looks like complex DNA structures came partly as a response to DNA damage.  I think maybe we can make mutations occur in single cells or viruses anytime, not just during reproduction.  Then if the cell has mechanisms in place to repair damage it can.

Here's a good table of effects:

1. Ionizing radiation - two strand breaks in DNA - causes deletions and translocations
2. UV light - pyrimidine dimers - errors in nucleotide choice during repair (this could be as simple as chaning some of the tipo or value data of a DNA entry (you have to know how DNA reads in the program to understand that)).
3. Chemicals - Base analogue mispairing - single nucleotide substitution (same as above basically I think)
4. Spontaneous - isomerization of a base - single nucleotide substituition.
-------------------- or slipped mispairing - framshift and short deletion
5. Transposition - insertion of transposon into gene - insertional inactivation
6. Mispairing of repeated sequences - unequal crossing-over- deletions, addition, inversions
7. Homologue pairing - gene conversion - single nucleotide substitution.


Don't ask me what they all do, I don't know.  I'm just copying from my bio book.  Things like reproduction tend to increase the probability of mutations I think.  Dunno.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 12, 2005, 03:27:57 AM
Okay, there are three kinds of gene shuffling:

1.  reciprocal recombination - in which chromosomes trade segments.
2.  gene transfer - one chromosome transfers segments to another
3.  chromosome assortment - where aech daughter cell gets a copy of one the parent cell's chromsomes.

Including all three, the way to go.
Title: Simoltaneous DNA execution
Post by: Botsareus on March 12, 2005, 11:24:29 AM
Ok You win , I will just have to make a new "First Bot" and mutate it from scratch...
Title: Simoltaneous DNA execution
Post by: shvarz on March 12, 2005, 11:24:46 AM
:D   Good to see such enthusiasm!  :D

As for me, knowing the complexity involved in all these things you describe, I am full of doubts. But don't listen to me, go for it.

One advice: Are you sure you know DNA's structure?  I suspect you are confused a bit with two strands of DNA and two sets of chromosomes.  Look into it.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 12, 2005, 12:20:08 PM
No, I'm not confusing the two.  Although a double strand break of a DNA molecule will necessarily break the chromosome too.  Alot of the complexity we already have in different forms, it's just a matter of fine tuning them.

I'd stiff love thoughts on how to handle conflicting store commands.  I listed my ideas in the first post.
Title: Simoltaneous DNA execution
Post by: shvarz on March 12, 2005, 01:14:24 PM
Your ideas were good.  I guess we'll have to set up arbitrary rules on how different commands are handled.  Sometimes it is better to average, other times add-up, other times - replace.  Just need to choose the most logical.

One prolem I see is that some of the store commands may address memory locations by name, but others by number.  There has to be a system to keep track of the two and bring them to common ground.
Title: Simoltaneous DNA execution
Post by: Numsgil on March 12, 2005, 03:34:08 PM
Memory locations by name are translated into numbers anyway when the DNA is loaded into the program, so it's not really a big problem.