Code center > Suggestions

Excess nrg -> body, excess body -> death

<< < (5/6) > >>

Endy:

--- Quote ---Take mimicry.  If conspec recognition is all about direct interogation of the genotype, then there will be select pressure in some cases to artifically decorate one's genotype to look like another's.   The genotype becomes the morph.
--- End quote ---

I've seen some of this in my own sims with co-evolving plants. They have a disturbing tendency to simply keep adding "eyes" until they hit on the right number.

Lately I've been using in/out and .memloc/memval to achieve something closer to a phenotype recognition. With enough arbitrary reference points it should be virtually impossible for another species to mimic easily.
(Which raises the question of just how arbitrary our own reference points are  )

Haven't had any of the above problems using this and the bots are given a freer reign to mess around with their dna.

You could also use something like:

--- Code: ---cond
*.out1 32000 !=
start
.out1 inc
stop

cond
*.refage *.in1 =
start
do some actions
stop
--- End code ---

This used with regualar methods would expose any bot trying to simply copy another, because it'd expose itself in the process.

Sims with apparent conspecs should eventually resolve themselves. Typically one of the bots will have some slight hunting advantage over the other, and win the match over time.

Endy:
Ran an experiment involving a species that was at least temporarily altruistic towards it's family. Whenever 32000 rnd equals 1 however they randomly change their out1 value. This seemed to happen on a fairly regular basis, presumably about every 16000 cycles. During the transition points the population droped rapidly until a new number dominated.

At first a completly(no kin recognition) canni species evolved from them. Next in response to the canni's attacks and inter-family fighting a completly altruistic species evolved.   They eventually won out. From the completly altruistic species a chamelon canni species evolved. The altruists were eliminated. Eventually the wasteful canni methods caused the population to wipe itself out.  

Haven't quite figured how to take the findings, Seems like a species needs to somehow maintain a level of altruism and infighting to avoid excessive cheaters.

I'm going to take a look at what effect seperating the shooting conspec check from the hunting ones has. From what I've seen the bots typically only break the shooting conditions, they don't often break the avoidance conditions.

I've also been working on a next of kin recognition system. (Parent, Self, Children) The complexity of moving the recognition numbers around is pretty hard though. I might just have them only recognize their own children, until the children themselves reproduce.This would be relativly easy, but leave them vulnerable to attacks from siblings and their own parents.

Numsgil:

--- Quote from: Endy ---Ran an experiment involving a species that was at least temporarily altruistic towards it's family. Whenever 32000 rnd equals 1 however they randomly change their out1 value. This seemed to happen on a fairly regular basis, presumably about every 16000 cycles. During the transition points the population droped rapidly until a new number dominated.
--- End quote ---

Neat.  Can we see the bot?  I'm interested in how you set it up.


--- Quote ---At first a completly(no kin recognition) canni species evolved from them. Next in response to the canni's attacks and inter-family fighting a completly altruistic species evolved.   They eventually won out.
--- End quote ---

This I don't understand.  Were they altruistic towards all other bots?  Did the altruism take the form of ignoring other bots?  Did this altruistic species evolve from the cannis or did it come from the original?


--- Quote ---From the completly altruistic species a chamelon canni species evolved. The altruists were eliminated. Eventually the wasteful canni methods caused the population to wipe itself out.
--- End quote ---

This is fundamentally interesting to me.  Situations where evolution eventually causes the extinction of all life seems deliciously ironic.  This is also fairly constant with experience I've had with enitor comesum, which is specifically designed to eat each other.  The only stable population sizes are in the 20 - 30 individual range on the largest sim size.  I think cannibalism wouldn't lead to eventual extinction if we had the opportunity to use significantly larger geographic sizes.  Part of the problem is that new mutations get well mixed into the general population, so there's no failsafe to prevent blind short sighted adaptations from totally destroying a population.

All in all, your results remind me of an iterative game arriving at a Nash Equilibrium.  In this case the equilibrium being an unmaintainable strategy.


--- Quote ---I've also been working on a next of kin recognition system. (Parent, Self, Children) The complexity of moving the recognition numbers around is pretty hard though. I might just have them only recognize their own children, until the children themselves reproduce.This would be relativly easy, but leave them vulnerable to attacks from siblings and their own parents.
--- End quote ---

I had an idea a long time ago of a species that stores a random number into out1 at birth, and copies the in1 to its out2 at birth.  If either the in1 or in2 of the other bot matches the current bot's out1 or out2, it wouldn't attack it.  So basically out1 is a unique ID and out2 is the ID of the parent.  Basically, this would result in bots not attacking parents, children, siblings, and some other close siblings.  If you combined this with a very large sim size and zero momentum mode, or high friction, so that geographically distinct areas with distinct family lines developed, I think you would be able to create lines of stable altruists.

Jez:
Impressive,

I would also like to see how you set the bot up to do this.

Endy:
Err... It's no problem re-writing it. I've been peering at this bot's and it's evolved brethren dna for a whole day. The problem is it still won't work, it uses epigenetic locations I've added to my version. (550-554 coppied instantly at birth). Mainly this was to get around the time requirements of the other epigenetic locations and the difficulty of using tie number to accuratly communicate the value.

--- Quote ---This I don't understand. Were they altruistic towards all other bots? Did the altruism take the form of ignoring other bots? Did this altruistic species evolve from the cannis or did it come from the original?
--- End quote ---

The altruistic species evolved from the original stock, and were tragically altruistic to all other bots.


--- Quote ---Part of the problem is that new mutations get well mixed into the general population, so there's no failsafe to prevent blind short sighted adaptations from totally destroying a population.
--- End quote ---

Which is why they fight amongst themselves   Multiple times duiring the revolution periods where most of the bots are largely canni's, a new King bot would emerge decended mainly from original stock. After the revolutions produce an obviously more fit bot I'd go in and figure out what made it so much better, or in the case of pure canni's worse.

The most benneficial change, was probably simply duplicating the avoidance and attacking genes. The first two test refage equality to in2, while the last two use in/out epeigenetic recognition.


--- Code: ---'Revolutionary Bot
cond
start
' Standard epigenetic starter
31999 rnd 1 add 550 store
.delgene inc
stop

cond
start
.out1 inc
32000 rnd
stop

cond
1 =
start
' 1/32001 chance that 550 will randomly change to something else,
' once that happens population begins a downward slide until the population stabilizes at a new number.
31999 rnd 1 add 550 store
stop

cond
*.robage 0 =
start
*550 .out1 store
stop

cond
*.eye5 45 >
*.out1 *.in1 !=
start
.shoot dec
stop

cond
*.nrg 5000 >
start
50 .repro store
*.nrg 5000 sub .strbody store
stop
' Avoid / Attack
cond
*.eye5 45 <
*.eye5 0 >
15 *.vel >
*.in2 *.refage !=
start
15 *.vel sub 2 div .up store
stop

' and this gene sets aim to well... aim. It was an avoidance gene, but along the way evolution had it's vote
' woks better than the original gene so it's been left this way
cond
*.eye5 0 >
*.refage *.in2 >
start
314 inc
*.aim add .setaim store
stop

cond
*.eye5 45 <
*.eye5 0 >
*.maxvel *.vel >
*.in1 *.out1 !=
start
*.maxvel *.vel sub 2 div .up store
stop

cond
*.eye5 0 >
*.in1 *.out1 =
start
314 rnd *.aim add .setaim store
stop

cond
*.eye5 0 =
start
314 rnd *.aim add .setaim store
stop
end
--- End code ---

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version