Author Topic: Bot DNA  (Read 19956 times)

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Bot DNA
« Reply #45 on: January 09, 2008, 10:06:19 PM »
Would be nice if the bots had some sort of access to micro-arrays. Not sure how they could easily be handled though, in terms of processing speed or access.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #46 on: January 10, 2008, 06:58:58 AM »
Quote from: Shasta
Quote from: Numsgil
The ideal system for MBs would let a cell at one end of a worm communicate freely with a cell 100 cells down on the worm in a single cycle.  That way the size of the MB doesn't effect its response time.

So in this system are you planning on letting any cell know the values of any memory location on any other cell, just doing something like:
Code: [Select]
start
10 .cell store
*.pain 60 store
*.mycell .cell store
60 *.pain >
10 .cell store
100 .give store
stop
Would cell X give cell 10 100 nrg (ok, yeah I made up a few sysvars, but I think you get the point)
If so, sysvars that returned the cell number highest or lowest values (or the values for all of the bots in an array, but this is just wishful thinking and probably too complex) would be very useful.

I'm still working on the logistics, but the goal is something like this:

1.  Bots can totally manipulate the memory of attached bots that are adjacent to it in a MB.  Read/write, etc. just like it can with its own memory.

2.  Bots can be designated as relays.  Signals they recieve would propogate under certain rules during a cycle.  Sort of like a long game of telephone.

So a "brain" bot could communicate through lots of "nerve" bots to "motor" bots, all in the same cycle.

--------------------------------------------
Quote
Would be nice if the bots had some sort of  access to micro-arrays. Not sure how they could easily be handled  though, in terms of processing speed or access.

Yeah, that's another issue I'm trying to figure out.  Some sort of fixed-size arrays that can be manipulated using something like a foreach would make all sorts of things easier.  I have no idea how to accomplish it right now, though.

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Bot DNA
« Reply #47 on: March 16, 2008, 05:14:37 AM »
Had an idea about possibly combining a basic genetic algorithm in with standard DB dna. Basically the GA would allow evolution to easily get over the initial hump of becoming a self replicator, allowing a low level of replication. It could also handle a basic method of feeding and perhaps a determine bot shapes. Still not sure how you'd determine when the GA should relinquish control over to the rest of the dna. Might just wind up having the bot easily become a replicator only to face another hurdle.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Bot DNA
« Reply #48 on: March 17, 2008, 03:02:34 AM »
Maybe I'm just repeating someone else because I was too lazy to read through the whole list, but here are some points I would like to see changed:
  • Instead of messing round with memval/memloc and tmemval/tmemloc, could we simply reduce them to the commands <pos> read and <pos> tread?
  • I agree with the conditional operators being merged with the execution code; it would make for much more readable 1-gene bots
  • .shoot values are confusing; can't it just all be like .vshoot eg. .bodyshot, .memshot, .feedshot?
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #49 on: March 17, 2008, 01:54:16 PM »
Quote from: bacillus
Maybe I'm just repeating someone else because I was too lazy to read through the whole list, but here are some points I would like to see changed:
  • Instead of messing round with memval/memloc and tmemval/tmemloc, could we simply reduce them to the commands <pos> read and <pos> tread?
  • I agree with the conditional operators being merged with the execution code; it would make for much more readable 1-gene bots
  • .shoot values are confusing; can't it just all be like .vshoot eg. .bodyshot, .memshot, .feedshot?

Yep, that's more or less what I'm planning.

Quote from: Endy
Had an idea about possibly combining a basic genetic algorithm in with standard DB dna. Basically the GA would allow evolution to easily get over the initial hump of becoming a self replicator, allowing a low level of replication. It could also handle a basic method of feeding and perhaps a determine bot shapes. Still not sure how you'd determine when the GA should relinquish control over to the rest of the dna. Might just wind up having the bot easily become a replicator only to face another hurdle.

The system is set up in a more or less modable way.  It shouldn't be hard to create a different DNA system that some bots use and others don't.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Bot DNA
« Reply #50 on: April 08, 2008, 11:23:23 AM »
Will there be chromosomes and Alleles for Dominance and Recesive genes? This might make sex-repro more ineresting.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #51 on: April 08, 2008, 01:59:05 PM »
I haven't implemented it yet, but my plan is to have several concurrent "threads" that all operate on the bot's memory at the same time.  At the end of execution, all their effects are averaged (or something similar) together.  A recessive gene in a situation like that might simply be a gene that doesn't store as high a value.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Bot DNA
« Reply #52 on: April 08, 2008, 02:18:33 PM »
I was thinking more along the lines of allowing a designer to control dominance and recessiveness. What if we used division of the two instead? In such an instance co-dominance could occur. That sounds complicated to implement as a defaulting thing. I say let the designer choose for their own species. Otherwise there could be problems with crossbreading. I also think it might be best to simply use a common-limiter. A value that limits potential crosses between species to require similar refvars. This could be used to prevent adaptations from occuring through sexrepro taht are not wanted, such as shooting or sight.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #53 on: April 08, 2008, 02:31:13 PM »
Part of the problem here is that your idea is a force-fed version of dominance and recession taught as part of intro biology.  Real genetics is a bit more... involved.  Genes aren't magically "dominant" and "recessive".  It's more like the gene for skin pigment comes in two varieties: one produces a lot, the other produces a little.  The one that produces a little is overwhelmed by the one that produces a lot, making it recessive in expression.

Think of it like two faucets filling a bathtub.  If both faucets are off or mostly off, you won't have a lot of water in the bathtub.  That's a recessive phenotype.  If one faucet is on at full blast and the other is off, you'll still fill the bathtub.  That's a dominant phenotype.  If both faucets are on at full blast, well, that might not make any difference (maybe someone's monitoring the bathtub and can turn it off) or it could mean a very wet house.  Or if one faucet produces red paint and the other produces blue paint.  The end effect might be very different from what either faucet intends.  That's where the idea of co-dominance comes from, and other wacky things like that.

On top of that, most phenotypes aren't controlled by a single gene, and many genes have more than one effect, so the whole thing gets really muddy.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Bot DNA
« Reply #54 on: April 08, 2008, 07:28:33 PM »
Ah, I was thinkning genophenically, not expression. I meant a Gene that caused the recessive to be turned off. A sort of built in switch when it comes ot crossing.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #55 on: April 08, 2008, 07:46:28 PM »
I'm not sure I understand what you mean.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Bot DNA
« Reply #56 on: April 08, 2008, 09:06:32 PM »
Say for a multibot you have three sets of genes. One of them is for the entire species, they have no value of dominance. The other two have dominance. One of the other two can be set recessive, so the gene is only activated when a copy of it is present elsewhere in the dna. This means a multibot could sexrepro without much problems with internal switches.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #57 on: April 08, 2008, 09:33:17 PM »
It just wouldn't work with the way the DNA is set up.  I'm specifically trying to avoid a bot programmer needing to specify any information on the gene level.  The idea of a gene in the new DNA is just too nebulous.  A bot author could wrap a large section of DNA in a toggle, though, and have that toggle be set in such a way that it gets turned on/off depending on what gene it gets during a crossing over event.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Bot DNA
« Reply #58 on: April 27, 2008, 08:09:36 PM »
I'm worried about the way 3 dimensions are handled. For example, motion would not be an angle of bearing-velocity system, but an angle of bearing-velocity-angle of elevation system or something like that. Methods such as angle and dist would have to be rewritten, eyes would not work properly anymore etc.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Bot DNA
« Reply #59 on: April 28, 2008, 03:56:43 AM »
I don't have a good plan for 3D, to be honest.  Spherical coordinates (ie: two angles and a distance) are the most straightforward, but it's not necessarily the easiest to program with.  Of course, the current physics engine I'm working on is also written pretty strictly in 2D (moving to 3D would be possible, just some extra work), so I think 3D isn't going to be a feature any time soon.