Pris
Pris | |
Author(s) | Darkcanuck |
Extends | AdvancedRobot |
Targeting | Neural Targeting (GF) |
Movement | Reinforcement Learning |
Released | June 2009 |
Current Rating | 99th (69.0 APS) |
Current Version | 0.20 (dev) |
Code License | closed |
Download |
Sub-Pages: Version History | Challenges
Background Information
- What's special about it?
Pris is my return to learning bots, after some success and many struggles with Leon, a melee bot. By focusing on 1-on-1, Pris has the advantage of learning in a simpler environment. But the monsters at the top of the rankings should make learning challenging.
- How competitive is it?
In the top-100 of the 1-on-1 RoboRumble. I normally wait until version 1.0 before releasing, but this development version (0.20) was scoring as strong as Gaff on my benchmarks, even stronger in some areas. So I couldn't wait. :)
Strategy
- How does it move?
Pris uses reinforcement learning to select from a variety (currently 15) of different moves every time an enemy wave rolls past. The movement is a simple smoothed orbital motion originally developed for Gaff, with the option to close in or move outwards. Basically every time an enemy wave breaks over Pris' current position, she will choose a direction and distance to move in. This probably looks similar to a GoTo Surfing movement.
The reinforcement learning engine is similar to the one used for Leon (SARSA with linear function approximation using radial-basis functions) but with an improvement that allows each discrete action to have it's own feature weights and eligibility traces. Pris is currently setup to learn much faster than Leon and has permanent random action selection built in too.
After struggling with Gaff's hand-crafted movement, it was nice to going back to let the bot create it's own. :)
- How does it fire?
Uses Gaff's targeting, a combination of two neural networks which attempt to predict the most likely Guess Factor to aim at on any given turn.
- How does the melee strategy differ from One-on-one strategy?
No difference, but the movement algorithm doesn't take more than one opponent into account so melee performance could be pretty bad.
- How does it select a target to attack/avoid in melee?
Selects the closest target, with some protection against target thrashing.
- What does it save between rounds and matches?
Between rounds, saves all neural network weights and targeting stats. Between battles, Pris saves all learned movement parameter weights to a file. These are generalized, not enemy-specific, but without them Pris would go back to being a blank slate.
Additional Information
- Where did you get the name?
Blade Runner. But this version does not do gymnastics.
- Can I use your code?
Not yet. But feel free to ask if you're curious and maybe I'll post some snippets.
- What's next for your robot?
- Experiment with learning from scratch every battle.
- Add wave danger values to allow the learning framework to make more informed decisions.
- Find the stuck-on-wall bug that has been in every bot I've ever released (I did fix the radar finally though).
- Does it have any White Whales?
- RaikoMicro is a problem bot in my test set, not sure why.
- What other robot(s) is it based on?
Much of the code is shared with Leon and Gaff, they all use the same code base.
Credits
Pris uses the same targeting as Gaff which credits wcsv, Simonton, Rednaxela and Skilgannon to name a few, for inspiration, planting the seeds of new ideas and a few wee code snippets.