Darwinbots Forum
Bots and Simulations => DNA - General => Topic started by: peterb on April 02, 2010, 06:06:19 AM
-
I'm trying to figure out a formula for shootval so that the bullets are shot with the right distance.
But on the wiki sysvars i dont read how it behaves.
Here on the forums i read some words about log2(distance) ??
However log2 is not an operator in DarwinBots , what might come close to it is bit operation >> ???
So far i failed to write a good formula and searched the forums and wiki, and the beastairy.
Has someone already solved it. ??
How to perfectly shoot at something with the right distance.
Also i think .mass impacts a shot distance ??, but 'm not sure but bot size and shotlength dont seam to compare
I can figure out how to get the distance and angle with :
*.refxpos *.refypos dist .edist store
*.refxpos *.refypos angle .setaim store
-1 .shoot store
But now how to shoot exactly to it ? (or with a margin : *.edist 10 add .edist store)
-
Ok, i worked on this for a little bit, scraped edist as it's a waste of energy and used unconditional logic also for effciency, basically if something is just past the range of the bot or equal to it doubles the value of .shootval starting at -2 (it is possible to store 0) it shots at things which are up to five times the distance of a base shot length though I don't know what that is... anyways hope this helps
def XXX 100
'XXX = how far a shot goes at shootval 0, you will have to work this out yourself
start
*.eyef 0 !=
*.refxpos *.refypos angle .setaim store
-2 *.refxpos *.refypos dist *.XXX sub abs sub sgn ++ sgn mult
-2 *.refxpos *.refypos dist *.XXX 2 mult sub abs sub sgn ++ sgn mult add
-4 *.refxpos *.refypos dist *.XXX 3 mult sub abs sub sgn ++ sgn mult add
-8 *.refxpos *.refypos dist *.XXX 4 mult sub abs sub sgn ++ sgn mult add
-16 *.refxpos *.refypos dist *.XXX 5 mult sub abs sub sgn ++ sgn mult add
.shootval store
'btw -32 is the lowest which can be stored in shootval
.shoot dec
stop
-
Ok, i worked on this for a little bit, scraped edist as it's a waste of energy and used unconditional logic also for effciency, basically if something is just past the range of the bot or equal to it doubles the value of .shootval starting at -2 (it is possible to store 0) it shots at things which are up to five times the distance of a base shot length though I don't know what that is... anyways hope this helps
def XXX 100
'XXX = how far a shot goes at shootval 0, you will have to work this out yourself
start
*.eyef 0 !=
*.refxpos *.refypos angle .setaim store
-2 *.refxpos *.refypos dist *.XXX sub abs sub sgn ++ sgn mult
-2 *.refxpos *.refypos dist *.XXX 2 mult sub abs sub sgn ++ sgn mult add
-4 *.refxpos *.refypos dist *.XXX 3 mult sub abs sub sgn ++ sgn mult add
-8 *.refxpos *.refypos dist *.XXX 4 mult sub abs sub sgn ++ sgn mult add
-16 *.refxpos *.refypos dist *.XXX 5 mult sub abs sub sgn ++ sgn mult add
.shootval store
'btw -32 is the lowest which can be stored in shootval
.shoot dec
stop
doesnt seam to do the trick,
I created a simple test bot, used some test valeus for xxx
And tried to feed it some vegie in front to see when it starts shooting at the vegie
You used a lot of complex code in the math can you clarify it simply is it a if x > then rule ?
hmm myabe directly edit a veggie to investigate how shootval works
'test
def etarget 60
def edist 61
def XXX 100
cond
*.eye5 0 >
start
*.refxpos *.refypos dist .edist store
*.refxpos *.refypos angle .setaim store
'positive longer
'negative smaller
'XXX = how far a shot goes at shootval 0, you will have to work this out yourself
1 .xxx store
-2 *.refxpos *.refypos dist *.XXX sub abs sub sgn ++ sgn mult
-2 *.refxpos *.refypos dist *.XXX 2 mult sub abs sub sgn ++ sgn mult add
-4 *.refxpos *.refypos dist *.XXX 3 mult sub abs sub sgn ++ sgn mult add
-8 *.refxpos *.refypos dist *.XXX 4 mult sub abs sub sgn ++ sgn mult add
-16 *.refxpos *.refypos dist *.XXX 5 mult sub abs sub sgn ++ sgn mult add
.shootval store
'btw -32 is the lowest which can be stored in shootval
.shoot dec
stop
-
Just realized I was a bit silly... rather than doing
sub sgn ++
(which returns 1 if the two past values are >= to each other and 0 if they aren't) I wrote
sub abs sub sgn ++
However that still doesn't cure the problem (it does however remove another one from apearing), I tried this code which didn't seem to store any values (?) but still shoot a far range. That's annoying as I can't check to see wether this is working or not.
*.refxpos *.refypos dist *.XXX >= -2 .shootval store
*.refxpos *.refypos dist *.XXX 2 mult >= -4 .shootval store
*.refxpos *.refypos dist *.XXX 3 mult >= -8 .shootval store
*.refxpos *.refypos dist *.XXX 4 mult >= -16 .shootval store
*.refxpos *.refypos dist *.XXX 5 mult >= -32 .shootval store
also I checked the locations by putting
-2 *.refxpos *.refypos dist *.XXX sub sgn ++ sgn mult .101 store
and
*.refxpos *.refypos dist *.XXX >= -2 .shootval store .101 store
no values were stored again... I'm really confudled by this one... I checked over the code multiple times and don't understand why it won't work... are you sure *.refxpos *.refypos dist works?
P.S. I think I've worked on this to long...
-
Just realized I was a bit silly... rather than doing
sub sgn ++
(which returns 1 if the two past values are >= to each other and 0 if they aren't) I wrote
sub abs sub sgn ++
However that still doesn't cure the problem (it does however remove another one from apearing), I tried this code which didn't seem to store any values (?) but still shoot a far range. That's annoying as I can't check to see wether this is working or not.
*.refxpos *.refypos dist *.XXX >= -2 .shootval store
*.refxpos *.refypos dist *.XXX 2 mult >= -4 .shootval store
*.refxpos *.refypos dist *.XXX 3 mult >= -8 .shootval store
*.refxpos *.refypos dist *.XXX 4 mult >= -16 .shootval store
*.refxpos *.refypos dist *.XXX 5 mult >= -32 .shootval store
also I checked the locations by putting
-2 *.refxpos *.refypos dist *.XXX sub sgn ++ sgn mult .101 store
and
*.refxpos *.refypos dist *.XXX >= -2 .shootval store .101 store
no values were stored again... I'm really confudled by this one... I checked over the code multiple times and don't understand why it won't work... are you sure *.refxpos *.refypos dist works?
P.S. I think I've worked on this to long...
Hmmm i think your close to something... i have also not figured it out yet.
the problem of distance and strange valeus for it..
And check against it and then to set valeu to (32 /16 /8 /4 /2 ....-2 -8 -16)...
Maybe something based on this : ?
-6000 + distanse add 0 floor sgn 32 mult store .shootval store
i'm not sure because it got to work against multiple distances and multiple valeus
Maybe each line that passes ok sould add or substract to something until you reach 24 /16/.../.../... etc.
A nice thing of it is that short shots (when you bump into someone) become more powerfull.
The long shots cost more, but on the otherside sometimes you can hun a faster bot that way.
Also the both grows its shooting range changes.. hmm maybe 6000 + or mult a factor ? the factor is not that clear to me.. its inside shots.bas in the code, but its strange looking.
I wonder why shootval works that complex, why has it been made to such a complexity level
-
I was thinking...
Since the dist command does require a lot of complex calculations, is it the right thing to do ?
Or maybe use eye5 as its results isn't neither straightforward too (the closer the faster the number increases)
Well I'm not sure but i got these values from a starting cell
Still i got the problem of growing size of cells.. well eye5 grows with it maybe it solves it.
I collected from a test bot, using a lot of my time the following results
They are as abest as i could get it but I'm sure its not 100% correct. (90% at best)
dist eye5 shootval
1600 1 -32
1375 2 -14
1034 3 -9
989 4 -7
904 5 -6
830 6 -5
Then I found Eureqa some kind of free math formula finding program
It really is amazing it can find formulas behind data sets... (so we require less scientists ??)
It does not have als darwinbots calculation options, no binary operators but a lot of others, so i had to limit it down.
Aldo couldn't use cos and sin functions.
It turned out that eye5 had a more easy relation to this then the distance value, resulting formula's looked better.
Now based on the eye5 valeu it found the folowing relation between shootval :
A lot depend on how accurate my values are .. and thats a bit of problem i just tried to do my best here.
Well the program found these relations between eye5 :
]f(v) = 21.6136/(0.298103 - eye5) - 1.21081
or
f(v) = 25.0438/(0.217382 - eye5)
But now i wonder, can i type these numbers into darwinbots?
Or does it only work wit rounded integer valeus ?????
-
...
But now i wonder, can i type these numbers into darwinbots?
Or does it only work wit rounded integer valeus ?????
only when you push to the stack you need an int <32000
0.12*a = 12*a/100
BTW: you can look up the exact formulas in the source code
-
I tested
def f 100
cond
start
2504380 21782 *.eye5 100000 mult sub div 100000 div .f store
stop
It shows up as overflow, invalid bot so obviously numbers have to be under 32000 so I tried
def f 100
cond
start
25.04380 0.21782 *.eye5 sub div .f store
stop
0 is stored, so I went halfway so the numbers were under 32000
def f 100
cond
start
25043.8 217.82 *.eye5 1000 mult sub div .f store
stop
This is where I had the most sucsess, 115/109 is stored by default when nothing is in view (i'm unsure of at which point it changes) when another veg first comes into view -32 is stored first for 115 and -30 is stored for 109, I cannot remember the sequence for 115 though it was definiteely diffrent from the 109 one which goes -13, -9, -6, -5, -4, -3, -2, -1, 0 as the bot gets closer to the veg. It's getting there but slightly eratically anyways I tried plugging it into both of our codes combined to make
'test
def edist 61
def XXX 100
cond
*.eye5 0 >
start
25043.8 217.82 *.eye5 1000 mult sub div .edist store
'positive longer
'negative smaller
'XXX = how far a shot goes at shootval 0, you will have to work this out yourself
4 .XXX store
*.edist - *.XXX >= -2 .shootval store
*.edist - *.XXX 2 mult >= -4 .shootval store
*.edist - *.XXX 3 mult >= -8 .shootval store
*.edist - *.XXX 4 mult >= -16 .shootval store
*.edist - *.XXX 5 mult >= -32 .shootval store
'btw -32 is the lowest which can be stored in shootval
stop
cond
start
.shoot dec
stop
Good news
As the bot gets closer to the veg the value of shootval decreases and it can shoot at multiple distances based on this and make the correct correlation between distance and shootval.
Bad news
-16 doesn't ever show up in shootval, also -4 and -8 fall just short of the veg, I think it just means XXX just needs some jiggery pokery. Another thing is .shoot dec and *.refxpos *.refypos angle .setaim store have started behaving strangely, .shoot dec randomly fires short bursts when it sees a veg unless it's put in a gene of it's own and *.refxpos *.refypos angle .setaim store aims towards the point 0,0 in the top left hand corner whether it's looking at another bot/veg or not which tells me it isn't collecting data properly. Finally when something is a long way away it uses 5 store commands and always uses 5 conditionals which are a waste of energy... could be shrunk down using conditionless logic however. We are very almost there...
-
i test usualy in phases, trying to exploit new ideas and then later combine them
i had to do the aiming to zero degrees, just for testing the ranges to get the valeus for eye5 and shootval
Aiming can be restored this way :
*.refxpos *.refypos angle .setaim store
-
i test usualy in phases, trying to exploit new ideas and then later combine them
i had to do the aiming to zero degrees, just for testing the ranges to get the valeus for eye5 and shootval
Aiming can be restored this way :
*.refxpos *.refypos angle .setaim store
I tried that, it works for bots but not veggies
-
got to keep integers under <32000
so
25.0438 / (0.217382 -e5)
3200 /25.0438 = ~1277
so it equals > (25.0438 *1277) / ((0.217382 *1277)-e5 *1277)
= 31980 / ( 278 -( e5 * 1277)
----------------------------------------------
In DB language that is (using clacula as a temp)
278 - *.eye5 .calcula store
31980 *.calcula div .shootval store
i will attach a bot with this forumula contained (but remove the last gene of that bot dont let it repro, thats still crap inside this bot).
-
got to keep integers under <32000
so
25.0438 / (0.217382 -e5)
3200 /25.0438 = ~1277
so it equals > (25.0438 *1277) / ((0.217382 *1277)-e5 *1277)
= 31980 / ( 278 -( e5 * 1277)
----------------------------------------------
In DB language that is (using clacula as a temp)
278 - *.eye5 .calcula store
31980 *.calcula div .shootval store
i will attach a bot with this forumula contained (but remove the last gene of that bot dont let it repro, thats still crap inside this bot).
...hmmm for some reason its not ok, did i make an error here above ?, i do believe the math retrieved from eureqa was ok 25.0438 / (0.217382 -e5)
-
Ah... I've not checked here recently though I did go ahead with the programming in the direction I was taking and have had a good result, the following code is super-efficient using only 0.04 nrg with F1 default settings when the position of the bot if in sight changes as only a single store is activated at any one time and conditionless logic is used. It computes for every eye rather than just eye5 and also takes into account the width of every eye as as they become narowrer the sight becames longer-ranged, storing a positive value into .power will allow you to make a powerful shot for when close to the enemy though I recomend for effeciency you find every instance of *.power and replace wi with a number, unfortunetly it's fairly large so if DNA upkeep is charged (which is hardly ever the case though you never know) it will all of a sudden become fairly ineffcient, anyways tell me what you think. Not bad for 34 hours development time...
25044 217 *.eye1 600 mult sub div *.eye1width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye1width sgn - mult *.focuseye -4 sub sgn abs -- - mult *.eye1 sgn mult store
25044 217 *.eye1 600 mult sub div *.eye1width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye1width sgn mult *.focuseye -4 sub sgn abs -- - mult *.eye1 sgn mult store
25044 217 *.eye1 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye1width sgn abs -- - mult *.focuseye -4 sub sgn abs -- - mult *.eye1 sgn mult store
25044 217 *.eye2 600 mult sub div *.eye2width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye2width sgn - mult *.focuseye -3 sub sgn abs -- - mult *.eye2 sgn mult store
25044 217 *.eye2 600 mult sub div *.eye2width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye2width sgn mult *.focuseye -3 sub sgn abs -- - mult *.eye2 sgn mult store
25044 217 *.eye2 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye2width sgn abs -- - mult *.focuseye -3 sub sgn abs -- - mult *.eye2 sgn mult store
25044 217 *.eye3 600 mult sub div *.eye3width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye3width sgn - mult *.focuseye -2 sub sgn abs -- - mult *.eye3 sgn mult store
25044 217 *.eye3 600 mult sub div *.eye3width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye3width sgn mult *.focuseye -2 sub sgn abs -- - mult *.eye3 sgn mult store
25044 217 *.eye3 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye3width sgn abs -- - mult *.focuseye -2 sub sgn abs -- - mult *.eye3 sgn mult store
25044 217 *.eye4 600 mult sub div *.eye4width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye4width sgn - mult *.focuseye ++ sgn abs -- - mult *.eye4 sgn mult store
25044 217 *.eye4 600 mult sub div *.eye4width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye4width sgn mult *.focuseye ++ sgn abs -- - mult *.eye4 sgn mult store
25044 217 *.eye4 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye4width sgn abs -- - mult *.focuseye ++ sgn abs -- - mult *.eye4 sgn mult store
25044 217 *.eye5 600 mult sub div *.eye5width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye5width sgn - mult *.focuseye sgn abs -- - mult *.eye5 sgn mult store
25044 217 *.eye5 600 mult sub div *.eye5width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye5width sgn mult *.focuseye sgn abs -- - mult *.eye5 sgn mult store
25044 217 *.eye5 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye5width sgn abs -- - mult *.focuseye sgn abs -- - mult *.eye5 sgn mult store
25044 217 *.eye6 600 mult sub div *.eye6width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye6width sgn - mult *.focuseye -- sgn abs -- - mult *.eye6 sgn mult store
25044 217 *.eye6 600 mult sub div *.eye6width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye6width sgn mult *.focuseye -- sgn abs -- - mult *.eye6 sgn mult store
25044 217 *.eye6 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye6width sgn abs -- - mult *.focuseye -- sgn abs -- - mult *.eye6 sgn mult store
25044 217 *.eye7 600 mult sub div *.eye7width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye7width sgn - mult *.focuseye 2 sub sgn abs -- - mult *.eye7 sgn mult store
25044 217 *.eye7 600 mult sub div *.eye7width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye7width sgn mult *.focuseye 2 sub sgn abs -- - mult *.eye7 sgn mult store
25044 217 *.eye7 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye7width sgn abs -- - mult *.focuseye 2 sub sgn abs -- - mult *.eye7 sgn mult store
25044 217 *.eye8 600 mult sub div *.eye8width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye8width sgn - mult *.focuseye 3 sub sgn abs -- - mult *.eye8 sgn mult store
25044 217 *.eye8 600 mult sub div *.eye8width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye8width sgn mult *.focuseye 3 sub sgn abs -- - mult *.eye8 sgn mult store
25044 217 *.eye8 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye8width sgn abs -- - mult *.focuseye 3 sub sgn abs -- - mult *.eye8 sgn mult store
25044 217 *.eye9 600 mult sub div *.eye9width -17 div ++ mult 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye9width sgn - mult *.focuseye 4 sub sgn abs -- - mult *.eye9 sgn mult store
25044 217 *.eye9 600 mult sub div *.eye9width 80 div ++ div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye9width sgn mult *.focuseye 4 sub sgn abs -- - mult *.eye9 sgn mult store
25044 217 *.eye9 600 mult sub div 5 mult 3 div dup sgn abs *.power mult add dup *.shootval sub sgn abs .shootval mult *.eye9width sgn abs -- - mult *.focuseye 4 sub sgn abs -- - mult *.eye9 sgn mult store
-
Wow. Does it work? (cant test it because I'm not on the right computer.) You might have invented the most accurate shooting gene ever.
-
Wow. Does it work? (cant test it because I'm not on the right computer.) You might have invented the most accurate shooting gene ever.
I belive it does... not 100% accurate however as eyes only read back a value from 0 to 100 thus if something is 66.698 in an eye shootval will only be assigned to something like 67, the effect is more noticable at eye values 1-10 on eyewidth -34 where there is a small possiblity of error though quite small and it should overjudge rather than underjudge so it hits... in theory anyways... also idealy I would use 25043.8 and 217.82 though because of problems with darwinbots I must use 25044 and 218 instead. By the way it only calculates how far a shot should travel... it doesn't bother with aim or anything like that before you decide I'm a genius.
-
...hmmm for some reason its not ok,
did i make an error here above ?, i do believe the math retrieved from eureqa was ok 25.0438 / (0.217382 -e5)
hmm the same program reminds me to
-32 / *.eye5 .shootval store
Since it sugested -30 / eye5.. i have to say this was one of the simplest forms of the formula and might not be correct.
There are more precize versions like -22.0415/(*.eye5 - 0.285701) - 1.14216 .shootval store
The point is my data set contains errors.. its not based on the exact values but the nearest values i could get..
it results in the longshots.. but not the short powerful ones, but i neither could retrieve those values for shot shots in my data collection earlier..
bot added again it has no repro, (and sadly it spins again around targets... sometimes)
-
I have discoverd a fatal flaw in my code, when I implemeted it into goggle goo v0.4b (unpublished) with F1 default costs and tested it when goggle goo chose to use the narowest eyesight possible -34 with the furthest range when he shot at maximum distance I noticed he would lose a significant ammount of energy. The reason was because a higher (or if shootval is negative, lower) value in shootval costs more enrgy so at the extremities of vision goggle goo was firing shots of -144 costing a huge ammount of enrgy per shot, to rectify this before every instance of dup *.shootval insert - *.range ceil - and like power store the maximum ammount of energy you are prepared to spend on each shot and prefreably for more effciency substitue every value, I suggest that if anything requires a higher shootval you move closer as shots will fall short of the target otherwise. Another thing to implement is only to store a value in shootval if you actually need to fire using *.shoot sgn abs mult -3 sub sgn abs mult *.shoot -4 sub sgn abs mult before every instance of store... no point calculating how much power you need to put into a shot if your not actually going to shoot whatever your looking at.
-
Well it does have an awful lot of stores in it. You do know that those use up energy? Anyway to eliminate them?
-
Well it does have an awful lot of stores in it. You do know that those use up energy? Anyway to eliminate them?
Only one activates at any one time, I used conditionless logic which multiplies the location to be stored by 0, that resulsts in trying to store something into location 0 which is impossible and thus costs no energy. Alos they only activate when they see something and stuff like that, I used conditionless loggic because each normak condition costs about a tenth of a store command whilst conditionless logic is free. Therefore in theory minimal energy should be used... at least it worked when I tested it, when unactivated has a smaller energy consumption rate than alga_minimalis. Most of the gene is repetitive, one store for each eyewidth (negative, 0 and positive) multiplied by the ammount of eyes, so ultimately the 27 stores are in place for examining a range of possibilities in various eyes.
-
Well it does have an awful lot of stores in it. You do know that those use up energy? Anyway to eliminate them?
Only one activates at any one time, I used conditionless logic which multiplies the location to be stored by 0, that resulsts in trying to store something into location 0 which is impossible and thus costs no energy. Alos they only activate when they see something and stuff like that, I used conditionless loggic because each normak condition costs about a tenth of a store command whilst conditionless logic is free. Therefore in theory minimal energy should be used... at least it worked when I tested it, when unactivated has a smaller energy consumption rate than alga_minimalis. Most of the gene is repetitive, one store for each eyewidth (negative, 0 and positive) multiplied by the ammount of eyes, so ultimately the 27 stores are in place for examining a range of possibilities in various eyes.
ehm i've written them too in the past, i think all bots could be written like it, see the beasteary 1G bots, some of mine must be there as well
-
peterb-
You should test shot lifetimes with various shootvals.
Then with various body sizes, because that's also a factor. Once you know shot lifetime, multiply by 40 to get distance.
I remember I did this at some point and the results were not what the formula in the wiki predicted. I'm not sure if I posted a chart of my results somewhere, but you can easily do the experiments in half an hour or so.
-
peterb-
You should test shot lifetimes with various shootvals.
Then with various body sizes, because that's also a factor. Once you know shot lifetime, multiply by 40 to get distance.
I remember I did this at some point and the results were not what the formula in the wiki predicted. I'm not sure if I posted a chart of my results somewhere, but you can easily do the experiments in half an hour or so.
I worked out the increase in shot distance is lineraly proportional to eye distnce and so the overall change is nil and no change was needed when I tested it earlier, hasn't shot distnace been worked out already?
EDIT: Opps, I thought you meant the size of the bot using the gene not the bot it was colecting information from... hmm now that's a whole new story
I think I agree with you peter all robots could be coded with conditionless logic, I believe it actually increases the possible options as it adds aditional complexity and breaks conditions up into smaller peices.
-
peterb-
You should test shot lifetimes with various shootvals.
Then with various body sizes, because that's also a factor. Once you know shot lifetime, multiply by 40 to get distance.
I remember I did this at some point and the results were not what the formula in the wiki predicted. I'm not sure if I posted a chart of my results somewhere, but you can easily do the experiments in half an hour or so.
I think for the moment -32 *.eye5 div .valshoot store (works for starting robots)..
i got to admit not tested it against all sizes
Getting good data is the biggest problem here and it does take a long time to get it, not a half hour i'm afraid
if you still have the data i would be happy to synthesize a math formula on it