I always wanted to try with a neural net for aiming, but I never had heart to develop a neural net from scratch. Now, I found a cool library that implements neural nets and comes with source code (NRLIBJ by Daniele Denaro) ... so there is the result.
ScruchiPu is quite experimental for now. Don't expect it to be in the first places. There is a lot to try and lots of parameters to tune before it becomes competitive. But I wanted to release it to demonstrate that NeuralTargeting is possible (and I think has lots of possibilities).
Current version is 0.6 - Apr/03
Current version is 0.7 - Apr/04 - Changed the network topology
New version 1.0 released. Now it is ready for competition and (partially) open source.
ScruchiPu 1.0 made a 3rd in the first run of the Robocode Outpost league, just behind of Cigaret and Princess. It seems that the long battles make him good, as it gets enough time to learn. It makes me hope that when I will be able to reduce the size of the stored data, it will be good also in the ER.
It is designed for 1vs1 only.
It uses the same movement as MicroAspid 1.4.5 (nothing better for the moment).
It uses NeuralTargeting. See the corresponding section for a complete description. It also adds persistence to store the trained neural nets and retrieve them later. Surprisingly, it learns quick enought (at least for simple movements). Try it agains SpinBot and see...
Note that NRLIBJ does the hard job, so the code of mine for aiming is scarce. I just fitted the pieces together.
No dodging at all.
Well... quite a long history.
I'm not releasing the code, but I have no problem to share the ideas, so just ask. The neural net library is not mine, and you can get it with source code.
It can only store information for about 20 bots. I'w have to improve this to be able to store information for all good bots in the eternal rumble.
Movement is from MicroAspid.
Depens on the number of nodes, from 3K to 15K+ using ZIP compression. But I'm using the default save functions in the library (sigthly modified to save into a ZIP file) which are quite inefficient, because they save data in text format. Calculate L1 x L2 + L2 x L3 + some overheat(L1,L2,L3 are the number of nodes in every layer). So for a 60/60/2 network you will need 3600 numbers plus some ovrhd. -- Albert
I saw you graphed ScruchiPu's targeting in NeuralTargeting. How did you come up with that graph? I would like to use something simular to help me debug my bots gun. (I have a few ideas, but nothing simple). -- Chase-san
I'm not sure what he used, but there is FloodGrapher, Narcissus (not sure if thats public, I think so), Fractal (maybe just old versions), and StatistRobot. That last one is the only one I've used. There are probably more, too, but any of those should work for you. -- Voidious