Roborio/VersionHistory

From Robowiki
< Roborio
Revision as of 03:39, 24 August 2017 by Rsalesc (talk | contribs)
Jump to navigation Jump to search
1.2 - the movement minor version
  • RoboRumble ‒ APS: 80.41% (57th), PL: 1075-35 (67th), Survival: 90.16%
  • Good APS leap, but my PL worsened a lot :(
  • Here starts my series on improving my movement and testing everything I can.
  • Now that I have all the thing re-written, I tested simple VCS and DC.
  • Decided to stick with VCS True Surfing for now, even though I'm planning to try all the combinations (DC/VCS/NN) - (GoTo/True).
  • It's hella easy to transition between DC and VCS in this version of the code.
  • This version's VCS works on top of 100 randomly generated slices, which turned out to give a initial good result (so much better than hand-tuning). I maintain/access all these slices traversing a Trie structure and creating the buffer for a given segment only when I really need it.
  • Expected to have a improvement over the majority of the bots of the Rumble (those which doesn't have adaptive targeting systems), and probably it will do worse against the others.
1.1.4b - the joyful release
  • RoboRumble ‒ APS: 76.95% (84th), PL: 1126-26 (21st), Survival: 87.88%
  • I just had fun in this version. Tried targeting with Neural Networks. Had coded it before in Python, it was fun to code it again from scratch, without the NumPy thing. Used a simple MLP with no hidden layers, cross-entropy cost function and Softmax activation, even tough i tried sigmoidal functions too. Still not sure if I'm doing the thing right, but I just assumed I was and moved to the training part. That was my main struggle: even with all the info provided by Darkcanuck open-sourcing his ideas on Gaff, I was not even able to pair up with the weakest version of my AS DC gun, so I assumed my NN was not that right and put it aside for some time.
  • Full rewrite of all the movement classes, just to make it more similar to my gunning classes. Now my code became less painful to work with.
  • In the process of rewriting, tweaked some things that seemed to be wrong and started coding a 2-wave true Wave Surfing movement on top of kd-trees. Visually it was just perfect, but as soon as I tried it out against some strong bots I was like: "How come my GoTo style movement, which I haven't touched since I've uploaded my first version to the Rumble, can outperform this by a enoourmous margin?". At this moment I was shocked, and decided to work hard on my movement in the next versions, from the simpler (true surfing) to the harder (GoTo style), taking account precise intersection, distance controlling, wave weighting and all that stuff.
1.1.3 - the big release
  • RoboRumble ‒ APS: 77.76% (80th), PL: 1134-16 (16th), Survival: 88.94%
  • Tweaked my AS gun over the Anti-Surfer Challenge and my general purpose gun over the RM Targeting Challenge.
  • I haven't event touched the movement from 1.1.1 until this point, which is cool.
  • Besides tweaking the weights, I changed the way I simulated decay of data in my AS gun: instead of decaying by a rolling depth-like approach when querying the kd-tree, I stored many trees with decreasing size and increasing relevance, making recent data to be "counted more" than old data.
  • In this version I create non-firing waves every tick and log them all when they break in all the trees, making no distinction if the enemy was hit, if it was a firing wave or if it was virtual. Probably gonna toy with that soon, it doesn't seem right, but I'm tired of DC and gunning. Let's try something else.
1.1.2
  • RoboRumble ‒ APS: 73.36% (119th), PL: 1107-43 (41st), Survival: 84.29%
  • Started doing a ton of tweaks on my general purpose gun.
  • Tried WaveSim and genetic algorithms tuning to make my gun strong, but had no considerable result, so reverted back to my hand-tuned weights.
  • Finally introduced a precise wave-robot intersection algorithm.
1.1.1
  • RoboRumble ‒ APS: 72.16% (126th), PL: 1098-52 (49th), Survival: 82.86%
  • Started firing big bullets against rammers, how come I forgot about that.
1.1 - First appearance on the Rumble
  • RoboRumble ‒ APS: 70.36% (150th), PL: 1011-100 (117th), Survival: 79.71%
  • Introduced a very simple (in terms of weighting information) GoTo DC surfing movement. I thought it was really bad at first, but I decided to focus on my gun for the next few releases and when I finally touched it at 1.1.4 / 1.2 I realized it was incredible for my second release. It made me reach top-100 in 1.1.3 with a 98%+ PWIN, which is amazing.
  • My gun was just a regular at this point.
  • Introduced a kd-tree power selection algorithm, like in DrussGT.
  • Started doing a massive refactor at this point so new features are more plugable.
1.0 - Release (not in the rumble yet)
  • Used a self-made kd-tree for a very simple Dynamic Clustering gun.
  • Surfed using simple VCS true surfing while keeping the buffers on a Trie.
  • At this point I had dozens of classes to keep my code clean and more pleasant to work with, like GuessFactorStats, Segmentation, KdTree, BackAsFrontRobot, MovementPredictor, geometry classes, smoothing utils and many other things. If it was not that, I would probably restart another robot from scratch before going insane. I can't work too much time on a bad maintained code, it's like building a giant (snow)ball of shit.