Beispiel #1
0
        static void Main(string[] args)
        {
            //Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
            //CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-US");
            //Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

            var experimentParameters = new ExperimentParameters(
                numberOfDimensions: 2,
                basePopulationSize: 10,
                offspringPopulationSize: 100,
                numberOfGenerations: 100,
                //seed: new Random().Next(),
                seed: 1,
                //seed: 1971749862,
                //oneFifthRuleCheckInterval: 10,
                //individualLearningRate: 0.1, //0.47287080450158792
                //globalLearningRate: 0.1, //0.31622776601683794
                typeOfParentsSelection: ParentsSelectionType.Even,
                typeOfStdDeviationsRecombination: RecombinationType.Intermediate,
                typeOfRotationsRecombination: RecombinationType.Intermediate,
                useRedundantConstraintsRemoving: true,
                useDataNormalization: true,
                allowQuadraticTerms: true,
                useRecombination: false,
                trackEvolutionSteps: true,
                useSeeding: true,
                numberOfParentsSolutionsToSelect: 5,
                numberOfPositivePoints: 500,
                numberOfNegativePoints: 1500,
                //ballnBoundaryValue: 10,
                //simplexnBoundaryValue: 10,
                typeOfBenchmark: BenchmarkType.Simplexn);

            var enginesFactory = new EnginesFactory();

            var engine = enginesFactory.Create(experimentParameters);

            var distanceCalculator      = new CanberraDistanceCalculator();
            var positivePointsGenerator = new PositivePointsGenerator();
            var positiveTrainingPoints  = positivePointsGenerator.GeneratePoints(experimentParameters.NumberOfPositivePoints, engine.Benchmark.Domains, engine.Benchmark.Constraints);

            var negativePointsGenerator = new NegativePointsGenerator(positiveTrainingPoints, distanceCalculator, new NearestNeighbourDistanceCalculator(distanceCalculator));
            //var negativeTrainingPoints = negativePointsGenerator.GeneratePoints(experimentParameters.NumberOfNegativePoints, engine.Benchmark.Domains);
            var negativeTrainingPoints = negativePointsGenerator.GeneratePoints(experimentParameters.NumberOfNegativePoints, engine.Benchmark.Domains, engine.Benchmark.Constraints);

            var trainingPoints = positiveTrainingPoints.Concat(negativeTrainingPoints).ToArray();

            var testPointsGenerator = new TestPointsGenerator();
            var testPoints          = testPointsGenerator.GeneratePoints(experimentParameters.NumberOfTestPoints, engine.Benchmark.Domains, engine.Benchmark.Constraints);

            Console.WriteLine("Evolution starts!");
            var mathModel = engine.SynthesizeModel(trainingPoints);

            var statistics = engine.EvaluateModel(testPoints);

            var visualization = PrepareVisualisation(experimentParameters, engine, positiveTrainingPoints, negativeTrainingPoints,
                                                     testPoints);

            visualization.Show();

            Console.WriteLine("==========================================");
            Console.WriteLine("=============== PARAMETERS ===============");
            Console.WriteLine("==========================================");
            Console.WriteLine(experimentParameters.ToPrintableString());
            Console.WriteLine();
            Console.WriteLine("==========================================");
            Console.WriteLine("============= REFERENCE MODEL ============");
            Console.WriteLine("==========================================");
            Console.WriteLine(mathModel.ReferenceModelInLpFormat);
            Console.WriteLine();
            Console.WriteLine("==========================================");
            Console.WriteLine("============ SYNTHESIZED MODEL ===========");
            Console.WriteLine("==========================================");
            Console.WriteLine(mathModel.SynthesizedModelInLpFormat);
            Console.WriteLine();
            Console.WriteLine("==========================================");
            Console.WriteLine("=============== STATISTICS ===============");
            Console.WriteLine("==========================================");
            Console.WriteLine(statistics.ToPrintableString());
            Console.WriteLine();
            Console.ReadKey();
        }