Darwinbots Forum
Bots and Simulations => DNA - General => Topic started by: Ramiro on September 02, 2006, 09:55:20 AM
-
When does it ends? Appart from cannibots that donĀ“t recongnize even its own offspring, is there a set amount of mutations for a DBot to stop reconnizing its original form? How can I make a bot that has suffered a mutation to stop reconnizing its parent as CONSPEC but still recongnizing its childs?
I would like to try simulations with fast evolution without setting mutations rates too high wich are eventually deleterious to al DBots.
-
could .mrepro be used instead of normal .repro?
-
If you're using eyes for conspec recognition, then whenever a bot changes the number of eyes it has in its DNA, it will be recognized as an enemy.
Each conspec recognition system has a different robustness to population genetic drift. You'll just have to play and see what you come up with.
-
How can I make a bot that has suffered a mutation to stop recognizing its parent as CONSPEC but still recognize its children?
Cannibots quite often lose their cospec recognition by deleting or changing it so it doesn't work.
I.e. cond
*.refeye *.myeye !=
start
-1 .shoot store
stop
changes to something like
cond
*.refeye *.robage !=
start
-1 .shoot store
stop
Which means that it won't recognise anything as a friend really but all the other bots using the *.refeye ID would still see it as a friend.
If one of the bots mutates so that it changes the number of eyes it has then you would get the effect you are looking for. The parent that gets the mutation would recognise all it's offspring and vice versa while seeing all the other (unmutated amount of eyes) bots as enemies.
The problem you run into then is that it will probably be shot at birth by its unmutated parent, if it survives it's going to have a lot of problems, it is now one bot on a screen full of enemies, life probably isn't going to be very long for the poor little critter!
For this reason you are unlikely to see a truly 'different species' develop, the mutations that survive, the ones that don't get killed off at birth, are more likely to give you a species that imitates the rest of the bots on the screen and use cannabilism or something to gain an advantage.
Even using .dnalen and all the refvars for ID would miss mutated bots that had changed an instruction rather than adding of removing one. Perhaps if you used the mutation rate button to zero all the 'change' mutations it might work.
Something like a .parent/.baby recognition system would be cool, I could see that being a lot of fun to use in evo sims and possibly changing the mutation trends we normally see.
-
Something like a .parent/.baby recognition system would be cool, I could see that being a lot of fun to use in evo sims and possibly changing the mutation trends we normally see.
Exactly, that kind of sysvars I was looking for. Perhaps for a future edition. And maybe .grandparent / .grandson too (or a variable number of generations)
-
Any kind of individual bot recognition could have interesting results. I wonder if holding a grudge would be a survival trait.
-
I would certainly imagine so. It would be a very good way to guard against cannibals without becoming one yourself.
-
Yay, another refvar!
*.howmanyofmyfriendshaveyoukilled
Seriously though, good idea.
-
This is my cannibot ^^
Brothers and parents are conspecs, but distant cousins and great-grandparents might not be.
Someone once posted about a sim where all their bots evolved to look in the same direction, because any bot who ended up looking in a different one got killed off. Any cannibot that attacked the ones looking in the same direction reduced the number of bots looking in the same direction, so it was selected against.
This is based on that idea.
'Attacks conspecs, but only the ones who are more distant relatives
'The theory is that a cannibot who also attacks his close relatives
'wont have anyone to protect them against them against their cousins
cond
*.robage 0 =
start
'the value initiallystored in 971 determines how well he gets along with his family
'the higher the number, the more distant the relatives need to be in order to get attacked
50 971 store
.delgene inc
stop
cond
*.robage 0 =
start
971 .memloc store
stop
cond
*.robage 2 =
start
*971 2 rnd add 1 sub 971 store
stop
cond
*.eye5 0 =
*.memval *971 %= or
start
5 .up store
314 rnd .aimdx store
stop
cond
*.eye5 0 >
*.eye5 40 <=
*.memval *971 !%=
start
*.refvelup 10 add .up store
*.refveldx .dx store
stop
cond
*.eye5 40 >
*.memval *971 !%=
start
-6 .shoot store
*.refvelup .up store
stop
cond
*.nrg 10000 >
*.robage 100 >
start
30 .repro store
stop
-
I had a similar idea but never made a bot for it.
Looks interesting.