Difference between revisions of "Diamond"
Jump to navigation
Jump to search
m (misc updates) |
(misc updates, brags, and credits) |
||
Line 4: | Line 4: | ||
| caption = [[:Image:Diamond_collage.png|Full Size]] | | caption = [[:Image:Diamond_collage.png|Full Size]] | ||
| extends = [[AdvancedRobot]] | | extends = [[AdvancedRobot]] | ||
− | | targeting = [[Dynamic Clustering|Dynamic Clustering]], [[Displacement Vector|Displacement Vectors]] | + | | targeting = [[Dynamic Clustering|Dynamic Clustering]], [[Displacement Vector|Displacement Vectors]], [[GuessFactor|GuessFactors]] |
| movement = [[Minimum Risk Movement|Minimum Risk Movement]], [[Dynamic Clustering|DC]]/[[GuessFactor|GF]]-[[Wave Surfing|Wave Surfing]] | | movement = [[Minimum Risk Movement|Minimum Risk Movement]], [[Dynamic Clustering|DC]]/[[GuessFactor|GF]]-[[Wave Surfing|Wave Surfing]] | ||
− | | current_version = 1.5. | + | | current_version = 1.5.30 |
| license = [http://www.gzip.org/zlib/zlib_license.html zlib] | | license = [http://www.gzip.org/zlib/zlib_license.html zlib] | ||
− | | download_link = http://www.dijitari.com/void/robocode/voidious.Diamond_1.5. | + | | download_link = http://www.dijitari.com/void/robocode/voidious.Diamond_1.5.30.jar |
| isOpenSource = yes | | isOpenSource = yes | ||
| isMelee = yes | | isMelee = yes | ||
Line 23: | Line 23: | ||
; What's special about it? | ; What's special about it? | ||
− | + | : Oh, nothing, really. Well, since you asked... | |
− | + | :* It took the [[Melee]] throne from [[Shadow]]. | |
− | + | :* The Melee guns use [[Displacement Vector|displacement vectors]]. | |
− | * It took the Melee throne from [[Shadow]]. | + | :* It may have the strongest [[One-on-one|1v1]] gun against [[Random Movement|random movers]]. |
− | * It may have the strongest 1v1 gun against [[Random Movement|random movers]]. | + | :* It's by far the top [[Dynamic Clustering|DC]] surfer. |
− | * The Melee | + | :* The Melee [[Wall Smoothing]] is quite graceful, if I do say so myself. |
− | * It has pretty debugging graphics. | + | :* It has pretty debugging graphics. |
− | | | + | :* The source code is available under a [[wikipedia:Permissive free software licence|permissive license]] - have fun! (And try to learn something!) |
; How competitive is it? | ; How competitive is it? | ||
− | : | + | : Very. =) #1 in Melee since September 2009 (tied with [[DemonicRage]] right now), #2 in 1v1 behind [[DrussGT]]. |
== Strategy == | == Strategy == | ||
; How does it [[:Category:Movement|move]]? | ; How does it [[:Category:Movement|move]]? | ||
− | : | + | : In melee, it uses a [[Minimum Risk Movement]], evaluating a bunch of points around itself and choosing the best (least bad / most good) one. I'm always tweaking the parameters, but some of them are |
:* Considers points in a (randomized radius) circle around itself. | :* Considers points in a (randomized radius) circle around itself. | ||
:* Stay far away from other bots, weighted by their energy. | :* Stay far away from other bots, weighted by their energy. | ||
Line 44: | Line 44: | ||
:* Don't be the closest bot to any other bots (avoid being targeted). | :* Don't be the closest bot to any other bots (avoid being targeted). | ||
:* Some randomizing based on past locations. | :* Some randomizing based on past locations. | ||
− | : In 1v1, it uses [[Wave Surfing]] ( | + | : In 1v1, it uses [[Wave Surfing]] (derived from [[Dookious]]) with [[Dynamic Clustering]]. |
; How does it [[:Category:Targeting|fire]]? | ; How does it [[:Category:Targeting|fire]]? | ||
− | : The gun uses Dynamic Clustering for data analysis - i.e., [http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm k-nearest neighbors] to find similar states, and [http://en.wikipedia.org/wiki/Kernel_density_estimation kernel density] among those states to settle on a firing angle. | + | : The gun uses Dynamic Clustering for data analysis - i.e., [http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm k-nearest neighbors] to find similar states, and [http://en.wikipedia.org/wiki/Kernel_density_estimation kernel density] among those states to settle on a firing angle. In Melee, it uses [[Displacement Vector|displacement vectors]] for recording and reconstructing firing angles - I thought that made more sense than [[GuessFactor|GuessFactors]], and it's a lot simpler and more efficient than real [[Play It Forward]]. In 1v1, it uses GuessFactors with [[Maximum Escape Angle/Precise|precise MEA]]. It uses [[Waves/Precise Intersection|precise intersection]] and interpolates missed scans when necessary. |
− | : I'm also experimenting with various clustering techniques | + | : I'm also experimenting with various clustering and optimization techniques for the 1v1 guns, with the help of [[User:Voidious/WaveSim|WaveSim]]. |
; How does it select a target to attack/avoid in [[melee]]? | ; How does it select a target to attack/avoid in [[melee]]? | ||
Line 57: | Line 57: | ||
; What does it save between rounds and matches? | ; What does it save between rounds and matches? | ||
− | : Nothing between matches. Between rounds, it saves all its targeting and movement data, which includes general info about each enemy, a bunch of [[Kd-Tree|kd-trees]], and maps of the trees' data points to displacement vectors and/or | + | : Nothing between matches. Between rounds, it saves all its targeting and movement data, which includes general info about each enemy, a bunch of [[Kd-Tree|kd-trees]], and maps of the trees' data points to displacement vectors and/or GuessFactors. |
== Additional Information == | == Additional Information == | ||
; Where did you get the name? | ; Where did you get the name? | ||
− | : Diamond is the ex-superhero name of the main character in [[wikipedia:Powers (comics)|Powers]], my favorite comic book series. | + | : Diamond is the ex-superhero name of the main character in [[wikipedia:Powers (comics)|Powers]], my favorite comic book series. I like to name all my bots after warriors of some sort, but I'd be lying if I said I didn't just think it sounds cool. |
; Can I use your code? | ; Can I use your code? | ||
Line 68: | Line 68: | ||
; What's next for your robot? | ; What's next for your robot? | ||
− | : I'd | + | : I'd love to take the 1v1 throne. A lot. =) And it will take some work to reclaim the Melee throne, especially with [[Demon]] coming. |
; Does it have any [[White Whale|White Whales]]? | ; Does it have any [[White Whale|White Whales]]? | ||
Line 74: | Line 74: | ||
; What other robot(s) is it based on? | ; What other robot(s) is it based on? | ||
− | : I tried to start with a clean slate on this one. But I did | + | : I tried to start with a clean slate on this one. But I did take some ideas from the wiki and some code from some of my other bots. |
:* [[BrokenSword]] - General guidance on various things, especially the minimum risk movement and bullet power management. | :* [[BrokenSword]] - General guidance on various things, especially the minimum risk movement and bullet power management. | ||
− | :* [[Dookious]] - Diamond's 1v1 movement was directly ported from the Wave Surfing of Dookious, along with a variety of utility functions, including [[Precise Prediction|precise prediction]] code | + | :* [[Dookious]] - Diamond's 1v1 movement was directly ported from the Wave Surfing of Dookious, along with a variety of utility functions, including [[Precise Prediction|precise prediction]] code based on [[User:Albert|Albert]]'s [[FuturePosition]]. |
:* [[Lukious]] - The tiniest bit of kernel density code and general guidance on scan distancing. | :* [[Lukious]] - The tiniest bit of kernel density code and general guidance on scan distancing. | ||
:* [[HawkOnFire]] - I never did peek at the code, but it deserves a nod just for the wisdom [[User:rozu|rozu]] shared about minimum risk movement via this bot. | :* [[HawkOnFire]] - I never did peek at the code, but it deserves a nod just for the wisdom [[User:rozu|rozu]] shared about minimum risk movement via this bot. | ||
:* [[User:Corbos|Corbos]], [[User:Simonton|Simonton]] - Corbos for the idea to use a kd-tree to speed up our DC guns, Simonton for the idea of the (much faster for my purposes) bucket variant. | :* [[User:Corbos|Corbos]], [[User:Simonton|Simonton]] - Corbos for the idea to use a kd-tree to speed up our DC guns, Simonton for the idea of the (much faster for my purposes) bucket variant. | ||
+ | :* [[Shadow]] - Pioneered the [[Shadow/Melee Gun]], which is an amazing advancement in Melee targeting. | ||
+ | :* [[User:Rednaxela|Rednaxela]] - Credit for precise intersection and [[Gun Heat Waves]], both of which are great improvements. | ||
[[Category:MegaBots]] | [[Category:MegaBots]] |
Revision as of 20:03, 8 February 2011
Diamond | |
Full Size | |
Author(s) | Voidious |
Extends | AdvancedRobot |
Targeting | Dynamic Clustering, Displacement Vectors, GuessFactors |
Movement | Minimum Risk Movement, DC/GF-Wave Surfing |
Current Version | 1.5.30 |
Code License | zlib |
Download |
- Sub-pages:
- Version History - Code - DiamondHawk
Background Information
- What's special about it?
- Oh, nothing, really. Well, since you asked...
- It took the Melee throne from Shadow.
- The Melee guns use displacement vectors.
- It may have the strongest 1v1 gun against random movers.
- It's by far the top DC surfer.
- The Melee Wall Smoothing is quite graceful, if I do say so myself.
- It has pretty debugging graphics.
- The source code is available under a permissive license - have fun! (And try to learn something!)
- How competitive is it?
- Very. =) #1 in Melee since September 2009 (tied with DemonicRage right now), #2 in 1v1 behind DrussGT.
Strategy
- How does it move?
- In melee, it uses a Minimum Risk Movement, evaluating a bunch of points around itself and choosing the best (least bad / most good) one. I'm always tweaking the parameters, but some of them are
- Considers points in a (randomized radius) circle around itself.
- Stay far away from other bots, weighted by their energy.
- Stay perpendicular to other bots.
- Don't be the closest bot to any other bots (avoid being targeted).
- Some randomizing based on past locations.
- In 1v1, it uses Wave Surfing (derived from Dookious) with Dynamic Clustering.
- How does it fire?
- The gun uses Dynamic Clustering for data analysis - i.e., k-nearest neighbors to find similar states, and kernel density among those states to settle on a firing angle. In Melee, it uses displacement vectors for recording and reconstructing firing angles - I thought that made more sense than GuessFactors, and it's a lot simpler and more efficient than real Play It Forward. In 1v1, it uses GuessFactors with precise MEA. It uses precise intersection and interpolates missed scans when necessary.
- I'm also experimenting with various clustering and optimization techniques for the 1v1 guns, with the help of WaveSim.
- How does it select a target to attack/avoid in melee?
- As of 1.30, it no longer does. It aims at everyone on the battle field at once and tries to hit as many enemies as possible. (Big thanks to Shadow/Melee Gun for the excellent idea.)
- How does the melee strategy differ from one-on-one strategy?
- In 1v1, it switches to a Wave Surfing movement and switches to its 1v1 Virtual Guns.
- What does it save between rounds and matches?
- Nothing between matches. Between rounds, it saves all its targeting and movement data, which includes general info about each enemy, a bunch of kd-trees, and maps of the trees' data points to displacement vectors and/or GuessFactors.
Additional Information
- Where did you get the name?
- Diamond is the ex-superhero name of the main character in Powers, my favorite comic book series. I like to name all my bots after warriors of some sort, but I'd be lying if I said I didn't just think it sounds cool.
- Can I use your code?
- Yes, it's released under the zlib license.
- What's next for your robot?
- I'd love to take the 1v1 throne. A lot. =) And it will take some work to reclaim the Melee throne, especially with Demon coming.
- Does it have any White Whales?
- DemonicRage, Shadow, Portia, and Glacier are all big threats in Melee. In 1v1, Pris really gives it a whooping, along with all the other usual suspects: Shadow, YersiniaPestis, DrussGT, Phoenix, and its brother, Dookious.
- What other robot(s) is it based on?
- I tried to start with a clean slate on this one. But I did take some ideas from the wiki and some code from some of my other bots.
- BrokenSword - General guidance on various things, especially the minimum risk movement and bullet power management.
- Dookious - Diamond's 1v1 movement was directly ported from the Wave Surfing of Dookious, along with a variety of utility functions, including precise prediction code based on Albert's FuturePosition.
- Lukious - The tiniest bit of kernel density code and general guidance on scan distancing.
- HawkOnFire - I never did peek at the code, but it deserves a nod just for the wisdom rozu shared about minimum risk movement via this bot.
- Corbos, Simonton - Corbos for the idea to use a kd-tree to speed up our DC guns, Simonton for the idea of the (much faster for my purposes) bucket variant.
- Shadow - Pioneered the Shadow/Melee Gun, which is an amazing advancement in Melee targeting.
- Rednaxela - Credit for precise intersection and Gun Heat Waves, both of which are great improvements.