Difference between revisions of "Raven"
Jump to navigation
Jump to search
Dsekercioglu (talk | contribs) (Give more info about the current state of Raven and remove the italics that make my eyes hurt) |
Dsekercioglu (talk | contribs) (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 | + | : 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/ | + | : https://www.dropbox.com/s/ln53uvb3ddxe4bv/dsekercioglu.mega.Raven_3.56j8.jar?dl=1 |
; How competitive is it? | ; 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 | + | ; 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 | + | : 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 | + | : 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.