Difference between revisions of "User:Rednaxela/SaphireEdge"

From Robowiki
Jump to navigation Jump to search
(VCS24 results)
(Anti-surfing ahoy!)
Line 132: Line 132:
 
Happy New Years!
 
Happy New Years!
 
<br>--[[User:Rednaxela|Rednaxela]] 21:47, 31 December 2008 (UTC)
 
<br>--[[User:Rednaxela|Rednaxela]] 21:47, 31 December 2008 (UTC)
 +
 +
----
 +
 +
Well, it's not quite ready for TC tests yet but right now I'm working on a new more robust and smarter so called "Crowd Targeting" system than what I had in RougeDC. I'm not quite sure it's perfected yet but here's one very good sign: I set up hypothetical surfing stats an enemy might have and the system is consistantly giving a negative weighting to those stats when against surfers, and giving a zero-ish weight for those stats against random movers! I still have some work to do (for one it adapts much too slowly right now), but I think it's exciting that it's able to so reliably detect surfing behavior and choose a reasonable weight for simulated surfing stats! --[[User:Rednaxela|Rednaxela]] 09:08, 3 January 2009 (UTC)

Revision as of 10:08, 3 January 2009

SaphireEdge is the nickname for the new gun I'm working on. There will be a variety of gun research componants before SaphireEdge comes together as a whole, the first being perfecting the VCS techniques that will be incorperated as a part of SaphireEdge.

VCS Series

This series is a test of my VisitCountStats, which (to my knowledge) uniquely antialias upon writing and interpolates upon reading. It's also to my understanding the only VCS gun to use precise antialiased botwidth when writing bins. Only uses a single buffer. It's also the first time I've even touched bins at all. Keep in mind that VCS is only one componant of the new gun and there will be so much more to it later.

Challenges

Targeting Challenge 2K7 (Fast Learning)

Name CC RMX SHA WS WOE Surf DM FT GG RMC WLO No Surf Total Comment
VCS01 60.89 59.16 53.36 58.13 59.51 58.21 88.71 78.05 83.31 79.36 82.09 82.30 70.26 121.0 seasons
VCS02 57.98 57.45 51.93 54.82 56.59 55.75 89.03 78.06 83.61 79.22 82.82 82.55 69.15 110.0 seasons
VCS03 64.56 67.29 58.01 62.57 62.54 62.99 87.95 78.56 83.47 79.17 82.15 82.26 72.63 110.0 seasons
VCS04 63.08 62.64 54.80 60.26 59.64 60.08 88.63 79.25 83.38 79.22 82.60 82.62 71.35 110.0 seasons
VCS24 63.03 59.89 53.98 59.36 65.41 60.33 89.80 81.36 85.89 81.98 86.92 85.19 72.76 40 surfing seasons, 110 nonsurfing seasons (more running)


Targeting Challenge RM

Name Based on Aspd Sprw Fhqw Yngw FlMn EASY Tron HTTC RnMB DlMc Grbb MEDIUM SnDT Cgrt Frtn WkOb RkMc HARD TOTAL Diff from base Comments
VCS04 VCS02 94.06 96.64 94.40 97.38 93.10 95.12 88.18 89.14 86.41 88.63 83.38 87.15 80.55 84.92 79.25 82.60 79.22 81.31 87.86 110.0 seasons
VCS05 VCS04 93.88 96.71 94.16 97.32 93.30 95.07 87.72 89.43 86.72 88.72 84.18 87.35 78.99 86.33 79.71 82.94 79.14 81.42 87.95 +0.09 110.0 seasons
VCS06 VCS04 93.21 97.25 94.63 97.79 94.01 95.38 87.97 88.73 88.01 88.96 83.98 87.53 80.18 85.28 79.39 82.89 79.20 81.39 88.10 +0.24 110.0 seasons
VCS07 VCS06 93.96 96.79 94.16 97.60 92.98 95.10 88.29 89.23 86.75 88.80 85.26 87.67 78.52 85.28 79.86 82.71 80.10 81.29 88.02 -0.08 110.0 seasons
VCS08 VCS06 93.29 97.24 95.08 97.47 93.92 95.40 88.00 89.58 87.59 88.92 84.49 87.72 79.88 85.86 79.64 83.78 80.07 81.85 88.32 +0.30 110.0 seasons
VCS09 VCS08 90.60 95.98 93.35 97.29 92.47 93.94 85.88 87.98 85.85 86.48 82.09 85.66 75.95 82.94 78.37 81.54 78.43 79.45 86.35 -1.97 110.0 seasons
VCS10 VCS09 92.09 96.43 94.71 97.24 92.68 94.63 85.16 86.94 85.88 86.51 82.56 85.41 75.91 83.90 78.15 80.43 77.79 79.24 86.42 +0.07 110.0 seasons
VCS11 VCS10 92.44 97.38 96.75 97.44 92.96 95.39 86.46 87.81 86.93 87.37 83.77 86.47 80.80 83.07 79.72 83.08 79.61 81.26 87.71 +1.29 110.0 seasons
VCS12 VCS11 95.06 98.57 97.55 97.87 94.73 96.76 89.93 89.89 89.34 88.85 86.23 88.85 84.86 86.73 80.70 85.14 81.08 83.70 89.77 +2.06 110.0 seasons
VCS13 VCS11 93.16 97.30 96.29 97.53 92.87 95.43 86.86 86.34 87.57 86.40 83.08 86.05 80.49 83.51 78.49 82.11 78.71 80.66 87.38 -0.33 110.0 seasons
VCS14 VCS12 95.49 98.49 97.48 97.71 94.75 96.78 90.53 89.45 89.36 89.50 86.13 89.00 85.18 86.12 80.51 85.50 81.04 83.67 89.82 +0.05 110.0 seasons
VCS15 VCS12 95.30 98.31 97.46 97.72 94.56 96.67 89.45 88.73 89.00 90.14 85.65 88.60 85.37 85.65 80.92 85.28 80.67 83.58 89.61 -0.16 110.0 seasons
VCS16 VCS12 95.02 98.40 97.13 98.28 95.04 96.77 89.11 89.65 89.35 89.47 86.68 88.85 85.47 86.66 81.43 86.65 81.58 84.36 89.99 +0.22 110.0 seasons
VCS17 VCS16 94.62 98.48 97.39 97.68 94.79 96.59 88.75 89.35 89.10 89.57 85.52 88.46 83.97 85.84 80.95 86.20 82.39 83.87 89.64 -0.35 110.0 seasons
VCS18 VCS16 95.05 98.73 97.22 97.62 95.03 96.73 89.36 90.32 88.87 89.09 86.23 88.77 84.86 86.09 81.96 85.56 80.55 83.81 89.77 -0.22 55.0 seasons
VCS19 VCS16 94.32 98.48 97.47 97.69 95.57 96.71 89.83 89.31 89.39 89.58 86.54 88.93 85.30 86.79 81.10 86.29 81.86 84.27 89.97 -0.02 110.0 seasons
VCS20 VCS19 94.95 98.65 97.53 98.25 95.50 96.97 89.18 89.18 89.47 89.66 87.45 88.99 84.98 86.37 81.16 87.01 80.82 84.07 90.01 +0.04 110.0 seasons
VCS21 VCS20 94.80 98.75 97.35 97.92 95.33 96.83 89.91 89.15 89.40 90.82 86.13 89.08 84.36 87.33 81.29 85.71 80.53 83.84 89.92 -0.09 28.1 seasons
VCS22 VCS16 95.49 98.39 97.48 97.99 95.13 96.90 89.20 88.41 89.34 89.05 87.29 88.66 85.14 86.62 80.20 85.74 81.95 83.93 89.83 -0.16 110.0 seasons
VCS23 VCS22 94.61 98.48 97.51 98.37 94.91 96.78 89.39 89.28 89.29 89.05 86.62 88.73 85.51 86.93 81.06 85.01 82.12 84.13 89.88 +0.05 110.0 seasons
VCS24 VCS16 95.24 98.45 97.43 97.92 95.10 96.83 89.18 89.98 89.56 89.80 85.89 88.88 85.17 86.61 81.36 86.92 81.98 84.41 90.04 +0.05 110.0 seasons
Comparisons
Raiko 91.45 97.80 95.65 97.49 92.62 95.00 84.68 85.97 88.63 87.14 82.85 85.86 79.08 82.37 79.43 86.70 78.18 81.15 87.34 110.0 seasons
SingleBufferBee Bee 92.60 98.03 96.91 98.24 91.71 95.50 87.34 84.27 89.85 85.55 84.14 86.23 81.55 82.90 79.76 86.17 80.70 82.22 87.98 110.0 seasons

Versions

  • 01: A segmentation configuration kind of based on CassiusClay's slow buffer, EXCEPT accidentally have too many slices in backwards wall distance. Uses tickwaves at full weighting. No rolling, so expected to be abysmal against surfers.
  • 02: Based on VCS01. Reduce backwards wall distance segmentation.
  • 03: Based on VCS02. Dramatically increase the granularity of segmentation by well over 50%
  • 04: Based on VCS02. Fix it to ACTUALLY be virtually like CassiusClay's segmentation (before there was a misunderstanding where I thought slice numbers in CassiusClay were the segment centers, when they were actually the segment edges). This should give a good baseline segmentation config.
  • 05: Based on VCS04. Give firing waves 5x the weight as non-firing (same as Bee does)
  • 06: Based on VCS04. Switch from my botwith based bin insertions, to smoothed bin insertions of the style Bee uses.
  • 07: Based on VCS06. Try a kind of hybrid of bin insertion methods.
  • 08: Based on VCS06. Try a hybrid again, with the numeric constants tweaked a bit differently.
  • 09: Based on VCS08. Disable antialiasing and interpolation across dimensions.
  • 10: Based on VCS09. Don't fire unless gun is rotation is within half a botwidth of complete.
  • 11: Based on VCS10. Add an acceleration segment that I forgot. DOH! Now it's actually segmented nearly exactly the same as CassiusClay.
  • 12: Based on VCS11. Re-enable antialiasing and interpolation across dimensions.
  • 13: Based on VCS11. Give firing waves 5x weight again, and default to the same GF as Bee when there is no data.
  • 14: Based on VCS12. Try adding an advancing velocity segment.
  • 15: Based on VCS12. Try adding a "distance last 9" segment.
  • 16: Based on VCS12. No new types of segmenting over VCS12, but tweak the segment divisions around a bit.
  • 17: Based on VCS16. Try a convoluted elucedian-based method of antialiasing/interpolation.
  • 18: Based on VCS16. Add a strongish advancing velocity segment.
  • 19: Based on VCS16. Add a weaker advancing velocity segment.
  • 20: Based on VCS19. Try a "distance last 9 segment" again, but this time much more subtly
  • 21: Based on VCS20. Try a "distance last 9 segment" without the advancing velocity segment.
  • 22: Based on VCS16. Try removing the bias towards buffers with more visits (divide by visits within that buffer)
  • 23: Based on VCS22. Only start removing said bias once a certain level of data has accumulated in the buffer.
  • 24: Should behave exactly like VCS16, but lots of code cleanup and restructuring has been done. Also doesn't aim when the gunheat is high.

Conclusions and Comments

(Fellow Robowikiers: Feel free to add your own comments in this section)

Based on VCS01-03 It's seeming that increasing granularity of segmentation of this current gun configuration dramatically increases anti-surfer performance (not that that is very good) however causes a small but notable decrease in performance against random movers (or not?). What I wonder now however is, how strong is possible against non-surfers with only a single pure-tickwave VCS buffer? I see bots in that challenge with scores notably better in the non-surfer category, however half are DC (Chalk and DCResearch) and the other half are multi-buffer (Phoenix & Dookious). Anybody else have any thoughts about how strong single-buffer VCS can get? --Rednaxela 07:53, 20 December 2008 (UTC)

IMO a single buffer can only ever be so strong against surfers (although perhaps your inter-segment smoothing will help with this) due to the fact that your segmentation is rarely exactly the same as them. A single buffer can be very strong against non-adaptive movement though, just look at Raiko. --Skilgannon 17:57, 20 December 2008 (UTC)

I'd agree that a single buffer is rather limited in how it can do against surfers, what I'm speaking about for now is against non-adaptive movement. I suppose my next step will be switching over to TargetingChallengeRM and and benchmarking Raiko, Bee modified to use a single buffer only, VCS04, and VCS04 modified to remove antialiasing/interpolation. Having those three should give quite a solid "baseline". Before I move beyond gun beyond single-buffer VCS (and I intend to move it far beyond that), I want to get the single-buffer VCS componant nailed down realllllly solid (in other words: Build the best damn single-buffer VCS gun there has ever been (against non-adaptives)). Right now I have the temptation to do a mad scientist laugh. Anyone else ever had that feeling when robocoding? :) --Rednaxela 02:20, 21 December 2008 (UTC)

Okay, so this is stronger thank Raiko, however is slightly weaker still than a version of Bee modified to use only a single-buffer. Next I'll try weighting my firing waves higher than non-firing as that may help. --Rednaxela 00:37, 23 December 2008 (UTC)

Woah, it seems that switching to smoothed bin insertions certainly helped overall. I think next I'll try a hybrid method of bin insertion that is smoothed but takes botwidth into account too. --Rednaxela 19:24, 23 December 2008 (UTC)

Well, from now on I'll remember this: Bin insertion shape makes a BIG difference and the optimal is certainly not a rectangle across the botwidth like I first presumed. VCS09 is kind of troubling yet uplifing at once. On one hand it demonstrates that my antialiasing/interpolation scheme is of much value, but on the other hand I need to figure out why it's so far behind SingleBufferBee without it. I can't think of any reason for it to be so much weaker considering both are very similarly natured. I wonder how much better than VCS08 it will be though once I fix whatever problem it has and re-enable antialiasing/interpolation... :) --Rednaxela 17:50, 24 December 2008 (UTC)

Wowzers! It seems VCS12 is very strong in TCRM! The things I know of that beat it, are DrussGT, Dookious, and some experimental versions of RougeDC's gun that never saw the rumble. Now.... if I can just get it past the 90 barrier, then just a little further to beat DrussGT's TCRM score and make the best anti-random-movement gun yet using only a single (though fancy) VCS buffer. Only then will I be satisfied with my take on VCS and be able to proceed to the next stage of Project SaphireEdge! *cackles like a madman* Wonder what it will take to make the final steps to making SaphireEdgeVCS the king of TCRM... Well first I'm going to find out just why VCS12 still underperforms SingleBufferBee... this will be VCS13's job. In retrospect, maybe I should have given seperate version numbering to the versions with and without antialiasing/interpolation? --Rednaxela 02:16, 28 December 2008 (UTC)

Well VCS13 failed to demonstrate improvement, and VCS11 is close enough to SingleBufferBee anyways, so in VCS14-16 I focused on improving ontop of VCS12 more. Seems that VCS16 is quite good, nearly passing the 90 mark! --Rednaxela 06:17, 29 December 2008 (UTC)

Nice! VCS20 is looking very strong! Ahead of Phoenix by a sizable amount, just baaarely behind RougeDC TC52's score of 90.24, and also closing in on DrussGT's 90.5 score! And to think this is just a single VCS buffer! :P --Rednaxela 05:29, 30 December 2008 (UTC)

Very impressive! Although, by doing all that smoothing, it seems to me that you are actually making it more in effect like a DC gun =) Are you also doing 'aliasing' when you read the data back to find a firing angle? Or just find the highest bin in the current buffer? Happy New Years =) --Skilgannon 20:53, 31 December 2008 (UTC)

Well, VCS20 turned out to bit less impressive after the rest of the seasons completed, but indeed this does seem to closer approximate like a DC gun works. Also I'm not 'aliasing' or true smoothing really, I'm doing anti-aliasing. See the example section to see how it's applied to images. Imagine you had a grid a pixels, but a point you want to insert isn't exactly in the center of a pixel, instead you can just tint all pixels adjacent to the point. In a similar way I'm writing to all buffers adjacent to the situation when I get a data point, and when reading, I do interpolation in a matching manner (I take a weighted average of all buffers adjacent to the current situation). With 6 dimensions like I'm currently using, this means each write writes to up to 64 buffers, and each read reads up to 64 buffers (it's frequently less because it's not uncommon for a given situation to be at the "edge" of one or two dimensions where it's only adjacent to a single segment). So for both reading and writing, at any given point in time I con't consider any single buffer to be the 'current' one, rather I consider a weighted mixture of buffers adjacent to the situation to be the current 'one'. To find the firing angle I don't do anything different from the norm of using the highest bin, the only difference is that the "current buffer" is a mixture of several. That make sense? :)

Now what bothers me is if I can improve this any further. I consider VCS16 to be my 'base version' now as nothing else has provided a conclusive improvement over it, and I've had 7 unsuccessful trials in a row. Further segments don't seem to be able to help, and changes to the anti-aliasing/interpolation methods I've toyed with didn't work either. Is roughly 90.0 the limit of this technique? I'm having trouble deciding if I should let the VCS series rest and begin the other parts SaphireEdge research or not. Perhaps I should try the Fourier analysis targeting idea I've been toying with...

Happy New Years!
--Rednaxela 21:47, 31 December 2008 (UTC)


Well, it's not quite ready for TC tests yet but right now I'm working on a new more robust and smarter so called "Crowd Targeting" system than what I had in RougeDC. I'm not quite sure it's perfected yet but here's one very good sign: I set up hypothetical surfing stats an enemy might have and the system is consistantly giving a negative weighting to those stats when against surfers, and giving a zero-ish weight for those stats against random movers! I still have some work to do (for one it adapts much too slowly right now), but I think it's exciting that it's able to so reliably detect surfing behavior and choose a reasonable weight for simulated surfing stats! --Rednaxela 09:08, 3 January 2009 (UTC)