コード例 #1
0
        public void EvaluateFitnessAllInOneRow()
        {
            var fitness    = new StretchFitness(definitionSample);
            var chromosome = new StretchChromosome(24, 5, 0, 1, 2, 3, 4);

            Assert.That(
                fitness.WeightedDistanceFor(chromosome),
                Is.EqualTo(1 * 7 + 2 * 4 + 3 * 2 + 1 * 6)
                );
            Assert.AreEqual(0.2437085, fitness.Evaluate(chromosome), precision);
        }
コード例 #2
0
        public void DefineFitnessFromString()
        {
            var fitness = new StretchFitness(definitionSample);

            Assert.That(fitness.Width, Is.EqualTo(6));
            Assert.That(fitness.Height, Is.EqualTo(4));
            Assert.That(fitness.Nodes.Length, Is.EqualTo(5));
            Assert.That(
                fitness.Nodes.Select(n => n.Name),
                Is.EqualTo(new string[] { "Superman", "Kryptonite", "LexLuthor", "Batman", "Joker" })
                );
        }
コード例 #3
0
        public void EvaluateFitnessWithDiagonal()
        {
            var fitness    = new StretchFitness(definitionSample);
            var chromosome = new StretchChromosome(24, 5, 0, 7, 14, 21, 16);
            var sqrt2      = Math.Sqrt(2);

            Assert.AreEqual(
                fitness.WeightedDistanceFor(chromosome),
                sqrt2 * 7 + 2 * sqrt2 * 4 + 3 * sqrt2 * 2 + sqrt2 * 6,
                precision
                );
            Assert.AreEqual(0.3446559, fitness.Evaluate(chromosome), precision);
        }
コード例 #4
0
        public void EvaluateGeneralFitness()
        {
            var fitness    = new StretchFitness(definitionSample);
            var chromosome = new StretchChromosome(24, 5, 5, 12, 19, 0, 23);
            var diag       = Math.Sqrt(34);
            var diag2      = Math.Sqrt(25);
            var diag3      = Math.Sqrt(29);

            Assert.AreEqual(
                fitness.WeightedDistanceFor(chromosome),
                diag3 * 7 + diag2 * 4 + 5 * 2 + diag * 6,
                precision
                );
            Assert.AreEqual(0.9268313, fitness.Evaluate(chromosome), precision);
        }
コード例 #5
0
 public override IFitness CreateFitness()
 {
     if (string.IsNullOrEmpty(m_problemDefinition))
     {
         return(null);
     }
     try
     {
         m_fitness = new StretchFitness(m_problemDefinition);
         InitializeDrawingScales();
         return(m_fitness);
     }
     catch (Exception)
     {
         var md = new MessageDialog(Context.GtkWindow,
                                    DialogFlags.DestroyWithParent, MessageType.Error,
                                    ButtonsType.Close, "Error loading file");
         md.Run();
         md.Destroy();
         return(null);
     }
 }