Esempio n. 1
0
        static void Main(string[] args)
        {
            // Create and initialize PRNG.
            Globals.Random = new RandomOps.MersenneTwister();

            // Set the max number of optimization iterations to perform.
            Problem.MaxIterations = NumIterations;

            // Wrap the optimizer in a logger of result-statistics.
            bool       StatisticsOnlyFeasible = true;
            Statistics Statistics             = new Statistics(Optimizer, StatisticsOnlyFeasible);

            // Wrap it again in a repeater.
            Repeat repeat = new RepeatSum(Statistics, NumRuns);

            // Output optimization settings.
            Console.WriteLine("Problem: {0}", Problem.Name);
            Console.WriteLine("Optimizer: {0}", Optimizer.Name);
            Console.WriteLine("Using following parameters:");
            Tools.PrintParameters(Optimizer, Optimizer.DefaultParameters);
            Console.WriteLine("Number of runs: {0}", NumRuns);
            Console.WriteLine("Dimensionality: {0}", Dim);
            Console.WriteLine("Dim-factor: {0}", DimFactor);
            Console.WriteLine();

            // Start-time.
            DateTime t1 = DateTime.Now;

            // Perform optimizations.
            double fitness = repeat.Fitness();

            // End-time.
            DateTime t2 = DateTime.Now;

            // Compute result-statistics.
            Statistics.Compute();

            // Output best results, as well as result-statistics.
            Console.WriteLine("Best parameters found:");
            Tools.PrintParameters(Problem, Statistics.BestParameters);
            Console.WriteLine("With fitness: {0}", Tools.FormatNumber(Statistics.FitnessMin));
            Console.WriteLine("Time usage: {0}", t2 - t1);
            Console.WriteLine("Mean number of iterations: {0}", Statistics.IterationsMean);
            Console.WriteLine();
            Console.WriteLine("x\ty\tComputedY");
            Console.WriteLine("--------------------");

            // Output fitted curve.
            for (int i = 0; i < X.Length; i++)
            {
                double x         = X[i];
                double y         = Y[i];
                double computedY = Problem.ComputeY(Statistics.BestParameters, x);

                Console.WriteLine("{0}\t{1}\t{2}",
                                  Tools.FormatNumber(x),
                                  Tools.FormatNumber(y),
                                  Tools.FormatNumber(computedY));
            }
        }