Skip to content

New mutation branch development Notes (temperately)

ACIIL edited this page Jun 24, 2017 · 2 revisions

ACIIL's Documents to explain changes to the experimental "new-mutation-method " branch comments aimed at the maintainer Synkarius which otherwise be paragraphs in code.

I am going to take a guess here what you might be missing at this time. Further information of needs will improve this page:

  • Yes there are many open new variables in the new code that needs refactor and i can name them were appropriate. I need a solution where they can be placed in a "settings" space. This was hard combined with what little i know of javascript/chrome addons/what is in the code/time and energy, i do not know where to place them from their isolated code functions/loops/whatever mainly because each .js were not written like a class file with internal variables as i expect.

You Must start with a new pool, a chromosome was provided to start immediately.

  • Test performance with Simulator.prototype.evalMutations("mass"); as you know how to use this, i made it more detailed and look for certain behavior for good selection here.

    • You do not want only a high accuracy % now, but high gain % (+8% with the huge match data records). You also want it to have lower (NEW) "missed gains" than losses saved (forgot wording), and losses saved high (testing had it around +25%). Know these two scores also count moments where match prediction had a penalty, so when the sim is testing everything every single low data match counted for how right the chromosome was (and affecting the inverted confidence value it reports).
  • If your confusion is inside ConfidenceScore.prototype.execute = function (info) { I would need to get very detailed, as there was a problem where i realized i needed to move code into the var CSStats = function (cObj, chromosome) { in part of changing how low sample characters are not biased with better/worse averages but instead go towards a average if samples are lower than max character records stored internally, as this will make confidence lower and more conservative. Most lines scoring character stats were staged to be simplified before i stopped updating months ago. The code has useless lines marked with variable name schemes like ----RatioTemper that i think are confusing you. Again this area needed work but i left it as is in my pause, i would need to refactor and track character stats sample sizes in the CSStats class as my next project.

    • The Critical point of the ConfidenceScore.prototype.execute changes is to make the character 1 & 2 score not be a tallying "+score" if they have the favorable stats, but make score scaled by how well the characters stats compare, and making the prediction measuring more continuous in math. This changed the chromosome selection is a dramatic way.
    • Another edit in prediction is i reversed scoring for the character whom has a highest average odds, it will now give scaled points to the low odds character, this made the prediction for upsets surprising high when trained for (and keeping it conservative when betting wrong.
      • TODO: provide demo cases of chromosomes which predicted +50% upsets to opposite +70% non-upsets.
  • Optimization to numbers parsing. These were areas that are looped over heavily to in the looping match history in the simulation.

  • Code change to how scientist tournament prediction is scaled with a range transform. I had a past issue that touched on meaning.

  • The ABSOLUTE most important var that needs user access is var weightAccToMoney = starting at its default 0.75 inside popup.js, it controls how chromosomes are selected and can be changed realtime in the scope of each simulation loop. The setting is prime to affecting every changed i made. It can make the machine train to bet from upsets without heavy losses or to mostly betting right conservatively. It works well now, compared to the old sim/gene/prediction system, because of all subtle changes to chromosome evolution made it be more delicate and precise, and changing the match prediction behavior to be more precise guessing two opponents power. I had a past issue for adding user config vars for this value and i failed to do so.

Not sure how you would study the code, but from outside my diffs:

From after and inside Simulator.prototype.evalMutations = function (mode) { - below line var characterRecords = []; see and how stats printouts changed, how the pool is scored, sorted by best, and next gen pool generation. The next pool generation code has many vars that i have commented. I think you will look at this for a while.

From in ConfidenceScore.prototype.execute = function (info) { , i said a few changes above, the overhaul form more precise character stats scoring & improve prediction, etc...

Performance Observations:

  • Recommend watching memory use in real time within chrome, i do not have a reference with the original code.
  • Observed pool size is the most heavy influence to runtime and memory usage. As the simulation rewinds match history for each chromosome to test them, memory will always increase until the generate is tested. The code always behaved like this but worth mentioning.
  • Do not recommend increasing pool size , for sub 50 size, my system can do 1-2 loops within a match to help it in tournaments. And there is a point of breeding redundancy beyond a certain size and this must be a considered.
  • Memory to pool size during simulation is greater than (pool) * (size of entire records history) + records history loading overhead + etc. For example records is 5mbs, so total ram is above (~5mbs) * (30) + (overhead).

TODO: Add notes to new breeding parents code. Detail breeding control variables. Detail meaning.

Clone this wiki locally