private static void AddPopulationSizeExperiment(ExperimentSet newSet, int populationSize)
 {
     var newExperiment = new Experiment();
     newSet.Experiments.Add(newExperiment);
     newExperiment.PopulationSize = populationSize;
     newExperiment.Label = "Population Size: " + populationSize;
 }
 private static void AddMutationPercentExperiment(ExperimentSet newSet, double mutationPercent)
 {
     var newExperiment = new Experiment();
     newSet.Experiments.Add(newExperiment);
     newExperiment.PercentToMutate = mutationPercent;
     newExperiment.Label = "Mutation Percent: " + mutationPercent;
 }
 private static void AddCrossoverPercentExperiment(ExperimentSet newSet, double crossoverPercent)
 {
     var newExperiment = new Experiment();
     newSet.Experiments.Add(newExperiment);
     newExperiment.PercentToCrossover = crossoverPercent;
     newExperiment.Label = "Crossover Percent: " + crossoverPercent;
 }
 private static void AddCrossoverMethodExperiment(ExperimentSet newSet, ICrossoverMethod crossoverMethod, string title)
 {
     var newExperiment = new Experiment();
     newSet.Experiments.Add(newExperiment);
     newExperiment.CrossoverMethod = crossoverMethod;
     newExperiment.Label = "Crossover Method: " + title;
 }
 private static void AddCrossoverHandlerExperiment(ExperimentSet newSet, ICrossoverHandler crossoverHandler, string title)
 {
     var newExperiment = new Experiment();
     newSet.Experiments.Add(newExperiment);
     newExperiment.CrossoverHandler = crossoverHandler;
     newExperiment.Label = "Selection Process: " + title;
 }
Exemple #6
0
 public static float fitness(float[,] groundTruth, float[] userTrusts, UserUpdate[,,] updates, FitnessParameter fitnessParams)
 {
     return(Experiment.execute(groundTruth, userTrusts, updates, fitnessParams));
 }
        private static int ExecuteExperiment(Experiment experiment)
        {
            //returns milliseconds to get target string
            const int timesToTest = 20;

            var tests = 0;
            //var generationTotal = 0;
            var timeTotal = 0;
            while (tests < timesToTest)
            {
                var time = DateTime.Now;
                tests++;
                var hypothesisList = new List<Hypothesis>();
                for (var i = 0; i < experiment.PopulationSize; i++)
                {
                    hypothesisList.Add(Hypothesis.CreateRandomHypothesis());
                }

                var generations = 0;
                while (true)
                {
                    SortAndCull(Program.Comparer, experiment.PopulationSize, experiment.Evaluator, hypothesisList);
                    var bestHypothesis = hypothesisList.FirstOrDefault();
                    if (bestHypothesis != null)
                    {
                        var bestString = bestHypothesis.String;
                        if (bestString.Equals(experiment.TargetString)) break;
                    }
                    var newHypothesisList = experiment.CrossoverHandler.CrossoverPopulation(hypothesisList, experiment.PercentToCrossover, experiment.ChildPerPair);
                    MutatePopulation(newHypothesisList, experiment.PercentToMutate, experiment.MutationIntensity);
                    hypothesisList.AddRange(newHypothesisList);

                    generations++;
                }

                var timeElapsed = (DateTime.Now - time).Milliseconds;
                //generationTotal += generations;
                timeTotal += timeElapsed;
                //Console.WriteLine("Test "+tests+" Found in: " + generations + " generations, "+timeElapsed+" ms");
            }

            //Console.WriteLine("Average to find the goal over "+timesToTest+" trials: "+(generationTotal/timesToTest)+" generations, "+(timeTotal/timesToTest)+" ms");
            //Console.ReadLine();
            return timeTotal / timesToTest;
        }