Difference between revisions of "Raven"

From Robowiki
Jump to navigation Jump to search
(Give more info about the current state of Raven and remove the italics that make my eyes hurt)
(Update to Raven 3.59's tuning method)
 
(14 intermediate revisions by the same user not shown)
Line 11: Line 11:
  
 
; What's special about it?
 
; What's special about it?
: Raven dynamically weights its movement classifiers using gradient-based optimization.
+
: Raven uses a form of Go to surfing where it procedurally generates paths without aiming for any point.
  
 
; Great, I want to try it. Where can I download it?
 
; Great, I want to try it. Where can I download it?
: https://www.dropbox.com/s/ionjtk6rjk6pnyb/dsekercioglu.mega.Raven_2.9.jar?dl=1
+
: https://www.dropbox.com/s/ln53uvb3ddxe4bv/dsekercioglu.mega.Raven_3.56j8.jar?dl=1
  
 
; How competitive is it?
 
; How competitive is it?
: It's best is top 30
+
: Its best is 7th place but considering how close it is to Gilgalad, 7.5th would be the right word =)
  
;Credits
+
; Credits
:[[Skilgannon]] for the bugless, fast Kd-tree.
+
: [[Rednaxela]], [[Skilgannon]], [[Nat]], [[Starrynyte]] and the other contributors I am unaware of for the FastTrig class.
:[[Cb]] for non-iterative wall smoothing.
+
: [[Skilgannon]] for the bugless, fast Kd-tree.
:[[Rozu]] for the precise prediction code.
+
: [[Cb]] for the non-iterative wall smoothing.
:[[Chase-san]] for the intercept method I used in my [[PPMEA]] calculations.
+
: [[Rozu]] for the precise prediction code.
:[[AW]] for giving me the idea of integrating the danger function in order to get the danger value for a given bot width.
+
: [[Chase-san]] for the intercept method I used in my [[PPMEA]] calculations.
 +
: [[AW]] for giving me the idea of integrating the danger function in order to get the danger value for a given bot width.
 +
: [[Kev]] for inspiring me to use pytorch based on my loose estimate on how [[BeepBoop]] works.
 
== Strategy ==
 
== Strategy ==
  
 
; How does it [[Movement|move]]?
 
; How does it [[Movement|move]]?
: True Surfing.
+
: A form of Go To Surfing.
 +
: It falls back to True Surfing when there is no bullets mid-air.
  
 
; How does it fire?
 
; How does it fire?
Line 37: Line 40:
  
 
; What does it save between rounds and matches?
 
; What does it save between rounds and matches?
: Between rounds it saves the kd-trees. Between matches it doesn't save anything.
+
: Between rounds, it saves the kd-trees. Between matches, it doesn't save anything.
  
 
== Additional Information ==
 
== Additional Information ==
Line 48: Line 51:
  
 
; What's next for your robot?
 
; What's next for your robot?
: Better Bullet Shadow Calculations.
+
: A proper versioning system so I don't keep accidentally releasing experimental versions.
 +
: Faster code so it doesn't run slow and doesn't skip turns.
 +
: Better bullet shadow calculations.
 
: Tuning the guns since they haven't been tuned since the first version.
 
: Tuning the guns since they haven't been tuned since the first version.
 
: Gun Heat Waves.
 
: Gun Heat Waves.
 
: Maybe a pre-trained movement or gun to use in the first ticks of the battle.
 
: Maybe a pre-trained movement or gun to use in the first ticks of the battle.
 
: Add a flattener that actually improves its scores against adaptive targeting.
 
: Add a flattener that actually improves its scores against adaptive targeting.
 +
: Improve the pytorch tuned targeting system
 +
 +
; RTune
 +
: RTune is a tuning system that uses Gradient Descent to optimize the weighting parameters
 +
: It has been written in Rust in order to minimize the time spent parsing the files and using kd-trees
 +
: The system starts by weighting every parameter 1.
 +
: Then it goes through the pre-recorded battles, dynamically constructing the kd-tree.
 +
: Unlike [[BeepBoop]]'s training method, RTune uses the weights during search as well rather than only using it for distance.
 +
: After finding K nearest neighbors, the system weights each match by its distance to the search point and passes it through softmax in order to make sure the sum is 1.
 +
: The loss is calculated by 1 - sum of the weights that hit the enemy robot.
 +
: Despite not matching the performance of Raven 3.57 due to lost/extra code, Raven 3.59 managed to gain 0.5 APS over the 3.58 version with a training time of 80 seconds.
  
 
; Does it have any [[White Whale]]s?
 
; Does it have any [[White Whale]]s?
: Drifter seems to have the highest KNNPBI.
+
: Drifter has been crushing the latest versions.
 +
: Ever since I realized memory allocations and deallocations weren't free, the true White Whale is the Java GC :)
  
 
; What other robot(s) is it based on?
 
; What other robot(s) is it based on?

Latest revision as of 10:54, 2 August 2021

Background Information

Bot Name
Raven
Author
Dsekercioglu
Extends
AdvancedRobot
What's special about it?
Raven uses a form of Go to surfing where it procedurally generates paths without aiming for any point.
Great, I want to try it. Where can I download it?
https://www.dropbox.com/s/ln53uvb3ddxe4bv/dsekercioglu.mega.Raven_3.56j8.jar?dl=1
How competitive is it?
Its best is 7th place but considering how close it is to Gilgalad, 7.5th would be the right word =)
Credits
Rednaxela, Skilgannon, Nat, Starrynyte and the other contributors I am unaware of for the FastTrig class.
Skilgannon for the bugless, fast Kd-tree.
Cb for the non-iterative wall smoothing.
Rozu for the precise prediction code.
Chase-san for the intercept method I used in my PPMEA calculations.
AW for giving me the idea of integrating the danger function in order to get the danger value for a given bot width.
Kev for inspiring me to use pytorch based on my loose estimate on how BeepBoop works.

Strategy

How does it move?
A form of Go To Surfing.
It falls back to True Surfing when there is no bullets mid-air.
How does it fire?
It uses GuessFactor with KNN.
How does it dodge bullets?
Tries to minimize the number of guess factors it gets hit by based on their weights and damage.
What does it save between rounds and matches?
Between rounds, it saves the kd-trees. Between matches, it doesn't save anything.

Additional Information

Where did you get the name?
It just popped into my mind and I thought it would be a proper name for a bot with machine learning.
Can I use your code?
Yes, I tried to make the code as clean and understandable as possible.
What's next for your robot?
A proper versioning system so I don't keep accidentally releasing experimental versions.
Faster code so it doesn't run slow and doesn't skip turns.
Better bullet shadow calculations.
Tuning the guns since they haven't been tuned since the first version.
Gun Heat Waves.
Maybe a pre-trained movement or gun to use in the first ticks of the battle.
Add a flattener that actually improves its scores against adaptive targeting.
Improve the pytorch tuned targeting system
RTune
RTune is a tuning system that uses Gradient Descent to optimize the weighting parameters
It has been written in Rust in order to minimize the time spent parsing the files and using kd-trees
The system starts by weighting every parameter 1.
Then it goes through the pre-recorded battles, dynamically constructing the kd-tree.
Unlike BeepBoop's training method, RTune uses the weights during search as well rather than only using it for distance.
After finding K nearest neighbors, the system weights each match by its distance to the search point and passes it through softmax in order to make sure the sum is 1.
The loss is calculated by 1 - sum of the weights that hit the enemy robot.
Despite not matching the performance of Raven 3.57 due to lost/extra code, Raven 3.59 managed to gain 0.5 APS over the 3.58 version with a training time of 80 seconds.
Does it have any White Whales?
Drifter has been crushing the latest versions.
Ever since I realized memory allocations and deallocations weren't free, the true White Whale is the Java GC :)
What other robot(s) is it based on?
It's kind of based on WhiteFang, I have tried to copy the design but make it as precise as it can be.