Difference between revisions of "DeBroglie"

From Robowiki
Jump to navigation Jump to search
m (Licensing.)
m (rank update)
 
(11 intermediate revisions by the same user not shown)
Line 12: Line 12:
 
| targeting      = [[Dynamic Clustering|DC]] - [[GuessFactor|Guess Factors]]
 
| targeting      = [[Dynamic Clustering|DC]] - [[GuessFactor|Guess Factors]]
 
| movement        = [[Dynamic Clustering|DC]] - [[Wave Surfing]]
 
| movement        = [[Dynamic Clustering|DC]] - [[Wave Surfing]]
| current_version = rev0056
+
| current_version = rev0108
| best_rating    = [[RumbleArchives:RoboRumble 20120611|51]]
+
| best_rating    = [[RumbleArchives:RoboRumble 20120723|31]]
| license        = [[RWPCL]]
+
| download_link  = https://dl.dropboxusercontent.com/u/75978227/tjk.deBroglie_rev0108.jar
 +
| license        = [[ZLIB|zlib]]
 
}}
 
}}
  
Line 23: Line 24:
  
 
; What's special about it?
 
; What's special about it?
: The targeting and movement draw on a central Universe object that contains the entire situational picture, with a Bot object that represents each robot on the field. To fire or dodge, data is pulled from a kD-tree, constructed into a histogram with no quantization in the x-dimension. I've done everything I can to avoid slicing/quantizing data until the very last point where the pseudo-kernel density bit happens.
+
: The targeting and movement draw on a central Universe object that contains the entire situational picture, with a Bot object that represents each robot on the field.
  
 
; How competitive is it?
 
; How competitive is it?
: It's been crawling slowly up the top 100 with each revision. One-on-one, less than 10 bots do better than deBroglie rev0056 against [[DrussGT]], which actually surprises me greatly!
+
: rev0108 is in the upper 40s in the [http://literumble.appspot.com/Rankings?game=roborumble RoboRumble] and middle of the pack in the [http://literumble.appspot.com/Rankings?game=gigarumble GigaRumble].
  
 
== Strategy ==
 
== Strategy ==
  
 
; How does it [[Movement|move]]?
 
; How does it [[Movement|move]]?
: [[Wave Surfing]], based loosely off of concepts in the [[Wave Surfing Tutorial|wave surfing tutorial]].
+
: [[Wave Surfing]], using data stored in [[Dynamic Clustering|a kD tree]] with [[Waves/Precise_Intersection|precise intersection]]. The algorithm is [[Wave Surfing/True Surfing|true surfing]] based on concepts in the [[Wave Surfing Tutorial|wave surfing tutorial]].
  
 
; How does it fire?
 
; How does it fire?
: [[GuessFactor Targeting]] using [[Dynamic Clustering|a kD tree to store data.]] [[Waves/Precise_Intersection|Precise intersection]] is used to determine the fire angles that would have hit.
+
: [[GuessFactor Targeting]] using [[Dynamic Clustering|a kD tree to store data.]] [[Waves/Precise_Intersection|Precise intersection]] is used to determine the fire angles that would have hit. Several different targeters are used in a [[Virtual Guns]] array. The best gun to use is chosen via a [[wikipedia:Condorcet method|Condorcet]] vote.
  
 
; What does it save between rounds and matches?
 
; What does it save between rounds and matches?
Line 42: Line 43:
  
 
; Can I use your code?
 
; Can I use your code?
: DeBroglie is an open source bot available under the [[ZLIB|zlib license]]. A few files here and there have an extra clause attached, but the majority of the code is unaltered zlib.
+
: DeBroglie is an open source bot available under the [[ZLIB|zlib license]]. A few files here and there have an extra clause attached.
  
 
; What's next for your robot?
 
; What's next for your robot?
: Get the movement and targeting systems squared away and cleaned up.
+
: Nothing. Development on deBroglie has ended. A few big chunks of the code will live on in [[User:Tkiesel/Copernicus|Copernicus]].
 
 
; Does it have any [[White Whale|White Whales]]?
 
* In rumble terms, '''[[CassiusClay]]''' - I've been in awe of that bot since finding Robocode in 2007. Climbing above it in the RoboRumble is priority #1.
 
* One on one, '''[[Dookious]]''' - Just a stunning bot. If deBroglie can beat this one head-to-head, I'll think I've accomplished something.
 
  
 
; What other robot(s) is it based on?
 
; What other robot(s) is it based on?
: All code written by others is under the RWPC or a more permissive license.
+
: All code written by others is under some form of permissive open source license.
  
:*The kD tree is written by [[User:Rednaxela|Rednaxela]] and is [[User:Rednaxela/kD-Tree|available on this wiki]]. License: as-is with attribution.
+
:*The [https://bitbucket.org/rednaxela/knn-benchmark kD tree] is written by [[User:Rednaxela|Rednaxela]]. License: as-is with attribution.
 
:*The [[User:Rednaxela/FastTrig|FastTrig lookup table and methods]] are written by a host of amazing folks at this wiki, starting with [[User:Rednaxela|Rednaxela]], but including [[User talk:Rednaxela/FastTrig|other great Robocode luminaries]].
 
:*The [[User:Rednaxela/FastTrig|FastTrig lookup table and methods]] are written by a host of amazing folks at this wiki, starting with [[User:Rednaxela|Rednaxela]], but including [[User talk:Rednaxela/FastTrig|other great Robocode luminaries]].
:*Parts of the precise prediction are accomplished with the help of [http://www.openprocessing.org/visuals/?visualID=8009 code] originally by [http://local.wasp.uwa.edu.au/~pbourke/geometry/sphereline/raysphere.c Paul Bourke], adapted by [http://www.openprocessing.org/portal/?userID=54 REAS @ OpenProcessing.org] and further adapted by me. This code determines if a line segment and a circle intersect. License: [http://creativecommons.org/licenses/by-sa/3.0/us/ CC-by-sa 3.0]
+
:*Parts of the precise prediction are accomplished with the help of [http://www.openprocessing.org/visuals/?visualID=8009 code] originally by [http://local.wasp.uwa.edu.au/~pbourke/geometry/sphereline/raysphere.c Paul Bourke], adapted by [http://www.openprocessing.org/portal/?userID=54 REAS @ OpenProcessing.org] and further adapted by me. This code determines if and where a line segment and a circle intersect. License: [http://creativecommons.org/licenses/by-sa/3.0/us/ CC-by-sa 3.0]
 +
:*The gun ranking uses [http://code.google.com/p/voteutil/ voteutil] by Brian Olson. It is available under the [http://www.gnu.org/licenses/lgpl.html LGPL version 3].
 +
:*The movement uses the wonderful setBackAsFront() method from [[User:Voidious|Voidious']] [[Wave Surfing Tutorial]]. Great piece of code!
  
 
[[Category:Bots|DeBroglie]]
 
[[Category:Bots|DeBroglie]]

Latest revision as of 19:03, 18 November 2014

Sub-pages:
Version History - Archived Talk 2010
deBroglie
Broglie 7.jpeg
Louis de Broglie, winner of the 1929 Nobel Prize for Physics
Author(s) Tkiesel
Extends AdvancedRobot
Targeting DC - Guess Factors
Movement DC - Wave Surfing
Best Rating 31
Current Version rev0108
Code License zlib
Download

Background Information

Where did you get the name?
This is my first wave surfing bot, and I'm a physicist by training, so it's named in honor of Louis de Broglie, who discovered that matter has wavelike properties. This was a foundational discovery in Quantum Mechanics. In 1929 de Broglie received the first ever Nobel Prize given to a student thesis.
What's special about it?
The targeting and movement draw on a central Universe object that contains the entire situational picture, with a Bot object that represents each robot on the field.
How competitive is it?
rev0108 is in the upper 40s in the RoboRumble and middle of the pack in the GigaRumble.

Strategy

How does it move?
Wave Surfing, using data stored in a kD tree with precise intersection. The algorithm is true surfing based on concepts in the wave surfing tutorial.
How does it fire?
GuessFactor Targeting using a kD tree to store data. Precise intersection is used to determine the fire angles that would have hit. Several different targeters are used in a Virtual Guns array. The best gun to use is chosen via a Condorcet vote.
What does it save between rounds and matches?
Nothing between matches. Between rounds all surfing and targeting data is saved.

Additional Information

Can I use your code?
DeBroglie is an open source bot available under the zlib license. A few files here and there have an extra clause attached.
What's next for your robot?
Nothing. Development on deBroglie has ended. A few big chunks of the code will live on in Copernicus.
What other robot(s) is it based on?
All code written by others is under some form of permissive open source license.