private void OnAlgorithmChanged() { if (cboAlgorithm.SelectedIndex >= 0) { string strAlgo = (cboAlgorithm.SelectedItem as ComboBoxItem).Tag.ToString(); BetterMatchMaking.Library.BetterMatchMakingCalculator calc = new Library.BetterMatchMakingCalculator(strAlgo); sspP.Visible = calc.UseParameterClassPropMinPercent; sspMinCars.Visible = calc.UseParameterMinCars; sspIR.Visible = calc.UseParameterRatingThreshold; sspMaxSofDiff.Visible = calc.UseParameterMaxSofDiff; sspMaxSofFunctStartingIRValue.Visible = calc.UseParameterMaxSofFunct; sspMaxSofFunctStartingThreshold.Visible = calc.UseParameterMaxSofFunct; sspMaxSofFunctExtraThresoldPerK.Visible = calc.UseParameterMaxSofFunct; sspTopSplitExc.Visible = calc.UseParameterTopSplitException; sspDebug.Visible = calc.UseParameterDebugFile; sspForceMidClass.Visible = calc.UseParameterNoMiddleClassesEmpty; } else { sspP.Visible = false; sspMinCars.Visible = false; sspIR.Visible = false; sspMaxSofDiff.Visible = false; sspMaxSofFunctStartingIRValue.Visible = false; sspMaxSofFunctStartingThreshold.Visible = false; sspMaxSofFunctExtraThresoldPerK.Visible = false; sspTopSplitExc.Visible = false; sspDebug.Visible = false; sspForceMidClass.Visible = false; } }
public void Demo() { // 1 : read or create a dataset containing drivers and teams var dataset = LoadCsv("..\\..\\..\\BetterMatchMaking.UI\\Bin\\Debug\\petit-le-mans-2019-fieldsize45.csv"); // or load from code //var dataset = LoadFromCode(); // 2 : instanciate calculator and parameters BetterMatchMaking.Library.BetterMatchMakingCalculator calculator = new Library.BetterMatchMakingCalculator("SmartPredictedMoveDownAffineDistribution"); calculator.ParameterMinCarsValue = 10; calculator.ParameterMaxSofDiffValue = 17; calculator.ParameterMaxSofFunctStartingIRValue = 2800; calculator.ParameterMaxSofFunctStartingThreshold = 18; calculator.ParameterMaxSofFunctExtraThresoldPerK = 11; calculator.ParameterTopSplitExceptionValue = 0; calculator.ParameterNoMiddleClassesEmptyValue = 0; calculator.ParameterRatingThresholdValue = 1700; // 3 : Launch int fieldSize = 45; calculator.Compute(dataset, fieldSize); // 4 : Display Results in console foreach (var split in calculator.Splits) { Console.WriteLine("### SPLIT " + split.Number + " ###"); for (int i = 0; i < 4; i++) { int classid = split.GetClassId(i); if (classid > 0) { Console.WriteLine(" !!! CLASS " + classid + " !!!"); var cars = split.GetClassCars(i); if (cars != null) { foreach (var car in cars) { Console.WriteLine(" - [IR " + car.rating + "]" + car.name + " - "); } } } } } // 5 : enjoy Console.WriteLine("Press ENTER to exit"); Console.ReadLine(); }
public void Test(string csv) { // get fieldsize from file name int fieldSize = 0; string cst_fieldsize = "-fieldsize"; if (csv.Contains(cst_fieldsize)) { string strfieldsize = csv.Substring( csv.IndexOf(cst_fieldsize) + cst_fieldsize.Length, 2 ); Int32.TryParse(strfieldsize, out fieldSize); } // --> // read csv var parser = new BetterMatchMaking.Library.Data.CsvParser(); parser.Read(csv); var entrylist = parser.DistinctCars; // --> // run algorithm BetterMatchMaking.Library.BetterMatchMakingCalculator calculator = new Library.BetterMatchMakingCalculator("SmartPredictedMoveDownAffineDistribution"); for (int p = 5; p < 50; p++) { Console.WriteLine(""); Console.WriteLine("------------------------------------"); Console.WriteLine(new FileInfo(csv).Name); Console.WriteLine("Max Soff Diff = " + p); calculator.ParameterMinCarsValue = p; calculator.ParameterMaxSofDiffValue = 17; calculator.ParameterMaxSofFunctStartingIRValue = 2800; calculator.ParameterMaxSofFunctStartingThreshold = 18; calculator.ParameterMaxSofFunctExtraThresoldPerK = 11; calculator.ParameterTopSplitExceptionValue = 0; calculator.ParameterNoMiddleClassesEmptyValue = 0; calculator.ParameterRatingThresholdValue = 1700; calculator.Compute(entrylist, fieldSize); var audit = calculator.GetAudit(); Console.WriteLine(audit.ToString()); Console.WriteLine("AverageSplitClassesSofDifference = " + audit.AverageSplitClassesSofDifference); Console.WriteLine("MinSplitSizePercent = " + audit.MinSplitSizePercent); if (!audit.Success) { testsFailed++; } if (audit.MinSplitSizePercent < 0.5) { testsSplitsDiff++; } if (audit.IROrderInconsistencySplits.Count > 0) { } diff.Add(audit.AverageSplitClassesSofDifference); tests++; } // --> }