public void ChromosomeGenesCanBeForcedForTestPurpose() { var chromosome = new StretchChromosome(5, 2, 4, 1); var positions = chromosome.GetGenes().Select(g => (int)g.Value).ToArray(); Assert.That(positions[0], Is.EqualTo(4)); Assert.That(positions[1], Is.EqualTo(1)); }
private void DrawNodes(StretchChromosome chromosome) { foreach (var p in m_fitness.GetPositionsFor(chromosome)) { Context.Layout.SetMarkup("<span color='blue'>{0}</span>".With(p.Node.Name)); Context.Buffer.DrawLayout(Context.GC, ScaleX(p.X, 0), ScaleY(p.Y, 0), Context.Layout); } }
public void ChromosomeGenesArePositionsWithinTheDefinedGrid() { var chromosome = new StretchChromosome(5, 2); var positions = chromosome.GetGenes().Select(g => (int)g.Value).ToArray(); Assert.That(positions.Length, Is.EqualTo(2)); Assert.That(positions[0], Is.Not.EqualTo(positions[1])); Assert.That(positions[0], Is.InRange(0, 4)); Assert.That(positions[1], Is.InRange(0, 4)); }
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); }
public void NewChromosomeHasSameStructureAsExistingOne() { var chromosomeRef = new StretchChromosome(5, 2); var chromosome = chromosomeRef.CreateNew(); var positions = chromosome.GetGenes().Select(g => (int)g.Value).ToArray(); Assert.That(positions.Length, Is.EqualTo(2)); Assert.That(positions[0], Is.Not.EqualTo(positions[1])); Assert.That(positions[0], Is.InRange(0, 4)); Assert.That(positions[1], Is.InRange(0, 4)); }
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); }
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); }
public void GeneForSpecifiedIndexCanHaveAllKindOfExpectedValues() { var kindOfGenes = Enumerable.Repeat(0, 5).ToArray(); var chromosome = new StretchChromosome(5, 2); for (;;) { var newGene = chromosome.GenerateGene(0); kindOfGenes[(int)newGene.Value] = 1; if (kindOfGenes.Sum() == 5) { break; } } }
public void RandomChromosomesEnsureThatWhenTryingEnoughNewChromosomeHasFullyDifferentGenes() { var chromosomeRef = new StretchChromosome(5, 2); var positionsRef = chromosomeRef.GetGenes().Select(g => (int)g.Value).ToArray(); for (;;) { var chromosome = chromosomeRef.CreateNew(); var positions = chromosome.GetGenes().Select(g => (int)g.Value).ToArray(); if (positions[0] != positionsRef[0] && positions[1] != positionsRef[1]) { break; } } }
public void RandomChromosomesEnsureThatWhenTryingEnoughWeCanAllKindOfGenes() { var kindOfGenes = Enumerable.Repeat(0, 2 * 5).ToArray(); for (;;) { var chromosome = new StretchChromosome(5, 2); var positions = chromosome.GetGenes().Select(g => (int)g.Value).ToArray(); kindOfGenes[positions[0]] = 1; kindOfGenes[5 + positions[1]] = 1; if (kindOfGenes.Sum() == 10) { break; } } }
private void DrawPairs(StretchChromosome chromosome) { if (!m_showPairs) { return; } Context.GC.RgbFgColor = new Gdk.Color(255, 0, 0); foreach (var pair in m_fitness.GetPairsFor(chromosome)) { if (pair.Weigth == 0) { continue; } Context.GC.SetLineAttributes(pair.Weigth, Gdk.LineStyle.DoubleDash, Gdk.CapStyle.Butt, Gdk.JoinStyle.Round); Context.Buffer.DrawLine(Context.GC, ScaleX(pair.P1.X, 2), ScaleY(pair.P1.Y, 2), ScaleX(pair.P2.X, 2), ScaleY(pair.P2.Y, 2)); } }