Difference between revisions of "WaveSim"

From Robowiki
Jump to navigation Jump to search
(a few notes about new gun research)
 

Revision as of 01:20, 13 March 2010

To facilitate a new wave of gun research, I'm setting up a system that will let me easily test a gun's classification against pre-gathered wave data. This would take the place of running a zillion Robocode battles.

Benefits:

  • By removing all the overhead of running actual battles, I think this will allow a given gun test to run an order of magnitude faster, a huge boon to the pursuit of wacky targeting techniques.
  • It will make it more feasible to experiment with sophisticated algorithms that are an order of magnitude slower than what we usually use, as some clustering algorithms are.
  • I could record data from actual battles instead of being limited to TCs, since every classification run would be against the same exact data, anyway.

Testing classification algorithms against raw data sets is nothing new, but it's high time I actually tried it for Robocode gun research. =) Of course, this will only work against non-adaptive movements. (Some of this process is similar to my old Segmentation Research.)

Data-gathering bot

First step is collecting some data. I modified my TripHammer code to output every wave it gathers in a .csv type format. 100 seasons of TCRM is about 4 gigs. This part's done.

Wave reading

I'm writing utility classes to load wave data, step through it as a real battle would, feed it to a classifier, classify each firing wave / check for hits, and record overall hit rates. This is basically simulating a battle from the perspective of a wave-based gun. I'm working on this now...

Classifiers

I'll have a simple interface implemented by each classifier - initialize, feed it a wave, classify a wave. I'm considering restructuring my gun code such that this classifier could be plugged into Diamond/TripHammer as a real gun with no code changes. Depends how that looks and what trade-offs it might require.

Notes

I'll post all this soon (except the 4 gigs of data), if anyone's interested in tinkering with it. I may also post info about some of the clustering schemes I've tried. An example of one of the really intensive clustering algorithms that I find interesting is QT clustering. A couple of my previous experiments were inspired by that one.