diff --git a/src/BaseEvaluator.java b/src/BaseEvaluator.java index 0fafbe9..e42d715 100644 --- a/src/BaseEvaluator.java +++ b/src/BaseEvaluator.java @@ -23,14 +23,14 @@ private double dot(double[] a1, double[] a2){ // function for dot product } public double evaluate(CheckersGameState s, int player){ - if(s.isTerminal()){ - if(s.winner() == player){ - return 200; // what should this be? - } - else{ - return 0; // assuming only positive evalutions - } - } + //if(s.isTerminal()){ + // if(s.winner() == player){ + // return 1000; // what should this be? + // } + // else{ + // return 0; // assuming only positive evalutions + // } + //} double[] params = s.getFeatures(player); return dot(this.weights, params); } @@ -38,6 +38,10 @@ public double evaluate(CheckersGameState s, int player){ public void refreshWeights(){ this.weights = this.wp.getWeights(this.file); } + public void commitWeights(String path){ + this.wp.writeWeights(path, this.weights); // method to commit weights to beta. provide path to beta csv + } + } diff --git a/src/CheckersAI.java b/src/CheckersAI.java index 0166553..892af3d 100644 --- a/src/CheckersAI.java +++ b/src/CheckersAI.java @@ -1,3 +1,5 @@ +import java.util.Arrays; + public class CheckersAI{ @@ -52,7 +54,6 @@ public Move minimax(CheckersGameState s, int min_ply){ double v = Double.NEGATIVE_INFINITY; double check; Move max = null; - System.out.println(s.actions().size()); for(Move a: s.actions()){ check = minValue(s.result(a), alpha, beta, depth + 1, a.isJump(), min_ply); if(check > v){ diff --git a/src/CheckersGameState3.java b/src/CheckersGameState3.java index d2ef8b7..6cb9155 100644 --- a/src/CheckersGameState3.java +++ b/src/CheckersGameState3.java @@ -535,6 +535,21 @@ public int winner(){ // only call after isTerminal } } + public int numPieces(int player){ + int tot = 0; + for(int i: this.board){ + if(i == player){ + tot += 1; + } + if(i == player + 2){ + tot += 2; + } + } + return tot; + } + + + public void printState(){ boolean leading = false; int printed = 0; diff --git a/src/Learn.java b/src/Learn.java index 4df4f29..7e0df42 100644 --- a/src/Learn.java +++ b/src/Learn.java @@ -3,75 +3,103 @@ public class Learn{ public static void main(String[] args){ - - final int num_games = 30; - LearningEvaluator le = new LearningEvaluator("../src/weights/alpha.csv", .1); + LearningEvaluator le = new LearningEvaluator("../src/weights/alpha.csv"); BaseEvaluator be = new BaseEvaluator("../src/weights/beta.csv"); CheckersAI alpha = new CheckersAI(le, 1); CheckersAI beta = new CheckersAI(be, 2); - CheckersGameState s; + learn(alpha, beta, le, be); - int played = 0; - int won = 0; - int winner; + } - for(int i = 0; i < num_games; i++){ // play num_games amount of games - s = new CheckersGameState3(); - winner = play(s, alpha, beta, le); // alpha and beta play a game - System.out.println("winner " + winner); - le.updateWeights(); // get new weights using data from game - played++; - if(winner == alpha.getPlayer()){ - won++; + // need to decide what to do if we are going on the wrong track + // samuel resets one of the weights to be zero + + + // for draws, make function called is_improved that checks if piece count is greater than 4 (king is worth 2) + // for learning rate, first 30 with .1, next 30 with .05, then final 30 with .01 and see what happens + + public static void learn(CheckersAI alpha, CheckersAI beta, LearningEvaluator le, BaseEvaluator be){ + final int num_games = 30; + final int iterations = 3; + + for(int j = 0; j < iterations; j++){ + for(int i = 1; i <= num_games; i++){ // play num_games amount of games + System.out.println("playing game " + i); + play(alpha, beta, le, true); // alpha and beta play a game + le.updateWeights(.1); // get new weights using data from game } - if(played == 10){ - if(won >= 7){ // if alpha wins 7 of every ten games, make beta use alpha's new evaluator - le.commitWeights("../src/weights/beta.csv"); - be.refreshWeights(); - } - played = 0; - won = 0; + faceBeta(alpha, beta, le, be); + } + } + + public static void faceBeta(CheckersAI alpha, CheckersAI beta, LearningEvaluator le, BaseEvaluator be){ + int won = 0; + boolean w; + CheckersGameState s; + System.out.println("facing beta"); + for(int i = 0; i < 10; i++){ + s = new CheckersGameState3(); + w = play(alpha, beta, le, false); + if(w){ + won++; } } + System.out.println("alpha won " + won + " times"); + if(won >= 7){ + System.out.println("updating beta"); + le.commitWeights("../src/weights/beta.csv"); + be.refreshWeights(); + } + else{ + be.commitWeights("../src/weights/alpha.csv"); + le.refreshWeights(); + } - } - // need to decide what to do if we are going on the wrong track - // samuel resets one of the weights to be zero + } - public static int play(CheckersGameState s, CheckersAI alpha, CheckersAI beta, LearningEvaluator le){ - CheckersGameState current = s; - int moves = 0; // draw after 200 moves + public static boolean play(CheckersAI alpha, CheckersAI beta, LearningEvaluator le, boolean learning){ + CheckersGameState current = new CheckersGameState3(); Random rand = new Random(); int player = rand.nextInt(2) + 1; // choose which player alpha plays as int other = 1 - (player - 1) + 1; - //System.out.println("playing as " + player); alpha.setPlayer(player); beta.setPlayer(other); - current.printState(); if(other == 1){ // if beta goes first, make a move current = current.result(beta.minimax(current, 7)); - current.printState(); - moves++; } - while(!current.isTerminal() && moves <= 100){ + int same_moves = 0; + Move lastmove = null; + Move secondlast = null; + while(!current.isTerminal() && same_moves <= 3){ Move next = alpha.minimax(current, 7); // get alpha's move - le.addData(current.getFeatures(alpha.getPlayer()), next.getValue()); // add this moves data to the data set (the value of the state is stored in the move. there is probably a better way to do this) + if(secondlast != null && next.toString().equals(secondlast.toString())){ + same_moves++; + } + secondlast = lastmove; + lastmove = next; + if(learning){ + le.addData(current.getFeatures(alpha.getPlayer()), next.getValue()); // add this moves data to the data set (the value of the state is stored in the move. there is probably a better way to do this) + } current = current.result(next); // make the move //current.printState(); - moves++; if(current.isTerminal()){ // if alpha won, then break break; } current = current.result(beta.minimax(current, 7)); // beta's move - moves++; } current.printState(); System.out.println("playing as " + alpha.getPlayer()); - return current.winner(); + return (current.winner() == alpha.getPlayer() || improved(current, alpha.getPlayer())); } + + public static boolean improved(CheckersGameState i, int player){ + CheckersGameState3 s = (CheckersGameState3) i; + return s.numPieces(player) >= (4 + s.numPieces(1 + (1 - (player-1)))); + } + } diff --git a/src/LearningEvaluator.java b/src/LearningEvaluator.java index 1f7af34..1620686 100644 --- a/src/LearningEvaluator.java +++ b/src/LearningEvaluator.java @@ -12,71 +12,52 @@ public class LearningEvaluator extends BaseEvaluator{ double alpha; // learning parameter, higher alpha means weights are closer to the regression output // alpha of 1 is directly setting weights to be regression weights - public LearningEvaluator(String file, double alpha){ + public LearningEvaluator(String file){ super(file); params = new ArrayList(); values = new ArrayList(); reg = new OLSMultipleLinearRegression(); - this.alpha = alpha; } - public void setAlpha(double a){ - alpha = a; - } - public void addData(double[] features, double value){ values.add(value); params.add(features); } - public void commitWeights(String path){ - this.wp.writeWeights(path, this.weights); // method to commit weights to beta. provide path to beta csv - } - - public void updateWeights(){ - // NEED TO CHANGE THIS METHOD - // using least squares might be a bad idea - // get a lot of singular matrices - // we could do samuel's method or come up with another function to modify the coefficients -// int curr_in = 0; - // int data_sz = params.get(0).length + 1; // need to do regression with data sets of size 10, so each iteration of loop uses 10 lines of data - //while(params.size() - curr_in > data_sz){ - double[] vals = new double [values.size()]; //converting arraylist to array - System.out.println("printing values"); - int j = 0; - for(int i = 0; i < values.size(); i++){ - vals[i] = values.get(i); - System.out.println(values.get(i)); - j++; - } - System.out.println(vals); + public void updateWeights(double alpha){ + double[] vals = new double [values.size()]; //converting arraylist to array + System.out.println("printing values"); + for(int i = 0; i < values.size(); i++){ + vals[i] = values.get(i); + System.out.println(values.get(i)); + } + // System.out.println(vals); System.out.println("printing params"); - double[][] pars = new double[params.size()][]; //converting 2d arraylist to array - j=0; - for(int i=0; i < params.size(); i++){ - pars[i] = params.get(i); - System.out.println(Arrays.toString(params.get(i))); - j++; + double[][] pars = new double[params.size()][]; //converting 2d arraylist to array + for(int i=0; i < params.size(); i++){ + pars[i] = params.get(i); + System.out.println(Arrays.toString(params.get(i))); + } + //System.out.println(pars); + reg.newSampleData(vals, pars); //add data + reg.setNoIntercept(true); + try { + double[] new_weights = reg.estimateRegressionParameters(); //get parameters + for(double x: new_weights){ + if(Math.abs(x) > 10000){ + System.out.println("bad data, not updating"); + return; + } } - System.out.println(pars); - reg.newSampleData(vals, pars); //add data - reg.setNoIntercept(true); - try { - double[] new_weights = reg.estimateRegressionParameters(); //get parameters - for(int i = 0; i < this.weights.length; i++){ - this.weights[i] = this.weights[i] + alpha * (new_weights[i] - this.weights[i]); - } - System.out.println("updated weights " + Arrays.toString(this.weights)); - commitWeights(this.file); - } catch(SingularMatrixException e) { - System.out.println("Matrix was singular, not updating weights"); + for(int i = 0; i < this.weights.length; i++){ + this.weights[i] = this.weights[i] + alpha * (new_weights[i] - this.weights[i]); } - //curr_in += data_sz; - //} - - //values = new ArrayList(values.subList(curr_in, values.size())); - //params = new ArrayList(params.subList(curr_in, params.size())); + System.out.println("updated weights " + Arrays.toString(this.weights)); + commitWeights(this.file); + } catch(SingularMatrixException e) { + System.out.println("Matrix was singular, not updating weights"); + } values.clear(); params.clear(); diff --git a/src/weights/alpha.csv b/src/weights/alpha.csv index 5971be2..1193177 100644 --- a/src/weights/alpha.csv +++ b/src/weights/alpha.csv @@ -1,31 +1,86 @@ -50, 10, 10, 5, 5, 5, 5, 5, 5, 5 -58.721565105895564, -10.209984373102387, 8.26321152195172, 5.677847124094983, 5.826424830958206, 5.56413884624413, 4.602818402771559, 4.641734109679923, 3.548289704557324, 5.367493698511443 -82.16982985049164, -9.465612298940293, 8.547491270347468, 6.439510213799398, 6.3301097653032805, 4.584672524325464, 3.953497323070004, 5.768197878209187, 4.486646013755001, 4.574597714666639 -112.06026682112434, -8.433076511342023, 8.126110822263803, 5.833679255022524, 5.810022038771235, 4.222344430685947, 3.626344274041604, 4.741107177952012, 4.333049144847149, 4.056258491294081 -113.54657349323139, -8.120912723436891, 7.018470812585721, 6.827322588008208, 5.293252048725863, 4.26991961002178, 3.4640937125167435, 1.891277443025599, 2.03860983149063, 3.4709385451445582 -143.09600014480836, -7.925373559587868, 6.625153475757033, 6.700571802505417, 5.536788151845323, 3.4842092359270986, 2.972590435280933, 4.046778594464159, 2.695174891076917, 2.5138879232184204 -169.34243267059017, -7.370599950396995, 7.0942765006742325, 6.050808862156311, 5.009251705644958, 3.4706676344091933, 3.1254521659459, 1.8976642222967537, 1.2309461252540872, 2.235047464807077 -201.47492696230267, -7.642374677984562, 7.122924708646291, 4.523913323784514, 4.809274874135249, 3.1488261431815223, 4.820409404234197, 1.707003356443474, 2.0937477986248254, 3.1946438309969007 -295.6607094893907, -5.642183225532174, 4.906548556402631, -0.7535637089692226, 4.316306416178051, 3.266128678315975, 4.340517233386408, 0.9023805094340905, 3.284486509647543, 1.8664740232253854 -324.1931094812162, -6.004723580535806, 5.321645189914713, -1.9546748290791764, 4.357937875476552, 3.101646707710061, 3.837858600262739, -0.44644872325220797, 2.9744151023171472, 2.407928336689597 -233.9112045961994, -2.5637209170614454, 5.878727120275379, 1.4611152441416284, 4.816777869366762, 3.828048915594563, 5.611769969189674, -5.569740799367836, -4.1442215495637384, 4.248817121520396 -260.4345520756872, -2.589740076769153, 6.330584839475697, 1.9023304122324651, 4.595737825750364, 3.2766680672332478, 4.390689070205292, -5.713651274660356, -4.427001443946114, 4.254680599974001 -223.081221370124, -0.5316069227926632, 3.4142466458279133, 5.53992287720489, 4.090885071112685, 4.1645283600971315, 6.692129733253881, -16.90077971516865, -9.183904261426186, 4.913518157857237 -264.3860141234429, -0.6543190430986177, 2.8117186443126005, 4.6782652627425305, 4.0150993766495136, 3.625591831593276, 5.536848963755155, -15.904248117538435, -8.445033102903643, 4.205766178558575 -272.369338166734, -0.8052342237074109, 2.135538663170343, 5.354963645179975, 4.245078874965239, 3.1346758830926356, 5.802828406589035, -15.208575078829004, -7.998372735218898, 3.834728185870579 -285.160431102748, -0.6755687445993603, 2.0127842146380046, 5.9435765779344125, 4.215083890104139, 2.6090397070903357, 5.761079210443779, -14.189844965684854, -7.280307254263711, 3.276845924125418 -310.0829636517434, -0.6234255916049168, 2.17338197422025, 5.890229563267351, 3.602330145600167, 2.2805180612200666, 5.290015804037152, -14.267667917953215, -6.804437530167599, 3.241472383125388 -323.8854155466059, -0.5639717255483264, 1.6375708622646767, 5.701320270824651, 3.4289419274240887, 2.1133788618886293, 5.922852667309992, -14.124004981154352, -6.969201264574944, 2.909048769976309 -305.0691126916216, -0.8053050678346725, 1.794550557633849, 8.02885652917541, 3.7666172765634127, 1.824782877995072, 5.177264324275394, -15.343965560443545, -7.016119834542954, 2.633356523556482 -306.1530379430181, -0.8511071835469001, 2.679403380615894, 8.37171129419788, 3.9166784674961277, 1.4774477912472488, 5.023913878192683, -14.514885642626355, -6.058253325189097, 2.1122807195076843 -313.1746642068931, -1.386326606742552, 4.255210088419343, 7.925413220706999, 3.5782304670298717, 1.155847203118465, 5.739412835149066, -13.489613300535845, -4.9496184879263305, 2.94233497134676 -307.2411200191442, -1.0240274782886511, 3.9313105096813414, 8.192839100769651, 3.9482553635002473, 1.3508722846508774, 6.39538439557294, -15.55223875541466, -6.402687990317852, 2.816327158352807 -277.3101199400473, -2.9937779583251816, 2.9800920816035212, 6.644147573851482, 5.880884775676387, 2.205928793421917, 10.28463864089637, -17.552756574004302, -10.511722547739325, -1.1038495447647145 -264.6360775499253, -2.524333417269476, 4.048041889961742, 7.4664764753420965, 6.010950545851622, 2.042224865346303, 12.591546503223826, -17.642899276535918, -9.992058572287226, -3.953881710046356 -291.16093993038095, -2.304997905005236, 3.6055501548807865, 7.280766790991776, 6.54248686535018, 1.5119475392178656, 8.868873117016573, -15.469657590099235, -10.639594354822403, -2.575203966333002 -291.5376690059156, -2.0834658954434886, 2.9507219324219602, 7.626132957366748, 6.3654578756754905, 1.6216816847584987, 9.551655636785675, -17.082192685735606, -11.595149640173403, -2.105663762829494 -307.8099824793789, -2.0707542515406177, 2.6992477596447615, 7.527722582840031, 6.010493790012417, 1.3129579032776002, 9.06613311044281, -16.45822883197124, -10.344723758198167, -1.8808629933257341 -294.23346380739065, -2.925442448397802, 3.9750695091530557, 9.408246450451237, 6.260433821501058, 0.5360554212104338, 10.192197742113807, -12.996682016744337, -8.709275065290823, -1.8737603904824727 -298.535034558095, -2.160401060654081, 3.7739196358367333, 9.767701133414272, 5.51936394295811, 0.4302987622598725, 10.543396297924696, -12.997075635672, -7.517322702716296, -2.4845550648352117 -301.9938151602845, -2.265823248792634, 3.5452195397431816, 9.77930153849822, 5.472288492143152, 0.33059898084318207, 10.68973332354017, -12.402532967757676, -6.973009532006329, -2.6809279831987176 -308.21522436064004, -2.080608671134792, 3.604878882228843, 9.806785527253554, 5.223647477014263, 0.0876751939508219, 10.736536855873606, -10.693904786952164, -6.424245617860605, -2.317236946105803 +5, 5, 5, 5, 5, 5, 5, 5, 5, 5 +5.2586917624742435, -18.76846074460989, 5.064306034118796, 4.588388978595724, 5.9092946760657235, 4.539533210544398, 4.370307658084149, 6.4853889338925015, 7.261448105294141, 5.308442282872066 +35.42800430576564, -16.99156973730318, 3.800470215727949, 4.097694755988586, 5.067697001398109, 4.363329345687398, 3.452604346804515, 5.156897398201903, 4.940378723794403, 4.8701733303415775 +57.3478542708541, -15.799480450841198, 3.6961727954176693, 3.5015997612965384, 4.86797909615131, 4.209559775242915, 2.682392000423976, 3.43937277973197, 2.889028008475504, 4.602858427315663 +71.37515375025578, -14.218361170948738, 3.076982522030529, 4.161397207663543, 4.857312234239684, 3.7869370978411983, 2.599003907133959, 2.83769519267004, 2.3418135673885203, 4.420611279040136 +87.23515202938015, -12.744514214871836, 3.4486595986324495, 3.735577624419746, 4.913142092645986, 3.5990042315186077, 3.378155716361954, 0.9556104724351953, 1.5124001530516586, 3.744759210887258 +130.78160115821888, -11.725824053697188, 2.890938290952066, 3.5232416194209377, 4.010090364422701, 3.244634355687504, 2.3221433396626248, -0.7120851698947837, 1.229483643952062, 3.183654460191558 +133.4994677123174, -10.947355072888985, 3.7703635322978206, 4.458678486094233, 4.142810288871752, 2.370510859130112, 2.288624432131334, 2.6574394958829144, 1.8943720878201535, 4.22679626207241 +156.04402887957428, -10.152309798483172, 3.411073556717144, 3.6834925594982284, 4.014041114757859, 2.235923624674566, 2.376407342279402, 2.091471168394241, 1.3333704615857438, 3.9541912236795085 +158.8827115756313, -9.26384988318174, 3.679997151352488, 3.8527959436379358, 3.9138869132081355, 1.9727455679245864, 3.7897634086654617, 2.1057508817354003, 1.6933485541133582, 3.2384856814471346 +155.96320694531173, -8.582502987431468, 3.279589645655924, 5.893412548276631, 3.493868893319718, 1.496002041196271, 5.099739728519005, 2.261324559143685, 1.6538345323874284, 2.7277231087025946 +158.6256942340352, -7.942368015887663, 2.7249999554648383, 6.445614023189449, 3.377473136132284, 1.4847841753746809, 5.4520795742780415, 0.6435961651555104, 1.3109810909543358, 2.4223475966376657 +169.73595001723834, -7.134679586344262, 2.4060946693543737, 6.372952744476238, 3.020238196416457, 1.3441814676179058, 5.357211378194247, 0.45415271934378787, 1.3091966497302046, 2.361776045174651 +176.24972479836234, -6.539913034284662, 2.5646092335608928, 6.641598822840634, 2.7481070491271264, 1.1062002941201468, 5.481917849031838, 0.840587278419839, 1.4360039001039755, 2.2984556004839183 +188.016627735916, -6.038012048335473, 2.803559327154626, 6.741397721500354, 2.2267758571764493, 0.9867282817814902, 5.511457670421312, 0.3682715600218054, 1.3579010081871026, 2.3600523183412796 +200.10628696306304, -5.719518873408181, 2.87215789155772, 6.415126522765551, 2.168456420622346, 0.7460387374901888, 5.016953509991218, 1.1186392170533723, 2.1916753013583747, 2.1677220538747406 +165.84813181753242, -5.359676303366676, 2.7939616349799126, 10.501140751441914, 2.41861819992687, 0.5875373431572838, 5.706238252928985, -0.912486476006108, 0.4949000809313331, 1.9008236821348647 +177.91419639611755, -4.889126067511122, 2.9707108236472664, 10.16364269848427, 2.179548380086063, 0.5954319768025885, 5.415427423985044, -1.7069386693793427, -0.04268401934896382, 1.78093479142676 +186.90485672243992, -4.44393889663613, 2.869085153000765, 10.064147849230698, 1.8059016832163675, 0.5862322868377653, 5.765096438060616, -2.309744107484625, -0.6405913480889908, 1.65355325175651 +191.13189359452397, -3.998966571269927, 2.7841631148123613, 10.256618592480297, 1.5337637963519117, 0.5283108631047355, 5.832245156591555, -2.640419102537909, -1.031062883652045, 1.5130753539566808 +199.77734496620516, -4.083129714021364, 3.238133362532886, 11.570911995519367, 0.776508470727704, 0.5136088676089213, 5.959344073411936, -3.1786408076326493, -2.940646605440059, 4.955364889760682 +205.13285358831706, -3.9099386172088266, 3.111774668666198, 11.352742625578303, 0.7514833686353908, 0.5172255079947843, 6.07396426831836, -3.820941739976824, -3.044205352471657, 4.4654040792297 +255.2100437260113, -1.5300752515136873, 3.1902252157325113, 7.473655847410214, 0.43616890969174205, 0.17198177037662932, 5.350927495121999, -0.5135375807209313, 0.2550566816471389, 3.875647085956856 +251.287001736339, -1.5331439833369127, 2.6355152695444426, 8.404829778907802, 0.52554245447408, -0.10311145144499334, 5.870579366124871, 0.9664212066026616, 1.1663872486984967, 4.779734106932718 +254.4762616789945, -1.3978549742483606, 3.4195078276290207, 8.440322335617735, 0.21293243369681442, -0.2447748162633349, 6.869605213155507, 1.8231636891792964, 1.2453299357606826, 4.782719750747688 +256.43871627375967, -1.135657254051054, 3.368608576234904, 9.339900314445167, 0.24109475553105084, -0.0359786417241405, 6.765525720053896, -0.47494513116003656, -0.6635435366767319, 4.22915534905346 +269.3860347531154, -1.3352886105890907, 2.9636250189591737, 8.246134081404431, 0.8560128165224885, 0.41255017690360507, 5.861750253341514, -3.9979552557510987, -1.8779327021462509, 4.090426513277127 +248.6907238479786, -1.1579829600237117, 3.3999809701175243, 10.084550294655635, 1.0058553266182766, 0.1030590947515751, 7.1257349229108495, -3.09143873846359, -1.5998176115607556, 3.6139532357037436 +256.6993480283239, -1.3283150829797057, 3.723004071760376, 9.957257310266353, 0.8981763906209768, -0.009882446556836608, 7.280337113399974, -2.5690362896376895, -1.9279885901270104, 3.139242661953541 +244.71584002800702, -1.2290560416002219, 4.273156280245642, 11.205571043130595, 1.000639269357871, -0.051489538640117495, 8.015251511017862, -3.053101752139174, -3.2277141631435806, 3.2264548848612176 +229.36919365267022, -1.6496020428974534, 3.8805230574440372, 12.407331551622281, 1.3954669824412314, -0.741695394447007, 9.137195051161635, 0.8373839046487954, -1.0319332794259677, 3.4824800608550275 +237.78766742600584, -2.6167101219215843, 4.348238078617526, 10.927884443844423, 1.5183175015275088, -0.3710854391306358, 7.855355468987151, -0.2469775100359255, -3.2777160948037354, 4.982523348853477 +255.71899209609794, -2.4243630251251793, 4.288721074567844, 10.293673298507509, 1.3684920617013039, 0.035664665036766185, 7.3426192206140355, -2.985540270528168, -5.056178839583369, 4.64925160045646 +231.72011847671533, -1.9327107727668158, 3.890563989180861, 12.664144693388035, 0.9935412467248186, -0.2862232828015497, 9.132279311572187, -2.110651184862075, -4.655503816129958, 3.8907674931773646 +250.55897314851072, -1.6644238369567645, 3.517251026764783, 11.911558118996298, 1.0482694668089272, 0.13095388454828438, 8.516611836152205, -4.859511259725815, -6.307945748220399, 3.658058643680656 +245.42887790026967, -1.0816394810201237, 2.289744002549769, 13.657409421843159, 0.8142888342443758, -0.04150707241255358, 9.203878939566142, -5.161926239106582, -6.446749987836009, 3.0728867938117457 +242.3231609732797, -0.4452684649024127, 0.7456299456684219, 15.441591063800441, 0.30710470190578376, -0.10733247277961101, 10.11141685411001, -6.03442928564731, -7.0876717078942235, 3.011204370346267 +212.26235816069223, -0.10201081564161957, 1.399859991463343, 17.991490414186483, 0.04704140095474385, -0.47145030673970734, 11.055780078503417, -4.639959657743843, -7.011818097489205, 3.8936391855194357 +225.3409145293474, 0.1724392330527058, 0.6055437349533845, 17.579135369672112, 0.10230407486078205, -0.6757237311872994, 10.592633794669545, -2.9445925857470643, -6.157492381354134, 3.58849240560171 +80.82657610003304, -0.6298779405782332, 0.5648077202376103, 24.715730819329295, -0.14811865134363086, -0.5698754650523667, 9.250933090074573, -3.6291510695425626, -11.054871579156757, 10.13728937143654 +134.15099029526542, -0.9579282321373104, 0.5060773963280162, 21.858604559555694, -0.03940011538399622, -0.5612085351482665, 7.978496571384874, -3.078017503179077, -10.06814870094467, 8.72744878187007 +153.02813186654794, 0.23760521546554147, -0.504697818970974, 20.675004771335075, -0.6510096114695425, -0.33093304822234815, 7.580044280941205, -3.5309704191874003, -10.398578377933399, 8.620259907834836 +164.9884216945905, 0.3719306640737773, -0.04575481711413776, 19.017884512521547, -0.08015497383939774, -0.31257318336229944, 7.156959361748104, -2.6141417639356446, -10.247858010819375, 7.455383087432151 +167.6473492817836, 0.720004728120701, 0.7124256056198068, 19.57992289771809, -0.32412304413900395, -0.5201157247221401, 7.757127757312468, -1.6714572373656198, -9.76074489699615, 6.640760226405182 +189.30033171039352, 0.8766335741518906, -0.6585564370545125, 19.204749877792178, -0.8569392874810992, -0.5219462743577535, 7.439084848128363, -1.5626151117062854, -9.487767473636728, 6.204382220385421 +204.59116819315682, 0.8780644995858191, -0.8088083451254775, 18.961508453829328, -1.0853801097749338, -0.6948773014165497, 7.461618105354222, -0.2215572464269695, -9.084864087753948, 5.798599736945661 +228.21913480109484, 1.2856343759789284, -1.4340531896081723, 18.9365806273426, -1.6959347974934058, -0.7649016951084304, 7.100776822738096, 0.07984714827085049, -8.969299027943029, 5.744951684137552 +235.09879042899163, 1.496288142722877, -0.6878238832747567, 18.12288152554205, -1.5962816750791542, -0.42659503333161797, 6.542132536657332, -1.7586619582513698, -9.751983305640358, 5.064603240899642 +239.29045203836193, 1.6294094361144897, -0.7650776654905631, 17.796333282039686, -1.5666663380933001, -0.22518278692154098, 6.628953009831348, -2.908453951519584, -9.722867523509674, 4.58605181123809 +254.86568536113435, 1.3109414916186113, -0.55424620192639, 17.022768346595, -1.3788706410799434, -0.13484369737141183, 6.04502762621443, -3.9311319151645847, -9.863068171707187, 3.6769117974588412 +281.8154933086231, 1.129842211270477, 0.14273340423114156, 16.282060988854397, -1.7092764619284673, -0.23319093344914815, 5.940648461761723, -3.695858465185525, -9.42859419017012, 3.2052169437320117 +276.3229150690568, 1.0883548699095489, -0.36024779368080895, 16.64774954971222, -1.3906572347111659, -0.3854549626075618, 6.912763763035051, -2.606614640170045, -8.610124997859474, 2.6614503348838023 +294.11496289546784, 0.9822110528340824, -0.7151175398853585, 16.219682938338163, -1.5643562594483646, -0.31386972129882507, 6.594454077342676, -3.2462593542184184, -8.948398944134029, 2.3429054135318337 +301.90421388564585, 0.6925496596397154, -0.7227370674357545, 16.806642553219792, -1.609410332026923, -0.39915531629201423, 6.697346507071404, -3.62924956845141, -8.640487622428884, 1.8521480536836272 +306.41538927437574, 0.7609067732805532, -1.1551957011850345, 16.867072257573177, -1.5672410609550105, -0.43008990942105846, 6.923479082738897, -3.314197302647872, -8.46411517441341, 2.167657903449299 +317.551119676939, 1.004414233346496, -1.5050500244469036, 16.599592233691695, -1.71776037384109, -0.45127657747234495, 6.527340892056589, -3.3414195686251507, -8.214107625312204, 1.9394316109013559 +341.7597131224822, 0.26977382466248145, -1.9216722717393893, 16.310005189092987, -1.6943674673209002, -0.6235545162178932, 6.438852639613259, -2.51181443231576, -6.571505773103578, 1.5298625380875803 +333.390137154505, 0.32217117185520683, -2.7281900801142136, 17.813006490612192, -1.7928652567031018, -0.5521702147072872, 7.101827285293332, -3.58593596751861, -6.565833617070615, 1.2099386895126665 +339.55464156178755, 0.8245071161620294, -3.4485052424811267, 19.332604761734082, -2.1939754042547186, -0.6048920489474232, 8.970896014527506, -3.95809623409421, -7.407118209270082, 2.024758727785643 +346.6743001975263, 0.493680910031844, -3.048399237002367, 18.69052845210739, -1.9674710898711616, -0.5437012349065763, 8.818957605130883, -3.9068534700878876, -7.863274483772511, 1.9213384867334815 +330.0106336188931, 0.22718663771597358, -3.5325148940228464, 19.39193336290396, -1.9222629713556987, -0.7463821624800002, 9.300055363849776, -2.1015894646198676, -7.00322753286668, 2.1375662514092872 +229.36919365267022, -1.6496020428974534, 3.8805230574440372, 12.407331551622281, 1.3954669824412314, -0.741695394447007, 9.137195051161635, 0.8373839046487954, -1.0319332794259677, 3.4824800608550275 +237.78766742600584, -2.6167101219215843, 4.348238078617526, 10.927884443844423, 1.5183175015275088, -0.3710854391306358, 7.855355468987151, -0.2469775100359255, -3.2777160948037354, 4.982523348853477 +255.71899209609794, -2.4243630251251793, 4.288721074567844, 10.293673298507509, 1.3684920617013039, 0.035664665036766185, 7.3426192206140355, -2.985540270528168, -5.056178839583369, 4.64925160045646 +231.72011847671533, -1.9327107727668158, 3.890563989180861, 12.664144693388035, 0.9935412467248186, -0.2862232828015497, 9.132279311572187, -2.110651184862075, -4.655503816129958, 3.8907674931773646 +250.55897314851072, -1.6644238369567645, 3.517251026764783, 11.911558118996298, 1.0482694668089272, 0.13095388454828438, 8.516611836152205, -4.859511259725815, -6.307945748220399, 3.658058643680656 +245.42887790026967, -1.0816394810201237, 2.289744002549769, 13.657409421843159, 0.8142888342443758, -0.04150707241255358, 9.203878939566142, -5.161926239106582, -6.446749987836009, 3.0728867938117457 +257.85853286051275, -1.1673305831804792, 2.275647729516035, 13.666159702931228, 0.4889603732691617, -0.34609045378765346, 8.77683262914729, -3.8492520106384114, -5.152054032020008, 2.868277202139299 +258.8843565004098, -0.6817175816758513, 1.9533986858501242, 14.225519636717047, 0.13387637810261915, -0.42796301894310945, 9.020860830469012, -3.579352366676398, -4.906320117519008, 2.671607340906097 +272.64974289971286, -0.22281173522826003, 1.2672403667361998, 13.49559351593667, 0.08203305691410628, -0.4644708315489996, 9.073242947932586, -3.113966610855893, -3.8044356297772177, 2.0871103506116477 +274.9877486717609, 4.355214165841781E-4, 1.3110396357152174, 13.818864770546273, -0.21534778404672883, -0.26069611901382195, 8.792457389556859, -4.999887300494699, -4.392540031706634, 2.0227061080061417 +294.94482380604, 0.1745197994171811, 1.7121733121762719, 13.050706159926744, -0.3729048136624362, -0.26036060793223975, 8.456258928163216, -4.942750551351043, -4.641493585285737, 2.0121937464222612 +307.9655345706199, 0.11428609273034993, 1.374164800587995, 11.719602313840106, 0.11841420322993984, -0.44063158241665484, 8.205775856706484, -3.030028096217463, -3.1779746024154614, 2.121148300050486 +312.3256220558909, 0.011201434646514963, 1.452817338218543, 12.105032211608798, -0.47337850793509034, -0.5632580694601366, 8.764717810533975, -2.661252665881481, -3.2869396455817017, 1.7955721478748297 +324.20623897735345, 0.0873004644500811, 1.5321088683365287, 11.811011691739893, -0.5683368816934772, -0.6896581182728558, 8.485549706186315, -1.698726981804751, -2.967275780722095, 1.480207895957958 +329.47759551121067, -0.4082440937780065, 1.1645471469665394, 11.806388402497104, -0.49106171924398645, -0.7815700147344362, 8.237835230470594, -1.3203718019932826, -2.4403918104578173, 1.3817857169262606 +328.16571118127223, -0.1585977864492198, 1.6996951421142736, 12.753913136262424, -0.8574571165123867, -0.6476538241519011, 8.442895023022981, -2.998259554597557, -3.9170918124181044, 2.5214337726295053 +324.1287868367564, 0.08206712954193421, 1.729096317049383, 13.580912564981864, -1.2093303526492476, -0.894830639661015, 8.539049067822411, -1.7289328521817262, -2.73557670895995, 2.6263043346580632 +326.3931543126878, -0.16503607207239537, 2.0673200870077917, 14.01346837704798, -1.2020406816982854, -0.78772382629594, 8.38475392016565, -2.5739310157677435, -3.392285232429968, 3.1509737606497 +309.5792919748969, 0.09431565877778689, 2.948776163261483, 15.022547923027224, -1.1874710752538533, -0.7642780135414742, 8.486937799403403, -3.632539128590414, -4.312791538605944, 4.287102366972652 +315.82964242588326, 0.28676222233833504, 3.4423115709198275, 14.444444561976685, -1.2305095002708286, -0.7182233805264012, 8.337048466831595, -3.9863241628277564, -4.535358634595934, 3.637834078967354 +333.6959373085428, -1.0088212446702653, 3.8090061933920563, 13.61797943445527, -0.9034030526515231, -0.17597489015930579, 6.5390014627211865, -7.234911675765791, -7.193844590830138, 3.4930294806733366 +342.14181117935436, -0.834853262716065, 3.3995760709449345, 13.198357445254775, -0.8011666532363007, -0.41089946131109967, 6.797848768436021, -5.449782711381845, -6.0626762458004775, 3.463888535341367 +336.71962563905845, -0.5320673548594255, 3.8219962982772064, 13.36822512157469, -0.6657446401281795, -0.44134064118300914, 7.550932931377796, -5.156863795103834, -6.103690117877966, 3.0399614082526316 +339.4348218794906, -1.0502064103884914, 4.020443028437693, 13.83062682189328, -0.49351734987031903, -0.7407966097659485, 8.185699844601078, -3.392158915446407, -5.3800963584425565, 3.957772315384779 +342.27182090792905, -0.9927905865477981, 4.119720255856281, 14.185242643900004, -0.6089561304679945, -0.774118543633074, 8.345564840722709, -3.396951536551656, -5.333699599482022, 3.5843331959498226 diff --git a/src/weights/beta.csv b/src/weights/beta.csv index 2d6331d..e98b019 100644 --- a/src/weights/beta.csv +++ b/src/weights/beta.csv @@ -1 +1,3 @@ -50, 10, 10, 5, 5, 5, 5, 5, 5, 5 +5, 5, 5, 5, 5, 5, 5, 5, 5, 5 +229.36919365267022, -1.6496020428974534, 3.8805230574440372, 12.407331551622281, 1.3954669824412314, -0.741695394447007, 9.137195051161635, 0.8373839046487954, -1.0319332794259677, 3.4824800608550275 +342.27182090792905, -0.9927905865477981, 4.119720255856281, 14.185242643900004, -0.6089561304679945, -0.774118543633074, 8.345564840722709, -3.396951536551656, -5.333699599482022, 3.5843331959498226