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)); } }