public void GetNeigborForElementWithNoNeighbors_ReturnRandomElement(bool selectNeighborWithLeastNeighbors) { var array1 = new[] { 1, 2, 3, 4, 5 }; var array2 = new[] { 1, 2, 3, 4, 5 }; int got4 = 0, got5 = 0; for (int i = 0; i < 100; i++) { var adjacencyMatrix = new NonReapetingAdjacencyMatrix <int>(array1, array2, selectNeighborWithLeastNeighbors); adjacencyMatrix.GetNeighbor(1); adjacencyMatrix.GetNeighbor(3); var neighbor = adjacencyMatrix.GetNeighbor(2); if (neighbor == 4) { got4++; } else if (neighbor == 5) { got5++; } else { Assert.Fail("We didn't get 4 or 5. Got " + neighbor); } } Assert.IsTrue(35 < got4); Assert.IsTrue(35 < got4); }
public void GetNeigbor_SelectNeighborWithLeastNeighbors_Test2() { var array1 = new[] { 2, 1, 3, 4, 5 }; var array2 = new[] { 1, 2, 3, 4, 5 }; var adjacencyMatrix = new NonReapetingAdjacencyMatrix <int>(array1, array2, true); var neighbor = adjacencyMatrix.GetNeighbor(3); Assert.IsTrue(neighbor == 4); }
public IChromosome Crossover(IChromosome chromosome1, IChromosome chromosome2) { var vector1 = ((VectorChromosome <T>)chromosome1).GetVector(); var vector2 = ((VectorChromosome <T>)chromosome2).GetVector(); var length = vector1.Length; var firstElement = vector1[ProbabilityUtils.GetRandomInt(0, vector1.Length)]; var childArray = new NonReapetingAdjacencyMatrix <T>(vector1, vector2, false).Crossover(firstElement, length); return(new VectorChromosome <T>(childArray, mutationManager, evaluator)); }