public void Test_CreateCt() { int oppCount = 2; var pockets = PocketHelper.GetAllPockets(); //var pockets = new HePocketKind[] { HePocketKind._AA, HePocketKind._76s, HePocketKind._72o }; var pocketDist = PocketHelper.GetProbabDistr(pockets); double[,] ptPeMax = MultiplayerPocketProbability.ComputePreferenceMatrixPeMax(pockets); string xmlAt = Props.Global.Expand("${bds.DataDir}ai.pkr.holdem.learn/nlpf-1.xml"); ActionTree at = XmlToActionTree.Convert(xmlAt); string[] actionLabels = CreateActionLabels(at, 0); Dictionary <string, int> actionLabelToId = new Dictionary <string, int>(); for (int i = 0; i < actionLabels.Length; ++i) { actionLabelToId.Add(actionLabels[i], i); } double[] oppDist = MultiplayerPocketProbability.Compute(oppCount, pocketDist, ptPeMax); ChanceTree ct = PreflopStrategy.CreateCt(pockets, oppDist); //GameDefinition gd = XmlSerializerExt.Deserialize<GameDefinition>(Props.Global.Expand("${bds.DataDir}ai.pkr.metastrategy/${0}", "kuhn.gamedef.xml")); //at = CreateActionTreeByGameDef.Create(gd); //ct = CreateChanceTreeByGameDef.Create(gd); VisChanceTree.Show(ct, Path.Combine(_outDir, "ct.gv")); VisActionTree.Show(at, Path.Combine(_outDir, "at.gv")); StrategyTree[] st = SolveAndVerifyVerifySolution(at, ct, 0.001, false); double[,] fs = FlattenStrategy(st[0], 0, pockets.Length, actionLabelToId); Console.WriteLine("Result for opponent count: {0}", oppCount); Console.Write("{0,4}", oppCount); foreach (string al in actionLabels) { Console.Write("{0,20}", al); } Console.WriteLine(); int raiseCount = 0; for (int c = 0; c < pockets.Length; ++c) { Console.Write("{0,4}", HePocket.KindToString(pockets[c])); for (int j = 0; j < actionLabels.Length; ++j) { Console.Write("{0,20}", Math.Round(fs[c, j] * 100, 0)); } if (fs[c, actionLabels.Length - 1] > 0.9) { raiseCount += HePocket.KindToRange(pockets[c]).Length; } Console.WriteLine(); } Console.WriteLine("Raise count: {0}", raiseCount); }
public RangeStringInputViewModel(PreflopStrategy strategy) { this.strategy = strategy; RangeGroups = new List <RangeGroup>(); foreach (string groupKey in strategy.HandRangeGroupKeys) { RangeGroup group = new RangeGroup() { Key = groupKey, Ranges = new List <Range>() }; foreach (string rangeKey in strategy.HandRangeKeys) { group.Ranges.Add(new Range() { Key = rangeKey, Value = string.Empty }); } RangeGroups.Add(group); } }