Difference between revisions of "User:Nat/SDSResearch"

From Robowiki
Jump to navigation Jump to search
(LinkedList is super slow)
(→‎Targeting Challenge RM: it seems that result are worse and worse, as usual for me)
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
Research with Symbolic Dynamic Segmentation.
+
My research on developing a [[symbolic dynamic segmentation]] gun, at least in the first. Now it looks more like [[zoom targeting]] (see [[oldwiki:ZoomTargeting|the page on old wiki]]).
  
 
== Challenge Result ==
 
== Challenge Result ==
 
=== Targeting Challenge Y2K7 Fast Learning ===
 
=== Targeting Challenge Y2K7 Fast Learning ===
{| border=1
+
{| border="1" style="border-collapse: collapse; font-size: 85%; color: black"
 
| '''Name''' || '''Author''' || '''Gun''' || '''CC''' || '''RMX''' || '''SHA''' || '''WS''' || '''WOE''' || '''Surf''' || '''DM''' || '''FT''' || '''GG''' || '''RMC''' || '''WLO''' || '''No Surf''' || '''Total''' || '''Comment'''  
 
| '''Name''' || '''Author''' || '''Gun''' || '''CC''' || '''RMX''' || '''SHA''' || '''WS''' || '''WOE''' || '''Surf''' || '''DM''' || '''FT''' || '''GG''' || '''RMC''' || '''WLO''' || '''No Surf''' || '''Total''' || '''Comment'''  
 
|-
 
|-
| 0001 || [[Nat]] || SDS || 56.86 || 73.82 || 63.35 || 67.59 || 67.96 || '''65.92''' || 85.84 || 77.37 || 70.01 || 80.83 || 79.87 || '''78.78''' || '''72.35''' || 7.5 seasons
+
| Astraea 0.1TC || [[Nat]] || SDS/GF/Arr || 60.31 || 74.07 || 64.17 || 67.65 || 65.87 || '''66.41''' || 85.72 || 77.81 || 71.73 || 79.26 || 79.97 || '''78.90''' || '''72.65''' || 20.0 seasons
 +
|-
 +
| Astraea SDS0002 || [[Nat]] || SDS/GF/Arr || 64.92 || 76.43 || 65.38 || 73.62 || 70.93 || '''70.25''' || 84.33 || 75.64 || 73.16 || 74.97 || 76.66 || '''76.95''' || '''73.60''' || 15.0 seasons
 +
|-
 +
| Astraea SDS0003 || [[Nat]] || SDS/GF/Arr || 70.25 || 76.55 || 68.86 || 77.10 || 73.22 || '''73.20''' || 83.83 || 77.58 || 75.19 || 76.59 || 77.82 || '''78.20''' || '''75.70''' || 15.0 seasons
 +
|-
 +
| AstraeaTC SDS0004 || [[Nat]] || SDS/GF/Arr || 67.80 || 74.90 || 66.85 || 75.31 || 70.11 || '''70.99''' || 83.56 || 77.91 || 77.67 || 77.82 || 76.72 || '''78.74''' || '''74.86''' || 16.4 seasons
 +
|-
 +
| AstraeaTC SDS0005 || [[Nat]] || SDS/GF/Arr || 61.99 || 72.40 || 68.23 || 71.16 || 69.11 || '''68.58''' || 78.54 || 82.51 || 78.06 || 75.96 || 75.17 || '''78.05''' || '''73.31''' || 2.1 seasons
 +
|-
 +
| AstraeaTC SDS0006 || Nat || SDS/GF || 64.46 || 70.16 || 64.15 || 73.59 || 63.83 || '''67.24''' || 82.37 || 76.76 || 77.61 || 77.53 || 79.71 || '''78.80''' || '''73.02''' || 20.0 seasons
 +
|-
 +
|style="border:none;height: 0.4em;"|
 +
|-
 +
| SDSRobot TC0001 || Nat || SDS/GF || 62.76 || 73.68 || 57.93 || 71.12 || 56.61 || '''64.42''' || 83.61 || 78.04 || 77.76 || 76.63 || 78.85 || '''78.98''' || '''71.70''' || 51.0 seasons
 +
|}
 +
=== Targeting Challenge RM ===
 +
 
 +
{| border="1" style="border-collapse: collapse; font-size: 85%; color: black"
 +
| '''Bot''' || '''Author''' || '''Gun''' || '''Aspd''' || '''Sprw''' || '''Fhqw''' || '''Yngw''' || '''FlMn''' || '''EASY''' || '''Tron''' || '''HTTC''' || '''RnMB''' || '''DlMc''' || '''Grbb''' || '''MEDIUM''' || '''SnDT''' || '''Cgrt''' || '''Frtn''' || '''WkOb''' || '''RkMc''' || '''HARD''' || '''TOTAL''' || '''Comments'''
 +
|-
 +
| SDSRobot TC0001 || Nat || SDS/GF || 88.21 || 94.33 || 95.54 || 97.10 || 91.05 || '''93.24''' || 83.51 || 84.30 || 80.67 || 83.61 || 77.76 || '''81.97''' || 72.59 || 77.85 || 78.04 || 78.85 || 76.63 || '''76.79''' || '''84.00''' || 33.1 seasons
 +
|-
 +
| SDSRobot TC0002 || [[null]] || null || 87.05 || 93.89 || 93.17 || 96.49 || 87.38 || '''91.60''' || 84.80 || 80.51 || 81.02 || 81.36 || 76.30 || '''80.80''' || 71.13 || 78.57 || 73.52 || 76.78 || 74.00 || '''74.80''' || '''82.40''' || 17.5 seasons
  
 
|}
 
|}
 +
 
== Version History ==
 
== Version History ==
* 0001: I need to improved a lot, this version have 7 segments; log size of 1000.
+
All research robot is now available [http://nat.robothai.net/robocode/sdsresearch/ here].
 +
* 0001: (0.1TC) I need to improved a lot, this version have 7 segments; log size of 1000.
 
* 0002: Change LinkedList to ArrayList, increase the segmentation length from 7 to 18, increase log size from 1,000 to 10,000.
 
* 0002: Change LinkedList to ArrayList, increase the segmentation length from 7 to 18, increase log size from 1,000 to 10,000.
 +
* 0003: Now use 22 000 log size with non-firing wave. (22 000 is the largest log size with acceptable skipped turn rate  ''NOTE: a movement is not yet processed'')
 +
* 0004: OK, in recent version it use the last 10 records for targeting. (I log all hit GF to an array and rolling them), this version no longer rolling the stats
 +
* 0005: Discard if log size for that segment is lower than 5, if nothing get when string length being truncated to zero, every segment is used. This version have a bad result because it took to much processing time and skipped a TON of turn.
 +
* 0006: Still very slow. Now rolling at 15. Skipped it log size is lower than 2. Better against random mover but a lot worse to surfer...
 +
----
 +
* 0001: Completely rewrite, using a tree with equivalent functionality instead of an array and strings.
 
=== Todo List ===
 
=== Todo List ===
* Make a single string contains every log.
+
* <s>Make a single string contains every log.</s> '''DROPPED!''' use tree instead.
 
* <s>Examine what Virus does :-)</s> '''DONE!'''
 
* <s>Examine what Virus does :-)</s> '''DONE!'''
* Make it faster
+
* <s>Make it faster.</s> '''DONE!'''
*  
+
* <s>Use Kernel Density instead of an array to find firing angle</s> '''DONE!'''
* ...
+
* <s>If there are less than 2 matches, consider not to use that segment and truncate once more.</s> '''Still experimenting.'''
 
+
* <s>If use only firing waves, match only when low gunheat (0001 and 0002 match every tick)</s> '''DROPPED!''' non-firing is better anyway.
 +
* <s>Try KMP.</s> '''DROPPED''' Using a tree is faster by the way.
 +
* Try using more detailed segment '''IN-PROGRESS'''
 
== Chat ==
 
== Chat ==
Help, does anyone have a TC calculator? The score above is just a roughly averaged by eyes score. I think the actual is much lower except the Total score, that was calculated with ScoreAveragedAddOns / 350. I know that the surf score is invalid. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 14:37, 11 March 2009 (UTC)
+
''See [[User_talk:Nat/SDSResearch|discussion page]]''
 
 
Try RoboResearch - look on the old wiki for info. --[[User:Skilgannon|Skilgannon]] 15:28, 11 March 2009 (UTC)
 
 
 
Actually, don't look on the old wiki for [[RoboResearch]], the new wiki page is more recently updated I believe. But yes, RoboResearch is very nice, it automates running all the battles, calculating the scores, and even generating the table row in mediawiki syntax :D (actually, challenges pages really should state to use [[RoboResearch]]). With the GUI version you can queue up multiple versions to test one after the other as you sleep too. --[[User:Rednaxela|Rednaxela]] 15:36, 11 March 2009 (UTC)
 
 
 
I usually don't download everything that I need to check out from SVN repository by my self :) I took an hour to find download link for RoboResearch and at last admit that I must checkout them from SVN. Question: Can I pause the challenge and resume it next time I turn on my computer? I am not allow to turn on computer while I'm sleeping. &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 00:53, 12 March 2009 (UTC)
 
 
 
RoboResearch saves battle results in a database as it goes and doesn't re-run unnecessary battles. In fact, if two different challenges have an exactly overlapping pairing it won't repeat the battles unnecessarially. Also, the GUI version (which I highly recommend) stores currently running challenges in a config file so it's super-easy to close at any time and continue running later. In summary that answer to your question is: Yes :-) --[[User:Rednaxela|Rednaxela]] 01:10, 12 March 2009 (UTC)
 
----
 
If I do bit shifting to fit the data into 8-bits link this:
 
<pre>
 
0 0 0 0 0 0 0 0
 
  L    D  a W
 
  e    i  c a
 
  t    s  c l
 
  e    t  l l
 
  r    a
 
  a    n
 
  l    c
 
        e
 
</pre>
 
With this I can have up to 7 velocity segment, 7 distance segment, 2 acceleration segment and 2 wall segment. It can fit every segment into one character. Do anyone have idea how to cut the string as per SDS? Or just <code>char & 0xFE</code> or <code>0xE0</code>? One more, what is faster, doing kernel density or log it to an array and find max? &raquo; <span style="font-size:0.9em;color:darkgreen;">[[User:Nat|Nat]] | [[User_talk:Nat|Talk]]</span> &raquo; 01:36, 12 March 2009 (UTC)
 
 
 
LinkedList is super slow. I change my code to use <code>ArrayList(10100)</code> and I can increase the segment and log size a LOT (see above). Let see 0002 with larger log size. And 0003 with non-firing waves.
 

Latest revision as of 14:53, 1 September 2009

My research on developing a symbolic dynamic segmentation gun, at least in the first. Now it looks more like zoom targeting (see the page on old wiki).

Challenge Result

Targeting Challenge Y2K7 Fast Learning

Name Author Gun CC RMX SHA WS WOE Surf DM FT GG RMC WLO No Surf Total Comment
Astraea 0.1TC Nat SDS/GF/Arr 60.31 74.07 64.17 67.65 65.87 66.41 85.72 77.81 71.73 79.26 79.97 78.90 72.65 20.0 seasons
Astraea SDS0002 Nat SDS/GF/Arr 64.92 76.43 65.38 73.62 70.93 70.25 84.33 75.64 73.16 74.97 76.66 76.95 73.60 15.0 seasons
Astraea SDS0003 Nat SDS/GF/Arr 70.25 76.55 68.86 77.10 73.22 73.20 83.83 77.58 75.19 76.59 77.82 78.20 75.70 15.0 seasons
AstraeaTC SDS0004 Nat SDS/GF/Arr 67.80 74.90 66.85 75.31 70.11 70.99 83.56 77.91 77.67 77.82 76.72 78.74 74.86 16.4 seasons
AstraeaTC SDS0005 Nat SDS/GF/Arr 61.99 72.40 68.23 71.16 69.11 68.58 78.54 82.51 78.06 75.96 75.17 78.05 73.31 2.1 seasons
AstraeaTC SDS0006 Nat SDS/GF 64.46 70.16 64.15 73.59 63.83 67.24 82.37 76.76 77.61 77.53 79.71 78.80 73.02 20.0 seasons
SDSRobot TC0001 Nat SDS/GF 62.76 73.68 57.93 71.12 56.61 64.42 83.61 78.04 77.76 76.63 78.85 78.98 71.70 51.0 seasons

Targeting Challenge RM

Bot Author Gun Aspd Sprw Fhqw Yngw FlMn EASY Tron HTTC RnMB DlMc Grbb MEDIUM SnDT Cgrt Frtn WkOb RkMc HARD TOTAL Comments
SDSRobot TC0001 Nat SDS/GF 88.21 94.33 95.54 97.10 91.05 93.24 83.51 84.30 80.67 83.61 77.76 81.97 72.59 77.85 78.04 78.85 76.63 76.79 84.00 33.1 seasons
SDSRobot TC0002 null null 87.05 93.89 93.17 96.49 87.38 91.60 84.80 80.51 81.02 81.36 76.30 80.80 71.13 78.57 73.52 76.78 74.00 74.80 82.40 17.5 seasons

Version History

All research robot is now available here.

  • 0001: (0.1TC) I need to improved a lot, this version have 7 segments; log size of 1000.
  • 0002: Change LinkedList to ArrayList, increase the segmentation length from 7 to 18, increase log size from 1,000 to 10,000.
  • 0003: Now use 22 000 log size with non-firing wave. (22 000 is the largest log size with acceptable skipped turn rate NOTE: a movement is not yet processed)
  • 0004: OK, in recent version it use the last 10 records for targeting. (I log all hit GF to an array and rolling them), this version no longer rolling the stats
  • 0005: Discard if log size for that segment is lower than 5, if nothing get when string length being truncated to zero, every segment is used. This version have a bad result because it took to much processing time and skipped a TON of turn.
  • 0006: Still very slow. Now rolling at 15. Skipped it log size is lower than 2. Better against random mover but a lot worse to surfer...

  • 0001: Completely rewrite, using a tree with equivalent functionality instead of an array and strings.

Todo List

  • Make a single string contains every log. DROPPED! use tree instead.
  • Examine what Virus does :-) DONE!
  • Make it faster. DONE!
  • Use Kernel Density instead of an array to find firing angle DONE!
  • If there are less than 2 matches, consider not to use that segment and truncate once more. Still experimenting.
  • If use only firing waves, match only when low gunheat (0001 and 0002 match every tick) DROPPED! non-firing is better anyway.
  • Try KMP. DROPPED Using a tree is faster by the way.
  • Try using more detailed segment IN-PROGRESS

Chat

See discussion page