Darwinbots Forum
Bots and Simulations => Bestiary => Interesting behaviour bots => Topic started by: Gambit on April 27, 2008, 07:37:24 PM
-
'If there is no food then look for some randomly.
cond
*.eye5 0 =
*.refeye *.myeye = or
start
314 rnd .aimdx store
10 .up store
stop
'peripheral vision left
cond
*.eye1 0 >
start
52 .aimsx store
*.refeye *.myeye !=
stop
peripheral vision right
cond
*.eye1 9 >
*.refeye *.myeye !=
start
52 .aimdx store
stop
'if you find something chase it
cond
*.eye5 0 >
*.refnrg 3000 >
*.refeye *.myeye !=
start
*.refveldx .dx store
*.refvelup 30 add .up store
stop
'Attack the food if its strong enough but dont kill it. Let it live so you can feed on it later. Though bigger bots may accidentally kill prey.
cond
*.eye5 50 >
*.refnrg 3000 >
*.refeye *.myeye !=
start
16 .shootval store
-1 .shoot store
*.refvelup .up store
stop
'poop
cond
*.waste 200 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop
'if you find something that isnt food (a relative) heal it if it needs
cond
*.eye5 50 >
*.refeye *.myeye =
*.refnrg 5000 <
*.nrg 5000 >
start
-2 .shoot store
stop
'if you get huge reproduce
cond
*.body 20000 >
start
40 .repro store
stop
'if you find a strong relative kill it (to control population)
cond
*.eye5 50 >
*.refeye *.myeye =
*.refnrg 10000 >
start
-1 .shoot store
stop
end
this bot is built around helping its species as a whole. it preserves food, heals the weak, kills the rich. its really kind of a communist actually...
it has peripheral vision to make it an effective hunter. but it lacks shells poisons venom or ties or any of that advanced stuff. it does very well against any packaged bots from previous versions and is the best bot I've made so far.
its biggest problem is it has a high tendancy to get this nasty mutational disease. it takes out the breeding condition causing it to breed itself to death and all the offspring breed. it locks up the program very quickly. if you turn off mutations you'll be amazed as its effectiveness though.
-
A very good bot, although you may need some body control in there.Try this:
*.nrg 3 div *.body sub dup .strbody store - .fdbody store
this makes sure body:nrg is always in a 1:3 ratio.
-
but I like em big.
and they only reproduce at 20000 body. thier body cuts in almost half after breeding
any idea how to make them less suseptable to that mutation I mentioned? they mutate changing the > symbol to a <
then the babies have babies and so on and it just goes nuts like 10k bots in a little cluster and it locks up.
-
One way would be to note down the DNA length, then use the condition *.dnalen number != to self-destruct any bot that mutated lengthwise. Another option would be to self-destruct when something happens that shouldn't happen
Having only big bots reproduce in such a social bot might seem like a bad idea because a.) There wouldn't be much to share nrg with and b.)Body only builds up automatically when nrg level is 32000, so if a bot comes along and starts eating yours, it'll never reproduce. It happens often that a huge bot will pop because it runs out of nrg, even though so much is stored in body mass.
-
OOOH!
whats the self destruct command!?!?....erm...please... lol
I wanted something like that originally. so that they produce 1 big offspring and die. I kinda wanted them to be single celled humans... sorta
and I'm okay with them popping. they limit thier own population that way. its designed to prolong the race. not much care for individuals.
-
There's lots of ways, you have to mess around a bit to see which works best. Some methods include shooting with shootval set to 32000, or making huge amounts of slime/shell/poison/venom.
Remember, one huge bot popping is a tremendous waste of nrg for the species; it should be sutaining a minimum amount of nrg so it has enough time to transfer its body mass on to others. Consider using -6 .shoot instead of -1 .shoot so you can directly feed of body mass. It's also about 10 times faster (I think).
-
The only way to ensure the mutation does not affect the bots long term, is to produce many bots by the original copy. The more copies made of your original, the better its chances for genetic survival. I am not sure how destroying itself will produce a real evolutionary result many programmers seek in their design. Change your reproductive requirements using numties or something besides body, say robage; bodies take way longer to rebuild over time, so reproduction is slower, yielding possibly 3-5 offspring a generation. No matter what, if you allow mutations there will be mistakes, but you need to use either harsher environment settings, or something along the lines of population control. I have cancerous problems with every bot I ever test, but the environment usually kills the bot from costs and over production without finding more energy to harvest.
As programmers we must utilize everything at our advantage, and that is DB. Mutations are meant to improve and specify your species to see how worthy the genetic code actually is, there will be many failures, so run with large populations, like 80 for large bots, and say 30 for smaller bots (dna len, not mass or radius). There's no need to cause a bot to become sucidal, this prevents many specific cospicuous relations, such as legumes.
-
legumes?
-
well they are supposed to self limit thier population
but I see what your saying about how they cant evolve.
but the mutation locks up my computer after only 20 cycles.
I'll try using the environment...
though I did find one use after saving the mutations DNA and patching some holes.... nighty night bascilla
ROFL
-
Often the conditionlessly reproducing bots kill themselves pretty quickly, you just have to wait a while. Other option is that it's simply more advantageous to be very small and have a large number of offspring and the bots with "nasty mutational disease" will take over the sim.
After seeing the latter happen in so many sims, in my more recent sims I've used bots that has no conditions for reproing in the first place. I'm hoping that if the enviroment calls for it some conditions will evolve on their on. Also it allows nice big stable populations to avoid problems with mutations in asexual populations (muller's rachet).
But actually conditionless reproing isn't conditionless. A bot with under 2 body can't reproduce, so bot's can't actually reproduce to death, it's the costs that get the small ones.
-
okay what kinda computer are all of you running?
it did help like EricL suggested to make the room larger but only for a bit. it locked up after 1000 offspring and about 4 seconds...
theres no time to see if its "more advantagous" because it just freezes.
-
okay what kinda computer are all of you running?
it did help like EricL suggested to make the room larger but only for a bit. it locked up after 1000 offspring and about 4 seconds...
theres no time to see if its "more advantagous" because it just freezes.
I'm running with 2,4 GHz dual core. The sim's got 400-700 bots most of the time with quite evem spread on size 12 sim and some veggies too. It run's at 8-16 cycles per sec, depending on bot and veggie density and sometimes drops to 1 c/s when veggies start to reproduce conditionlessly.
The conditionlessly reproducing veggies die out pretty fast though. The sim is set so that veggies get no body at all for free. As the veggies are fed by the kilobodypoint, small veggies get so little energy that they don't live long enough to trigger the body creating genes and never get to reproduce.
-
my processor is only like 1.7 ghz and only 512 mb ram...
so its my computer...
-
Yeah. It's quite possible to run sims with smaller populations though. It just takes a while longer to get over the conditionless reproducing bits with slower computer.
-
The memory more than anything. Where there are tradeoffs to make, I use memory to improve perf. This makes the working set of DB larger than you might expect. If you start paging out your working set, than the drive starts to be in the loop on memory access operations and the program might as well really be frozen.
If you are running unecessary stuff like Word on the machine, even if it's minimized, try closing it. Might help a little by freeing up a few meg and get you over the hump until the cancerous bots die...
-
you know... I do normally have the darwin bots folder open and notepad and word and sometimes IE because I work and test at the same time...
-
I must say that mine's a bit more cluttered. On the laptop screen I have DB open for testing bots, about 5 different bots, only one of which will ever stay, and the web browser. On my external monitor I have everything I need to run and record League results.
-
I'm not posting the DNA until someone spots it in action... I want to it be a surprise and I dont want counter measures made before it makes its move
but be on the look out for
Communitus_NotSoFriendlius
rofl like the name?
-
p.s. it is NOT the conditionless breeder one. its a whole new concept
-
Check out my new Ant Bot; it's not great, so don't run it in with others, but it's got very good behaviour.
Btw. I can tell you have something against me by the way you keep sending me possibly the worst bots I ever made or some random swarmer to spoil my sim, which is highly unsucessful. I have nothing against that, just as long as it does actually lead to you making better bots.
-
nothing against you.
I like to pick high targets. and yeah it is leading to better bots. friendly competition through simulatedly violent means.
here he is. CFs big nasty brother
I removed a few things and replaced with #'s. cant have you making an anti viral. and if you decide to use the delgene I already have a way around that.
'Communitus_NotSoFriendlius
'Community Bully
'Communitus_Friendlius's mean older brother
'I took some suggestions from some very helpful master bot makers
'And added a self destruct virus for use on hostile heterotrophs
'May hit plants but isnt meant to
'They look out for each other and will heal weaker ones in the group
'virus nonactivator
cond
*.robage 0 =
start
# ### store
stop
'make the virus
cond
*.vitmer 0 =
start
3 .mkvirus store
stop
'a virus for enemies
cond
# *### !=
*.vel 0 !=
start
*.thisgene .mkvirus store
200 .vshoot store
-2 .shoot store
1 .shootval store
stop
'If there is no food then look for some randomly.
cond
*.eye5 0 =
*.refeye *.myeye = or
start
314 rnd .aimdx store
10 .up store
stop
'peripheral vision left
cond
*.eye1 0 >
*.refeye *.myeye !=
start
52 .aimsx store
stop
peripheral vision right
cond
*.eye1 9 >
*.refeye *.myeye !=
start
52 .aimdx store
stop
'if you find something chase it
cond
*.eye5 0 >
*.refeye *.myeye !=
start
*.refveldx .dx store
*.refvelup 30 add .up store
stop
KILL!! lol
cond
*.eye5 50 >
*.refeye *.myeye !=
start
16 .shootval store
-6 .shoot store
*.refvelup .up store
stop
'poop
cond
*.waste 200 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop
'if you find something that isnt food (a relative) heal it if it needs
cond
*.eye5 50 >
*.refeye *.myeye =
*.refnrg 5000 <
*.nrg 5000 >
start
-2 .shoot store
stop
'eat some of your body fat
cond
*.nrg 5 div
*.body sub dup
start
.strbody store - .fdbody store
stop
'reproduce
cond
*.nrg 10000 >
start
40 .repro store
stop
'if you only have a bit of energy and are attacked shoot a little virus
cond
*.eye5 0 >
*.refeye *.myeye !=
*.pain 1 >
*.nrg 6000 <
start
*.refveldx .dx store
*.refvelup 30 add .up store
25 .vshoot store
stop
'if you have over 6k energt and are attacked go all out on the virus
cond
*.eye5 0 >
*.refeye *.myeye !=
*.pain 1 >
*.nrg 6000 >
start
*.refveldx .dx store
*.refvelup 30 add .up store
900 .vshoot store
stop
-
Not bad.
I suggest making the virus depend on your energy so you don't die when firing it eg.
*.nrg 2 div .vshoot store
This way big bots can also shoot further.
The problem with replicating inside your host is that they can target out the virus with *.mkvirus .delgene store. You may want to del their genes first eg.
*.thisgene 1 rnd 2 mult -- add .delgene store
This will randomly alternate between deleting the previous gene and the next gene.
If you really want the virus to kill, put 32000 into vshoot and cut out the unnecessary stuff eg. the shoot bit. You do know the 1 .shootval store only dampens the shot? (Not sure on this one, but I think the default is 100).
The 3 .mkvirus store is also a bit dodgy, because a virus is randomly inserted, and the virus may move from gene #3 to gene #4 or something like that. Make a temporary variable called vgene and in the gene before the virus put *.thisgene ++ .vgene store and then replace 3 with *.vgene.
Yet another problem is that if the virus inserts itself before the safety gene and the bot reproduces...
You should be able to figure that one out by yourself.
-
the -2 shoot is to slowly bleed them while they make more viruses. 32000 is an instant kill and it doesnt have time to charge the virus timer.
also can venom be used to store a number in delgene? nullifying it.
-
<sigh> I tried it dozens of times, It doesn't work.
I found the ultimate conspec system that also kills mutants at the same time. Interested?
-
<sigh> I tried it dozens of times, It doesn't work.
I found the ultimate conspec system that also kills mutants at the same time. Interested?
hmmmm YES
lol
so you cant nullify delgene... maybe with poison? set it to didly. memory shot?
<sigh> I tried it dozens of times, It doesn't work.
I found the ultimate conspec system that also kills mutants at the same time. Interested?
hmmmm YES
lol
so you cant nullify delgene... maybe with poison? set it to didly. memory shot?
-
I think the only way to manipulate .delgene is from within.
Here's the conspec:
'put this in init gene
.dnalen .memloc store
cond
*.dnalen *.memval !=
'Other conditions here
start
'Your code here....
stop
this checks the bots' DNA lengths. You may want to combine this with good ole I/O channel conspecs.
-
hmmmm I dont recognize any of those variables so I'm lost... is there a complete list?
oh wait... I get it now. anything with the same length of dna is good. otherwise its now. that also means similar mutations will get along... BUT most of the most problematic mutations (for me anyway) involve changing ">" to "<" which doesnt alter the length.
also is there anything that drains slime?
and there is 3 Communitus species now... none of them are really that much greater than the others. they all preform different functions. so should I make them work togethor or at least get along? I think I'd have to use out and in for that...
are there any other cases of entirely different species recognizing each other that I could use as an example?
-
OH! I found the big list of sys vars... THERES SEXUAL REPRODUCTION!!!
and Communitus Friendlius can use the .totalmyspecies to limit its population! it just wont breed anymore after theres a certain number!
rofl when I found that link it was like christmas...
now I just gotta get all my school work done... (cyber schooled)
-
okay would this gene work to keep the ratio of Communitus_Friendlius to all other bots at 1:5? I'm still working on mastering syntax...
cond
*.totalbots .totalmyspecies div 5 <
*.nrg 15000 >
start
40 .repro store
stop
-
okay that doesnt work. so I need help there (please). I want the number of Communitus Friendliuses to grow and shrink based on the total amount of robots.
and I have
Communitus_Friendlius
Communitus_NotSoFriendlius
and Communitus_Meanus
all recognizing each other with a 2 part conspec system.
-
You forgot a pointer and reversed a couple of values and I think you reversed the whole thing in general
I think this is what you want :
cond
*.totalbots *.totalmyspecies 5 div >
*.nrg 15000 >
start
40 .repro store
stop
This will cause it to reproduce whenever it's species is below 1/5 of the total population and it has 15000 energy...
Also if you want a very steady conspec, I was thinking it would be possible to have only inline conditions for the offensive genes and include part of the conspec in each hostile gene. This could be an out value in each if you're not using them, or you could add some values together that form the right conspec.... either way the idea is to make sure that if the condition to your action changes, so will the conspec value...
Haven't thought about an exact way of doing it, but it should be possible without too much trouble I think...
-
since this is now about multiple bots and no longer just a single species I'm goona move all discussion on this to the bot tavern.
I'll try that gene.
-
Ha ha yeah I see why that didn't work...
cond
*.totalbots *.totalmyspecies 5 mult >
*.nrg 15000 >
start
40 .repro store
stop
would work...
but the one Eric posted in the other topic is better since it represents the actual percentage and you could replace the 10 with a constant, making it easy to tweek it.
def popPercent 10
cond
*.totalmyspecies 100 mult *.totalbots div .popPercent >
*.nrg 15000 >
start
40 .repro store
stop