Difference between revisions of "Pris"

From Robowiki
Jump to navigation Jump to search
(the N is for "new")
 
(Fix broken link and update for latest version in LiteRumble)
 
(2 intermediate revisions by one other user not shown)
Line 4: Line 4:
 
| extends        = [[AdvancedRobot]]
 
| extends        = [[AdvancedRobot]]
 
| targeting      = [[Neural Targeting]] (GF)
 
| targeting      = [[Neural Targeting]] (GF)
| movement        = [[Reinforcement Learning]]
+
| movement        = [[Neural Surfing]]
 
| released        = June 2009
 
| released        = June 2009
| rating          = ???
+
| rating          = 17th (85.23 APS)
| current_version = 0.20 (dev)
+
| current_version = 0.92
 
| license        = closed
 
| license        = closed
| download_link  = http://jeromelavigne.ca/robocode/darkcanuck.Pris_0.20.jar
+
| download_link  = http://robocode-archive.strangeautomata.com/robots/darkcanuck.Pris_0.92.jar
 
| isOneOnOne      = true
 
| isOneOnOne      = true
 
| isMelee        = false
 
| isMelee        = false
Line 24: Line 24:
  
 
; How competitive is it?
 
; How competitive is it?
Hopefully 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.  :)
+
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.  :)
  
  
Line 30: Line 30:
  
 
; How does it [[Movement|move]]?
 
; How does it [[Movement|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 outwardsBasically every time an enemy wave breaks over Pris' current position, she will choose a direction and distance to move inThis probably looks similar to a [[GoTo Surfing]] movement.
+
The latest version implements [[Wave Surfing]] with a neural network to store danger valuesIt appears to provide fast learning, while giving "standard" targeting methods a tough target to hitThere is still lots of room for improvement here, I've barely scratched the surface on this new strategy.
 
 
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?
 
; How does it fire?
Line 47: Line 43:
 
; What does it save between rounds and matches?
 
; What does it save between rounds and matches?
 
Between rounds, saves all neural network weights and targeting stats.
 
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.
 
  
  
Line 59: Line 54:
  
 
; What's next for your robot?
 
; What's next for your robot?
* Experiment with learning from scratch every battle.
+
* Bullet power selection is an area that needs more research, so I'd like to look into using [[Reinforcement Learning]] to generate a heuristic for selecting the right power.
* Add wave danger values to allow the learning framework to make more informed decisions.
+
* It would seem appropriate for Pris to have a ramming mode (minus cartwheels)?
* 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 Whale]]s?
 
; Does it have any [[White Whale]]s?
* [[RaikoMicro]] is a problem bot in my test set, not sure why.
+
* [[DrussGT]]?
  
 
; What other robot(s) is it based on?
 
; 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.
+
Much of the code is shared with [[Leon]], [[Gaff]] and [[Holden]], they all use the same code base.
  
  

Latest revision as of 04:07, 1 August 2017

Pris
Author(s) Darkcanuck
Extends AdvancedRobot
Targeting Neural Targeting (GF)
Movement Neural Surfing
Released June 2009
Current Rating 17th (85.23 APS)
Current Version 0.92
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?

The latest version implements Wave Surfing with a neural network to store danger values. It appears to provide fast learning, while giving "standard" targeting methods a tough target to hit. There is still lots of room for improvement here, I've barely scratched the surface on this new strategy.

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.


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?
  • Bullet power selection is an area that needs more research, so I'd like to look into using Reinforcement Learning to generate a heuristic for selecting the right power.
  • It would seem appropriate for Pris to have a ramming mode (minus cartwheels)?
Does it have any White Whales?
What other robot(s) is it based on?

Much of the code is shared with Leon, Gaff and Holden, 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.