Author Topic: Ref sysvar command  (Read 3592 times)

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Ref sysvar command
« on: June 07, 2007, 01:50:41 PM »
I've been off of DB since I'm a bit dissapointed by the excessive amount of junk bots need to pile up to get some logical behaviour.

If it was for me, I would cut it down to 256 sysvars so almost all have some meaning; but since I guess that wouldn't happen, what if we let bots define their own sysvar reference? That, at least, would decrease the bias of the default distribution (remember that Five-O gene I found that did so many things at once, many evo bots would end repeating that gene).

546 1 ref would reference default sysvar 1 function from sysvar 546 (too).

.repro spam would be some of the favourite emerging genes. Highly evolved bots probably would create their own sysvar space with an optimal amount of meaningful memory locations.
« Last Edit: June 07, 2007, 01:51:42 PM by MacadamiaNuts »
Sometimes you win, and sometimes you lose...

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Ref sysvar command
« Reply #1 on: June 07, 2007, 05:16:47 PM »
How about increasing the sysvar space for vital sysvars? So for example .repro occupies 1 to 20, .up occupies the ten after that, and so on, with a much compressed number of vital sysvars (ie. merging .sx/.dx etc. since one is just the negative of the other) but over a larger area, making them more probable. More specialist sysvars, such as .trefvelsx etc. would only occupy one sysvar space, and so would be less probable to evolve (reflecting it's greater complexity of function as opposed to much more fundamental functions such as movement or reproduction (not that reproduction is in any way simple in real life).
« Last Edit: June 07, 2007, 05:17:26 PM by Elite »

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Ref sysvar command
« Reply #2 on: June 07, 2007, 08:36:24 PM »
Yah, there are a lot of specialized sysvars only good for hand made bots. Movement for example only needs an angle sysvar.

Another idea would be to reorder sysvars so the most critical go first. DB could cap the sysvar range (for mutations, not for running) and evolve different levels of complexity, like, minimal mode (32 sysvars) basic mode (64 sysvars), complex mode (128 sysvars), full mode (256 sysvars), extended mode (all sysvars and free memory locations).

It wouldn't be backwards compatible, but bots evolved on different levels would be compatible.
Sometimes you win, and sometimes you lose...

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Ref sysvar command
« Reply #3 on: June 08, 2007, 12:11:34 AM »
I was thinking we could perhaps have the program dynamically create additional memory for the bots as they used new locations. Not sure on the programming though.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Ref sysvar command
« Reply #4 on: June 08, 2007, 11:17:37 AM »
I've been toying with the implications of having a more graph based DNA.  Sysvars would be nodes in a graph that send data to genes through paths.  Sort of like a neural network, but not quite so linear.  That avoids alot of the issues with the number of frequency of sysvars.  More important sysvars would get more connections.

I'll write it up as a suggestion thread once I figure it out some more, but it's worth thinking about it now too.

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Ref sysvar command
« Reply #5 on: June 08, 2007, 04:17:56 PM »
What if genes were generic "method" structures, and the meaning of each particle in the structure was defined by the connections.

I use here $ as 'value of', # as constant, @ as memory handle.

DNA Elements (these would be the constants to use across all genes)
1: 1000
2: 2000
3: 50
4: 1
5: 2

Primary Gene 1 Connections:
1: robage
2: nrg
3: repro
4: up

Primary Gene 1: Structure
$1 #1 >    
$2 #2 >    
#3 @3 store
stop

Secondary Gene 2:
1: gene1 (this gene "logic" is applied to gene 1 "meaning")

Secondary Gene 2:
#1 @4 store
1 3 store (connects gene 3 to gene 1)
0 2 store (connects gene 2 to nothing)
stop

Constants and connections can be limited, so all DNA structures are like 1-32. You can easily add sysvars without breaking the old evolved code, and also draw graphically the DNA connections.
« Last Edit: June 08, 2007, 04:21:20 PM by MacadamiaNuts »
Sometimes you win, and sometimes you lose...

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Ref sysvar command
« Reply #6 on: June 08, 2007, 11:13:07 PM »
I can see the advantage of having a store of actual values that you reference against.  Allows you to abstract the data from the algorithm, so to speak.

Another idea I was playing with was severely limiting the range of values.  I played around with having bots only use math between -100 and 100, but found it a bit too limiting in certain cases.  Maybe something like -1000 to 1000.  Part of the problem in my eyes has been that different sysvars take and give different ranges of numbers.  If the operations mapped to a smaller and more uniform range, mutations would be better recieved.