Bots and Simulations > Bot Tavern
Universal Species Recog Gene Protocol (F1 conditions)
rsucoop:
Creating a ref-less conspec recognition system:
allocate 100 variables and you can have 25 bots stored for conspec recognition. Since we can assume die-offs will be often, simply overwiting the first bot identified would be ok. So we have 25 variables to record a name or conspec number (depending on what out is used for conspec with the individual, I like to use out1 as the botname for identity). Any time a bot is seen, several things are recorded into one variable. The first question asked, have I met this bot before? If yes recall information on bot; if no create new profile for the bot. Is the bot moving towards me? Is the bot changing out1? -If yes, then the bot is not a conspec, but might be neutral. Is the bot facing me and I'm shooting a value of -2 towards it? If yes, its an enemy; if no no change. Am I tied to the bot? If yes; is the bot trying to overfeed (I.e. trefpain != mypain) Destroy with shots and tie feeding: if no allow feed. If no, tie to the bot once time seen has extended to 50 cycles. Once all of these have been evaluated, a value is stored in the 25 identity-profile values.
Protocol for genes looks like this:
New bot? - No Recall genes end protocol
Yes - Is the bot shooting me?
No - Bot is neutral or friendly
Yes - Bot is enemy
Am I tied to the bot?
No - Have I known this bot for say 50 cycles?
No - Play it safe, wait to tie
Yes - Tie to the bot
Yes - Is the bot feeding *.trefpain > (*.pain - external factors precalulated every previous cycle in different gene protocol
No - Allow for feed
Yes - Shoot and over tie feed the enemy - store as enemy
Is the bot changing the out1?
No - Bot is friendly
Yes - Bot is different species, possibly neutral
Is out1 = in1
No - Neutral/Friendly
Yes - Bot is enemy or identity theft
Store Species info (0 - neutral, -1 enemy, 1 friend, 2 unknown)
We give the bot the choice to be confused, when this happens one of the factors that was not determined is checked with other values: Out1 changing but not agressive, check the DNA Length if stored in .in value. Ties not remaining? Beging a readtie only protocol to check for errors in the DNA of a familiar.
The remaing 50 variables necessary: Bottime, dnalen/random value
Then from their about 25 variables for read and write commands are necessary for identifying what has been stored in the Randomvalue locations.
The External factors would be a -2 in the direction != to the angle towards the individual. Tie feeds from other conspecs or potential enemies. Attempting to limit numties to 4 conspecs only 8 more values are commited to external factors, 4 tie-specs (found in familiar values), 4 tie-feed conspecs.
The more effective the bot is to be, the more memory requried. The above protocol works for Slim Evo, because when I start with only 1 Sliom Evo 3-2, only about 20-30 bots are created before major kill offs begin. As mutations occur, the entire system could become ineffective, or may become overly-effective depending on what check valuesw are changed. Importantly, no change in refeye will not confuse this type of check system. However, a bot firing random values into random locations might really confuse the Species Recog genes.
Moonfisher:
I'm not sure if I got the point here, maybe mutations are too destructive to maintain what I have in mind...
Either way, if you just need a universal conspec, why not just do this :
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
*.eyef 0 !=
start
*.body *.nrg add *.aim sub .out1 store
stop
cond
*.eyef 0 !=
*.refbody *.refnrg add *.refaim sub *.in1 !=
start
'Kill
stop
You could do the same using .memloc/.memval ofcourse...
And as always someone could just copy the exact same values and algorith that you're using.
If you're not going for cross species you could just add *.totalmyspecies to the equation to make sure people can't duplicate it.
If I'm completely missing the point here, then this could at the very least be usefull for short bots.
I can't think of a way to fool this method, unless someone can think of a way I'll probably use it if I decide to keep working on Pacifist.
Numsgil:
The only downside is that you're storing a new value every cycle, which could concievably cost quite a bit of nrg to maintain.
But all conspec systems break down when mutations are allowed, because a bot could mutate to attack friends, and still maintain the appropriate conspec code.
rsucoop:
--- Quote from: Moonfisher ---I'm not sure if I got the point here, maybe mutations are too destructive to maintain what I have in mind...
Either way, if you just need a universal conspec, why not just do this :
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
*.eyef 0 !=
start
*.body *.nrg add *.aim sub .out1 store
stop
cond
*.eyef 0 !=
*.refbody *.refnrg add *.refaim sub *.in1 !=
start
'Kill
stop
You could do the same using .memloc/.memval ofcourse...
And as always someone could just copy the exact same values and algorith that you're using.
If you're not going for cross species you could just add *.totalmyspecies to the equation to make sure people can't duplicate it.
If I'm completely missing the point here, then this could at the very least be usefull for short bots.
I can't think of a way to fool this method, unless someone can think of a way I'll probably use it if I decide to keep working on Pacifist.
--- End quote ---
I like it. I think it would last for many generations. That will make me rethink the Universal Language Translation protocols.
Navigation
[0] Message Index
[*] Previous page
Go to full version