Removed tile since an int can do its job. Other optimizations and refactoring.
Changed the generated tree to min-max from expectiminmax.
Added a smoothness value in heuristic to represent how similar neighboring tiles are.
Continued optimizing. Took absolute value of smoothness scores, lowered CONST values, and brought initial max/min closer to infinity.
Less C++. More transposition table, tweaked values. Doing better than most around this point.
Refactored to much better code. Game is playing like a pro but preferring down and right detrimentally and separating close values with values one up or down. aka creating diagonals.
Seems to be 2048 majority of the time. Added an optimizer class: idea is to iterate over values one at a time and track performance, then choose best values from there.
Here's aforementioned file.