Author Topic: Evolved Neural Network  (Read 14004 times)

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« on: November 09, 2008, 07:50:58 AM »
Ok, so I was working on that Neural Net challenge a while ago, and experimented with building them in a redundant way that was more mutation friendly.
And guess what, it worked, pretty well even.
And was planning on expanding the code with a larger blank network, but had tech issues with integrating the mutated code in the other network.
And then I finaly managed to focus on that thesis. So never got much further with the evo sim at that point. I also played around with other mutations settups for the bots I extracted from the first sim.
Anyway, I'm using my computer for stuff lately so I'm no longer running the sim, might start it again at some point if I have an extra computer I can put somewhere I can't hear it.

So figured I should post what I got so far in case someone wants to run it or study the results.

Now obviously most of the functional mutations have arised by changing weight in the network, but the point is to create an evo base that isn't "hand made".
The mutated network is close to how I would immagine a very redundant mutated bot would start to evolve further by creating these structures as part of it's code.

Now I only used point mutations while running the sim, but it should be possible to enable all mutations, problem is it doesn't work mid sim, so I've been drawing out the best bots after a period with no mutations, this way they can all be entered again with new mutation settings.

Just remember that it's a big bot and it's evolved in a large environment (size 13) with very litle food (no more than 25 vegs max), so mutations rates need to be very low... I've included a good setting file to work from if you want to start your own sim with these.
Costs are close to F1 with no code execution costs and low movement cost.

To start a new sim with this bot you need to fidle around with a few things, wich is also why I included a sim with only one of the bots so you can see the evolved bot in action without having to fidle with all this or load the last sim before I locked mutations.

So to limit spam I'll try to break it down :

Files :
This was all done with DB 2.43.1k, but I think it should work in newer versions aswell.
I was planning on describing all the files in detail, but it's been months since I last looked at this, so I can't remember which is what. So I'll describe what I can.
- starterNN.sim
This is a sim where I inserted one of the good bots that I extracted from the original sim, so you don't need to load a sim with 2000 bots to view the behavior.
- NNNewBase
These are the original sim files, the last one I had as a rar file was _28_76.rar, so I suspect it's one of the last sims before I locked mutations to extract the best bots.
The others are later saves and I'm not sure what I was doing to those.
- Extracted bots.
These where all the subspecies extracted from the sim after having locked mutations for a day or 2. Some of them seem to cover most of the field with some holes here and there and others seem to focus on filling out those blanks.
There where some edge scrapers for a while, but not sure if there where any left in the end. (It was a big advantage at one point because the soccer bots used to loose track of their alge around borders)
- AllInOne is just all the files in one rar, so you don't need to download them individualy. The individual files are for people who for some reason still use a modem.

Settings :
It's basicaly F1 settings with some reduced movement cost, and I think I also cut code execution costs.
Field should be size 13, they still work in other field size, but with size 13 they spread out very nicely all over the place.
Toroidal borders is a must, they are not ment for a sim with borders and I'm pretty sure it's too late to try and change that.
And thin liquids is also required, also rather important I would say, since their controlls are all evlved in that environment anything else would probably be rather confusing to them.
25 or less alge, you don't want more than that unless you're increasing costs to make up for it... I actualy recommend around 10 with the costs in the included sims.
Currently the sim only has point mutations, and only VERY few of them. You could use all mutation types in theory, just make sure they're VERY rare... it's a big sim, so mutating often will let bots mutate 100's of times before encountering an alge, meaning they'll devolve alge controll for sure (Maybe if you're very lucky a strong cannibot would evolve, but I seriously doubt it).
The code is very long so it will mutate often, and the structure means a lot of mutations will be functional, so if you want more mutations... I guess maybe a lot of non functional junk code might help.

Instructions (On starting your own sim):
You should use settings that are close to the ones from the included sim, then you can always change them gradualy into whatever it is you like. But drastic changes could end up killing off everything.
Also the size and energy of a bot affect it's controlls... it may seem silly but this is how they work and it actualy makes sence once you study their behavior and environment, size and nrg reserves affecting behavior is a good thing in the long run.
But this means that the default (and non changeable) body size a bot starts with will have a very negative effect on it's navigation. So you need to select the bot and force it to reproduce twice before it reaches a manageable size.
This is a litle tricky to accomplish, wich is why there's also an almost empty sim with some bots set up with the right size and right next to an alge. It will still take a while before the bots stabilize around their natural way of being, but they'll get there and start to play soccer with the alge eventualy.
You'll see them try to play soccer form the beginning, but it'll take a while before the alge and bots all have the size and nrg their used to and start to realy demonstrate fancy ball controll.

The included sim (starterNN.sim):
Now this sim holds one of the subspecies from the end of the 4-500 hour evo sim.
It's one that was successfull over the largest part of the field. t was at around 2000 bots when I locked mutations to extract the best bots, so the sim won't behave exactly as before while the population is this low.
Also mutations are enabled, so if you wan't to make sure you're seing the original bot start off by locking mutations. (The mutations aren't too frequent though, so it shouldn't hurt to have them enabled)
Since there's very few bots in the sim the veggies tend to get bigger than they normaly would in the old sim, so they're not at the optimal size for the bots to "play soccer" with them.
The bots will still controll the alge and avoid killing it, but the alge will be too big to move around much, and in the end the bot will be too big to controll the alge well from all the energy it gains.
So if you're not seing much action just look around for a small bot controlling a small/medium size alge. Sooner or later things will start to fit better as the sim gets going and you'll start to see bots figting over alge and a lot more "dribling".
(I tryed to record some of this stuff, but the resolution made it realy hard to see what was going on)
Theres also only 10 veggies in the sim to reduce population a litle. I also encourage playing around with costs and such, increase movement costs, slowly get to F1 default costs maybe, but take baby steps, slight changes in costs can have dramatic effects, they need time to evolve to adapt to changes, do it litle by litle.
(I forgot wich bot I used for this sim, but that should be easy to see if you just start the sim and look at the settings)

So what does it do ? What evolved so far ?

It was started off as a blank network with only a few hand set weights.
It could eat alge and reproduce basicaly, but not very well.

And after about 2000 mutations :
- Anti canni conspec: It had evolved a conspec based on movement, when 2 bots see eachother they shoot, but try to get around eachother and move on. This makes it very hard for canibots or even just carnivores to evolve, since if you attack they will fight back or use mass reproduction to escape.
- Repro defence: Using reproduction as a defence in 2 different ways. It seems to get triggered by massive damage or loosing track of an alge. If you're loosing a fight scramble and hope for the best, if you had an alge and a bot made you loose sight of it, then spread and hope to steal it back while the other bot is focused on the many offspring.
- Alge controll: Very good alge controll, and without using ties (because I did everything I could to prevent any ties form evolving, just slows down the sim too much). It basicaly plays soccer with the alge and never kills it, a bot with an alge will make a big offspring if it gets too big, to avoid risking to kill the alge as your shots grow too powerfull. But it's realy the core of the bots behavior, in a size 13 field with 25 alge you need to stick to your food source if you find one, so this is the behavior that has been refined the most from what I can see. It has very good "ball controll" by now, and some bots are also getting good at stealing the ball as a result. It looks like it's having problems killing the alge, but it's realy just trying to keep the alge to itself while avoiding to kill it comlpetely.
- Shell: It uses shell, usualy triggered by pain I think, building a certain amount, around 500... no poison, venom or any of that though...
- Non wastefull: It's not wastefull, only shoots when it sees something. It misses the alge a lot, but if it didn't it would kill it. (There has been bots that fired less shots when manipulating the alge, but they never had a breakthrough)
- Exploring: The bots are getting pretty good at covering the field while moving in patterns where they won't run into eachother too often. There are some subspecies who cover certain areas, if you start a sim with only one bot type you will notice "holes" once the field is covered. So it seems some subspecies are more dominant in different regions. There was also some "edge scrapers" for a while because the bots had a tendency to loose their alge around the borders.
- Redundancy: And ofcourse lots of redundant code, probably because I had mutations set too high, so breaking some large code sections helped it lower the amount of functional mutations.

And yes a lot of the behaviors have arised because of the NN structure, but the NN has also changed in structure and has even added hidden nodes and such. So it's not just adjusting weights in a NN it is evolving to use the network in different ways. At one point it also developped a "handicap" where one of it's movement sysvars was always 8 (This had been done outside the NN structure). This was an advantage as it stabilized the bots movement, and at a later time the handicap actualy disapeared again. Personaly I found this very interesting, not sure exactly what to make of it, but interesting non the less.


IMPORTANT :
I almost forgot the alge, none of the sims will work without this
It's just the alge I was usin, all it does is increase body size at times, but it's the alge the bots are used to and it's needed for the sims, so you probably won't get far without it.
It's called Alga_Silo.txt
It's is NOT included in the AllInOne.rar

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #1 on: November 13, 2008, 10:45:06 PM »
My PC's finally fixed, so now I can try this out!  

Great job with it, though. Can't wait to try it!

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« Reply #2 on: November 14, 2008, 07:49:00 PM »
Just occured to me, I forgot to include the actual base without any mutations.
(You can't just throw this thing into the same kind of environment... I don't think it'll last long in the current sim.)
Looking at it I remember it started out having poison and venom (But didn't shoot venom).
It broke venom since it never used it, but it also broke poison... aparently it was more important to conserve energy at the time...
So it eventualy broke ploc... and now poison is back for some reaosn, but ploc is still set to 0 as far as I can see...
I guess the shell prevents poison from getting used so the 23 it makes don't need to get replenished and generaly has no use.
So the litle energy it spends on it probably isn't noticable enough to be important...

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']'Another neural network test
'Just trying to figure out whats possible

'i1 : *.eye5
'i2 : *.refvelup
'i3 : *.refxpos *.refypos angle
'i4 : *.body
'-------
'o1 : .shoot (-6)
'o2 : .up
'o3 : .setaim
'o4 : .repro

'Extras (no initial weights no def)

'i5 : *.refveldx
'i6 : *.refshell
'i7 : *.refpoison
'i8 : *.robage 100 mod
'i9 : *.pain
'i10: *.shang
'i11: *.nrg
'i12: *.shell
'-------
'o5 : .dx
'o6 : .shoot (-1)
'o7 : .shoot (-3)
'o8 : .mkshell
'o9 : .strbody
'o10: .fdbody
'o11: .dn
'o12: .sx

def downscale 100
def downscaleout 100

def h1 51
def h2 52
def h3 53
def h4 54
def h5 55
def h6 56
def h7 57
def h8 58
def h9 59
def h10 60
def h11 61
def h12 62
def h13 63

start
0 .h1 store
100 .h2 store
1 .h3 store
1 .h4 store
-500 .h5 store
1 .h6 store
0 .h7 store
-1 .h8 store
0 .h9 store
75 .h10 store
0 .h11 store
-100 .h12 store
0 .h13 store
stop


'********** Inputs
'======= h1
start
*.eye5 25 15 sub 20 add 15 sub 25 add 20 sub 20 add 15 sub 20 add 20 sub mult *.refvelup 25 15 sub 20 add 15 sub 25 add 20 sub 20 add 15 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h1 add .h1 store
stop

'======= h2
start
*.eye5 19 21 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 30 10 sub 35 add 10 sub 30 add 15 sub 30 add 10 sub 30 add 10 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h2 add .h2 store
stop

'======= h3
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 30 10 sub 25 add 20 sub 20 add 15 sub 30 add 20 sub 30 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h3 add .h3 store
stop

'======= h4
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 30 10 sub 35 add 10 sub 30 add 15 sub 30 add 10 sub 30 add 10 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h4 add .h4 store
stop

'======= h5
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 25 15 sub 20 add 15 sub 25 add 20 sub 20 add 15 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h5 add .h5 store
stop

'======= h6
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h6 add .h6 store
stop

'======= h7
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h7 add .h7 store
stop

'======= h8
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h8 add .h8 store
stop

'======= h9
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h9 add .h9 store
stop

'======= h10
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h10 add .h10 store
stop

'======= h11
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h11 add .h11 store
stop

'======= h12
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h12 add .h12 store
stop

'======= h13
start
*.eye5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.refvelup 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refxpos *.refypos angle 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.body 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refveldx 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refshell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.refpoison 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.robage 100 mod 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.pain 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shang 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.nrg 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.shell 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscale div *.h13 add .h13 store
stop


'in
'-----------------------------------------------------------------
'out


'********** Outputs
'======= o1
start
-6 .shoot *.h1 30 10 sub 35 add 10 sub 30 add 15 sub 30 add 10 sub 30 add 10 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div sgn mult store
stop

'======= o2
start
*.h1 20 25 sub 10 add 20 sub 15 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 30 10 sub 25 add 20 sub 20 add 15 sub 30 add 20 sub 30 add 20 sub mult add *.h3 30 10 sub 35 add 10 sub 30 add 15 sub 30 add 10 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 25 sub 10 add 20 sub 15 add 20 sub 20 add 20 sub 10 add 30 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .up store
stop

'======= o3
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 25 sub 10 add 20 sub 15 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 30 10 sub 35 add 10 sub 30 add 15 sub 30 add 10 sub 30 add 10 sub mult add *.h5 30 10 sub 25 add 20 sub 20 add 15 sub 30 add 20 sub 30 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .setaim store
stop

'======= o4
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 45 5 sub 40 add 10 sub 55 add 15 sub 50 add 10 sub 55 add 5 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .repro store
stop

'======= o5
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .dx store
stop

'======= o6
start
-1 .shoot *.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div sgn mult store
stop

'======= o7
start
-3 .shoot *.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div sgn mult store
stop

'======= o8
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .mkshell store
stop

'======= o9
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .strbody store
stop

'======= o10
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .fdbody store
stop

'======= o11
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .dn store
stop

'======= o12
start
*.h1 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult *.h2 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h3 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h4 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h5 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h6 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h7 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h8 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h9 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h10 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h11 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h12 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add *.h13 20 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub 20 add 20 sub mult add .downscaleout div .sx store
stop



'----- some regular genes to help it along...

cond
*.robage 0 =
start
.shoot .vloc store
-2 .venval store
.shoot .ploc store
stop

cond
*.venom 10 <
*.nrg 100 >
*.eye5 0 >
start
10 .strvenom store
stop

cond
*.poison 10 <
*.nrg 100 >
*.eye5 0 >
start
10 .mkpoison store
stop

cond
*.robage 10 <
start
*.maxvel - .up store
*.maxvel .sx store
*.refxpos *.refypos angle .setaim store
.setaim .shoot store
*.aim .shootval store
stop

start
.deltie inc
.fixpos dec
800 .eye5width store
stop

cond
*.nrg *.body 10 mult >
start
'100 .strbody store
stop

cond
*.body 5 <
*.robage 0 >
start
-2 .shoot store
31000 .shootval store
stop

cond
*.totalmyspecies 2000 >
start
20 .shootval store
stop

end

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #3 on: November 15, 2008, 06:13:34 PM »
Alright, I'm running NNNewBase_28_81_1, with slightly modified settings:

I increased viscosity to 5, decreased movement efficiency to 50%, increased movement costs to .002 nrg/bang, 1 nrg/tie firing, and -0.001 nrg/body/turn... I'm trying to increase the possibility of tie formation and MBs by slowly increasing viscosity to "thick" and decreasing movement efficiency to 0.

After a few hours at 1 cycle/second, the bot population has decreased to 1200 and is still going down...

Moonfisher, I was wondering if you had any suggestions, since you're the one who made the sim. Should I change the settings more gradually? Should I just start from scratch with your original NNbot? Anyway, thanks for posting this!

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #4 on: November 16, 2008, 01:03:48 PM »
By the way, are you sure the bots don't use poison? Most of the bots in my sim have poison = 23 when I click on "view bot info". If it isn't poison, what does it mean?

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« Reply #5 on: November 16, 2008, 04:52:56 PM »
Well they all create 23 poison if they have over 100 nrg from what I can see... but with ploc set to 0 the poison doesn't actualy do anything.
But it also doesn't matter because the mutated bots have around 500 shell, so the poison never gets triggered unless someone gets through the shell first. So it only spends a very litle amount of energy on the poison once, then probably never replenishes it, so even if the poison did do something it wouldn't matter, and because the cost is so small it's probably irelevant to natural selection. I just though it was funny that it started to create poison again after .ploc had been broken, since it no longer has any use, but even if ploc wasn't broken the poison probably wouldn't get triggered anyway.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #6 on: November 16, 2008, 06:04:19 PM »
Also I'm not sure if this is a bug or not, but I unchecked "disable mutations" for alga silo and it's not showing up in the mutations graph...

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« Reply #7 on: November 17, 2008, 07:34:03 AM »
One reason for this could be that you can't change mutation settings for a bot during a sim (Wich is too bad, since this would make ti a lot easier for me to try out different mutation settings without having to extract bots and restart the sim).

Another reason could be that mots mutations are cause by reproduction, and the veggy cap is lower than the repop cap, so no veggies ever get to reproduce. (Also I don't think alga silo had a repro gene).

BTW, I'm actualy starting to look at positbilities for creating a MOD that would change all mutation types to create NN structures instead... got plenty of dieas for how it should work, but never realy worked with VB before so I need a compiler and get aquainted with the syntax and all... but mostly gotta figure out how to build buddy drops and all that.
Either way if I get anywhere with it I'll upload the drop here. The idea is to "accelerate" evolution a litle... my theory is that encouragin more usefull mutations is only a way of accelerating evolution. More random mutations could give the same results, it would just take longer. And since I don't ahve milions of years to run my sim I want to speed up evolution a litle.
« Last Edit: November 17, 2008, 07:39:29 AM by Moonfisher »

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #8 on: November 17, 2008, 01:22:07 PM »
Quote from: Moonfisher
One reason for this could be that you can't change mutation settings for a bot during a sim (Wich is too bad, since this would make ti a lot easier for me to try out different mutation settings without having to extract bots and restart the sim).

Another reason could be that mots mutations are cause by reproduction, and the veggy cap is lower than the repop cap, so no veggies ever get to reproduce. (Also I don't think alga silo had a repro gene).

BTW, I'm actualy starting to look at positbilities for creating a MOD that would change all mutation types to create NN structures instead... got plenty of dieas for how it should work, but never realy worked with VB before so I need a compiler and get aquainted with the syntax and all... but mostly gotta figure out how to build buddy drops and all that.
Either way if I get anywhere with it I'll upload the drop here. The idea is to "accelerate" evolution a litle... my theory is that encouragin more usefull mutations is only a way of accelerating evolution. More random mutations could give the same results, it would just take longer. And since I don't ahve milions of years to run my sim I want to speed up evolution a litle.

It's gotta be the first one... I enabled day/night cycles to keep the veg population in check, removed the pop cap, and their population did climb to 26...

And that idea sounds great! Especially since ericl is no longer with us, and the only other developer is working on DB3. It'll be nice for DB2 to still be improving while he's gone...

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« Reply #9 on: November 18, 2008, 12:22:09 PM »
EricL is gone ?? I thought he was just on vacation or something, didn't realize...

Anyway I'm not connected to the repository, I just downloaded the source for DB 2.43.1h... I'll have to check what bug reports it had... think I remember there where some problems with poison and venom ad such, not sure if it got fixed for version h...

Anyway, 2.44 has some serious issues I don't want to mess with... was hoping to maily just mess with the mutation types, make a small hack to exchange the current mutation types with my own coustom ones, so I won't need to mess with GUI or anything... and maybe fix any serious issues from version h that I can't live with...
If I figure out how to make a buddy drop then I'll try to adjust the GUI to atleast give a hint as to what the mutation does, before uploading it... if I ever get that far.

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Evolved Neural Network
« Reply #10 on: November 18, 2008, 01:20:07 PM »
Quote from: jknilinux
And that idea sounds great! Especially since ericl is no longer with us, and the only other developer is working on DB3. It'll be nice for DB2 to still be improving while he's gone...
Eric didn't for a month or so. No reason to say he has gone.
Oh my god, who the hell cares.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #11 on: November 18, 2008, 04:27:47 PM »
OH MY GOSH!    

I just read what I said, and it sounded like he died or something! I'm sorry, that is not what I meant.  

What I meant is I heard numsgil say somewhere that he's moved on to bigger things, but I don't mean I KNOW he's not coming back.


Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« Reply #12 on: November 20, 2008, 01:24:11 PM »
Well good to hear EricL is ok
But it looks like it'll be a while before I get anywhere with that mod.
It's my first time working with VB, and gotta say I'm not loving the syntax... there's no headers... like everything is global or something... maybe it's just because I'm a VB noob and I'm missing something. Anyway so far I'm having a hard time finding my way through the code and figuring out where everything is declared asf...
Appart from that all the abreviations are driving me crazy... took me ages to realize that rob() was an array with all the robots... and I'm not even sure that's correct. Seems pointless to abreviate a 5 letter word into a 3 letter word... but if this is the case then it should make it easier for me to figure out what everything else stands for... just assumed that when something was abreviated there was a reason for it.

Does anyone know if there's a class diagram available for DB... or maybe just a readme to explain the structure and abreviations ? (Only readme I could find was the one with the copyright info)

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Evolved Neural Network
« Reply #13 on: November 20, 2008, 03:58:40 PM »
Not saying it's eric's fault, but I've found that when a program is maintained by only one or two people, the code becomes less and less self-documentary, because that one developer knows it like the back of his hand anyway.
Perhaps making the DB source code more readable should be our first goal- it'll be pretty easy and will give us and any later beginning developers a running start.
« Last Edit: November 20, 2008, 04:01:35 PM by jknilinux »

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Evolved Neural Network
« Reply #14 on: November 22, 2008, 07:39:37 AM »
Heh well I was initialy hoping to just change the NeoMutations class... but it looks like that was optimistic, since I don't need to mutate the code randomly, I need to form networks structures and expands the netwrok from those structures.
So last time I was looking at the source I was actualy considering rewriting a larger part of the code...
I read somewhere that the C++ port was put on hold... not sure how far it got though, so I was thinking of taking a look at it... or maybe the C# version if that's what people are working on... I'm a big fan of C so it should make it a lot easier for me to find my way (Also C uses headers, so even if there's no dokumentation or comments it should be a lot easier to navigate the code).
But if the C++ and C# version are too far from completion I'll just have to man up and find my way though the VB code...  
Just seems like I'll have to change a lot for what I have in mind... so it would be a lot easier for me if I was doing it in a laguage that I know well.
I was actualy considering building the application I need in C++ and build it as a library or DLL and then just call it from the VB code