本文整理汇总了C#中Permutation.Validate方法的典型用法代码示例。如果您正苦于以下问题:C# Permutation.Validate方法的具体用法?C# Permutation.Validate怎么用?C# Permutation.Validate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Permutation
的用法示例。
在下文中一共展示了Permutation.Validate方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TranslocationManipulatorApplyTest
public void TranslocationManipulatorApplyTest() {
TestRandom random = new TestRandom();
Permutation parent, expected;
// The following test is based on an example from Larranaga, P. et al. 1999. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review, 13, p. 24
random.Reset();
random.IntNumbers = new int[] { 2, 4, 4 };
parent = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7 });
Assert.IsTrue(parent.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 5, 6, 2, 3, 4, 7 });
Assert.IsTrue(expected.Validate());
TranslocationManipulator.Apply(random, parent);
Assert.IsTrue(parent.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, parent));
}
示例2: InversionManipulatorApplyTest
public void InversionManipulatorApplyTest() {
TestRandom random = new TestRandom();
Permutation parent, expected;
// The following test is based on an example from Eiben, A.E. and Smith, J.E. 2003. Introduction to Evolutionary Computation. Natural Computing Series, Springer-Verlag Berlin Heidelberg, pp. 46-47
random.Reset();
random.IntNumbers = new int[] { 1, 4 };
parent = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 });
Assert.IsTrue(parent.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 4, 3, 2, 1, 5, 6, 7, 8 });
Assert.IsTrue(expected.Validate());
InversionManipulator.Apply(random, parent);
Assert.IsTrue(parent.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, parent));
}
示例3: Swap3ManipulatorApplyTest
public void Swap3ManipulatorApplyTest() {
TestRandom random = new TestRandom();
Permutation parent, expected;
// Test manipulator
random.Reset();
random.IntNumbers = new int[] { 1, 3, 6 };
random.DoubleNumbers = new double[] { 0 };
parent = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 });
Assert.IsTrue(parent.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 3, 2, 6, 4, 5, 1, 7, 8 });
Assert.IsTrue(expected.Validate());
Swap3Manipulator.Apply(random, parent);
Assert.IsTrue(parent.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, parent));
}
示例4: OrderCrossover2ApplyTest
public void OrderCrossover2ApplyTest() {
TestRandom random = new TestRandom();
Permutation parent1, parent2, expected, actual;
// The following test is based on an example from Affenzeller, M. et al. 2009. Genetic Algorithms and Genetic Programming - Modern Concepts and Practical Applications. CRC Press. p. 135.
random.Reset();
random.IntNumbers = new int[] { 5, 7 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 2, 5, 6, 0, 9, 1, 3, 8, 4, 7 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 2, 0, 9, 1, 3, 5, 6, 7, 8, 4 });
Assert.IsTrue(expected.Validate());
actual = OrderCrossover2.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// perform a test when the two permutations are of unequal length
random.Reset();
bool exceptionFired = false;
try {
OrderCrossover.Apply(random, new Permutation(PermutationTypes.RelativeUndirected, 8), new Permutation(PermutationTypes.RelativeUndirected, 6));
}
catch (System.ArgumentException) {
exceptionFired = true;
}
Assert.IsTrue(exceptionFired);
}
示例5: EdgeRecombinationCrossoverApplyTest
public void EdgeRecombinationCrossoverApplyTest() {
TestRandom random = new TestRandom();
Permutation parent1, parent2, expected, actual;
// The following test is based on an example from Eiben, A.E. and Smith, J.E. 2003. Introduction to Evolutionary Computation. Natural Computing Series, Springer-Verlag Berlin Heidelberg, pp. 54-55
random.Reset();
random.IntNumbers = new int[] { 0 };
random.DoubleNumbers = new double[] { 0.5, 0, 0, 0 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 8, 2, 6, 7, 1, 5, 4, 0, 3 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 4, 5, 1, 7, 6, 2, 8, 3 });
Assert.IsTrue(expected.Validate());
actual = EdgeRecombinationCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// perform a test when the two permutations are of unequal length
random.Reset();
bool exceptionFired = false;
try {
EdgeRecombinationCrossover.Apply(random, new Permutation(PermutationTypes.RelativeUndirected, 8), new Permutation(PermutationTypes.RelativeUndirected, 6));
}
catch (System.ArgumentException) {
exceptionFired = true;
}
Assert.IsTrue(exceptionFired);
}
示例6: CyclicCrossoverApplyTest
public void CyclicCrossoverApplyTest() {
TestRandom random = new TestRandom();
Permutation parent1, parent2, expected, actual;
// The following test is based on an example from Larranaga, P. et al. 1999. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review, 13
random.Reset();
random.DoubleNumbers = new double[] { 0.9 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 1, 3, 5, 7, 6, 4, 2, 0 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 5, 3, 6, 4, 2, 7 });
Assert.IsTrue(expected.Validate());
actual = CyclicCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// perform a test when the two permutations are of unequal length
random.Reset();
bool exceptionFired = false;
try {
CyclicCrossover.Apply(random, new Permutation(PermutationTypes.RelativeUndirected, 8), new Permutation(PermutationTypes.RelativeUndirected, 6));
}
catch (System.ArgumentException) {
exceptionFired = true;
}
Assert.IsTrue(exceptionFired);
}
示例7: MaximalPreservativeCrossoverApplyTest
public void MaximalPreservativeCrossoverApplyTest() {
TestRandom random = new TestRandom();
Permutation parent1, parent2, expected, actual;
// The following test is based on an example from Larranaga, 1999. Genetic Algorithms for the Traveling Salesman Problem.
random.Reset();
random.IntNumbers = new int[] { 3, 2 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 1, 3, 5, 7, 6, 4, 2, 0 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 1, 0, 2, 3, 4, 5, 7, 6 });
Assert.IsTrue(expected.Validate());
actual = MaximalPreservativeCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// perform a test when the two permutations are of unequal length
random.Reset();
bool exceptionFired = false;
try {
MaximalPreservativeCrossover.Apply(random, new Permutation(PermutationTypes.RelativeUndirected, 8), new Permutation(PermutationTypes.RelativeUndirected, 6));
}
catch (System.ArgumentException) {
exceptionFired = true;
}
Assert.IsTrue(exceptionFired);
}
示例8: CosaCrossoverApplyTest
public void CosaCrossoverApplyTest() {
TestRandom random = new TestRandom();
Permutation parent1, parent2, expected, actual;
// The following test is based on an example from Wendt, O. 1994. COSA: COoperative Simulated Annealing - Integration von Genetischen Algorithmen und Simulated Annealing am Beispiel der Tourenplanung. Dissertation Thesis. IWI Frankfurt.
random.Reset();
random.IntNumbers = new int[] { 1 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 5, 2, 4, 3 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 3, 0, 2, 1, 4, 5 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 4, 2, 5, 3 });
Assert.IsTrue(expected.Validate());
actual = CosaCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// The following test is not based on published examples
random.Reset();
random.IntNumbers = new int[] { 4 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 1, 3, 5, 7, 6, 4, 2, 0 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 7, 6, 5, 3, 4, 2, 1, 0 });
Assert.IsTrue(expected.Validate());
actual = CosaCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// The following test is not based on published examples
random.Reset();
random.IntNumbers = new int[] { 5 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 4, 3, 5, 1, 0, 9, 7, 2, 8, 6 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 7, 6, 2, 3, 4, 5, 1, 0, 9, 8 });
Assert.IsTrue(expected.Validate());
actual = CosaCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// perform a test when the two permutations are of unequal length
random.Reset();
bool exceptionFired = false;
try {
CosaCrossover.Apply(random, new Permutation(PermutationTypes.RelativeUndirected, 8), new Permutation(PermutationTypes.RelativeUndirected, 6));
}
catch (System.ArgumentException) {
exceptionFired = true;
}
Assert.IsTrue(exceptionFired);
}
示例9: UniformLikeCrossoverApplyTest
public void UniformLikeCrossoverApplyTest() {
// test from the paper
IRandom random = new TestRandom(new int[] { 0 }, new double[] { 0.2, 0.7, 0.2, 0.2 }); // TODO: Initialize to an appropriate value
Permutation parent1 = new Permutation(PermutationTypes.Absolute,
new int[] { 3, 2, 0, 7, 5, 4, 1, 6 });
Assert.IsTrue(parent1.Validate());
Permutation parent2 = new Permutation(PermutationTypes.Absolute,
new int[] { 5, 0, 4, 7, 1, 3, 2, 6 });
Assert.IsTrue(parent2.Validate());
Permutation expected = new Permutation(PermutationTypes.Absolute,
new int[] { 3, 0, 4, 7, 5, 2, 1, 6 });
Assert.IsTrue(expected.Validate());
Permutation actual;
actual = UniformLikeCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
}
示例10: OrderCrossoverApplyTest
public void OrderCrossoverApplyTest() {
TestRandom random = new TestRandom();
Permutation parent1, parent2, expected, actual;
// The following test is based on an example from Eiben, A.E. and Smith, J.E. 2003. Introduction to Evolutionary Computation. Natural Computing Series, Springer-Verlag Berlin Heidelberg, pp. 55-56
random.Reset();
random.IntNumbers = new int[] { 3, 6 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 8, 2, 6, 7, 1, 5, 4, 0, 3 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 2, 7, 1, 3, 4, 5, 6, 0, 8 });
Assert.IsTrue(expected.Validate());
actual = OrderCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// The following test is based on an example from Larranaga, P. et al. 1999. Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators. Artificial Intelligence Review, 13, pp. 129-170.
random.Reset();
random.IntNumbers = new int[] { 2, 4 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 1, 3, 5, 7, 6, 4, 2, 0 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 7, 6, 2, 3, 4, 0, 1, 5 });
actual = OrderCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// The following test is based on an example from Talbi, E.G. 2009. Metaheuristics - From Design to Implementation. Wiley, p. 218.
random.Reset();
random.IntNumbers = new int[] { 2, 5 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 7, 3, 0, 4, 8, 2, 5, 1, 6 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 0, 8, 2, 3, 4, 5, 1, 6, 7 });
Assert.IsTrue(expected.Validate());
actual = OrderCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// The following test is not based on published examples
random.Reset();
random.IntNumbers = new int[] { 0, 5 };
parent1 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 2, 1, 4, 3, 7, 8, 6, 0, 5, 9 });
Assert.IsTrue(parent1.Validate());
parent2 = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 5, 3, 4, 0, 9, 8, 2, 7, 1, 6 });
Assert.IsTrue(parent2.Validate());
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 2, 1, 4, 3, 7, 8, 6, 5, 0, 9 });
Assert.IsTrue(expected.Validate());
actual = OrderCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// based on the previous with changed breakpoints
random.Reset();
random.IntNumbers = new int[] { 6, 9 };
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 3, 4, 8, 2, 7, 1, 6, 0, 5, 9 });
Assert.IsTrue(expected.Validate());
actual = OrderCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// another one based on the previous with changed breakpoints
random.Reset();
random.IntNumbers = new int[] { 0, 9 };
expected = new Permutation(PermutationTypes.RelativeUndirected, new int[] { 2, 1, 4, 3, 7, 8, 6, 0, 5, 9 });
Assert.IsTrue(expected.Validate());
actual = OrderCrossover.Apply(random, parent1, parent2);
Assert.IsTrue(actual.Validate());
Assert.IsTrue(Auxiliary.PermutationIsEqualByPosition(expected, actual));
// perform a test when the two permutations are of unequal length
random.Reset();
bool exceptionFired = false;
try {
OrderCrossover.Apply(random, new Permutation(PermutationTypes.RelativeUndirected, 8), new Permutation(PermutationTypes.RelativeUndirected, 6));
}
catch (System.ArgumentException) {
exceptionFired = true;
}
Assert.IsTrue(exceptionFired);
}