Пример #1
0
        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;
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        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++;
            }

            // -->
        }