Index: branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Problems.QuadraticAssignment-3.3/QAPMoveEvaluatorTest.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Problems.QuadraticAssignment-3.3/QAPMoveEvaluatorTest.cs	(revision 17320)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Problems.QuadraticAssignment-3.3/QAPMoveEvaluatorTest.cs	(revision 17321)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Threading;
 using HeuristicLab.Common;
 using HeuristicLab.Data;
@@ -113,6 +114,6 @@
         double moveAfter = QAPSwap2MoveEvaluator.Apply(assignment, currentMove,
                 moveBefore, symmetricWeights, symmetricDistances, lastMove);
-        double before = symmetricProblem.Evaluate(assignment);
-        double after = symmetricProblem.Evaluate(nextAssignment);
+        double before = symmetricProblem.Evaluate(assignment, CancellationToken.None);
+        double after = symmetricProblem.Evaluate(nextAssignment, CancellationToken.None);
 
         Assert.IsTrue(moveAfter.IsAlmost(after - before), "Failed on symmetric matrices: " + Environment.NewLine
@@ -122,6 +123,6 @@
         moveAfter = QAPSwap2MoveEvaluator.Apply(assignment, currentMove,
                 moveBefore, asymmetricWeights, asymmetricDistances, lastMove);
-        before = asymmetricProblem.Evaluate(assignment);
-        after = asymmetricProblem.Evaluate(nextAssignment);
+        before = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
+        after = asymmetricProblem.Evaluate(nextAssignment, CancellationToken.None);
 
         Assert.IsTrue(moveAfter.IsAlmost(after - before), "Failed on asymmetric matrices: " + Environment.NewLine
@@ -131,6 +132,6 @@
         moveAfter = QAPSwap2MoveEvaluator.Apply(assignment, currentMove,
                 moveBefore, nonZeroDiagonalWeights, nonZeroDiagonalDistances, lastMove);
-        before = nonZeroDiagonalProblem.Evaluate(assignment);
-        after = nonZeroDiagonalProblem.Evaluate(nextAssignment);
+        before = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
+        after = nonZeroDiagonalProblem.Evaluate(nextAssignment, CancellationToken.None);
 
         Assert.IsTrue(moveAfter.IsAlmost(after - before), "Failed on non-zero diagonal matrices: " + Environment.NewLine
@@ -149,23 +150,23 @@
 
         // SYMMETRIC MATRICES
-        double before = symmetricProblem.Evaluate(assignment);
+        double before = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         Swap2Manipulator.Apply(assignment, index1, index2);
-        double after = symmetricProblem.Evaluate(assignment);
+        double after = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         double move = QAPSwap2MoveEvaluator.Apply(assignment, new Swap2Move(index1, index2, assignment), symmetricWeights, symmetricDistances);
         Assert.IsTrue(move.IsAlmost(before - after), "Failed on symmetric matrices");
 
         // ASYMMETRIC MATRICES
-        before = asymmetricProblem.Evaluate(assignment);
+        before = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         Permutation clone = (Permutation)assignment.Clone();
         Swap2Manipulator.Apply(assignment, index1, index2);
-        after = asymmetricProblem.Evaluate(assignment);
+        after = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPSwap2MoveEvaluator.Apply(clone, new Swap2Move(index1, index2), asymmetricWeights, asymmetricDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on asymmetric matrices");
 
         // NON-ZERO DIAGONAL ASSYMETRIC MATRICES
-        before = nonZeroDiagonalProblem.Evaluate(assignment);
+        before = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         clone = (Permutation)assignment.Clone();
         Swap2Manipulator.Apply(assignment, index1, index2);
-        after = nonZeroDiagonalProblem.Evaluate(assignment);
+        after = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPSwap2MoveEvaluator.Apply(clone, new Swap2Move(index1, index2), nonZeroDiagonalWeights, nonZeroDiagonalDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on non-zero diagonal matrices");
@@ -183,23 +184,23 @@
 
         // SYMMETRIC MATRICES
-        double before = symmetricProblem.Evaluate(assignment);
+        double before = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         InversionManipulator.Apply(assignment, Math.Min(index1, index2), Math.Max(index1, index2));
-        double after = symmetricProblem.Evaluate(assignment);
+        double after = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         double move = QAPInversionMoveEvaluator.Apply(assignment, new InversionMove(index1, index2, assignment), symmetricWeights, symmetricDistances);
         Assert.IsTrue(move.IsAlmost(before - after), "Failed on symmetric matrices");
 
         // ASYMMETRIC MATRICES
-        before = asymmetricProblem.Evaluate(assignment);
+        before = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         Permutation clone = (Permutation)assignment.Clone();
         InversionManipulator.Apply(assignment, index1, index2);
-        after = asymmetricProblem.Evaluate(assignment);
+        after = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPInversionMoveEvaluator.Apply(clone, new InversionMove(index1, index2), asymmetricWeights, asymmetricDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on asymmetric matrices");
 
         // NON-ZERO DIAGONAL ASYMMETRIC MATRICES
-        before = nonZeroDiagonalProblem.Evaluate(assignment);
+        before = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         clone = (Permutation)assignment.Clone();
         InversionManipulator.Apply(assignment, index1, index2);
-        after = nonZeroDiagonalProblem.Evaluate(assignment);
+        after = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPInversionMoveEvaluator.Apply(clone, new InversionMove(index1, index2), nonZeroDiagonalWeights, nonZeroDiagonalDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on non-zero diagonal matrices");
@@ -222,24 +223,24 @@
 
         // SYMMETRIC MATRICES
-        double before = symmetricProblem.Evaluate(assignment);
+        double before = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         Permutation clone = new Cloner().Clone(assignment);
         TranslocationManipulator.Apply(assignment, index1, index2, insertPoint);
-        double after = symmetricProblem.Evaluate(assignment);
+        double after = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         double move = QAPTranslocationMoveEvaluator.Apply(clone, new TranslocationMove(index1, index2, insertPoint, assignment), symmetricWeights, symmetricDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on symmetric matrices");
 
         // ASYMMETRIC MATRICES
-        before = asymmetricProblem.Evaluate(assignment);
+        before = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         clone = new Cloner().Clone(assignment);
         TranslocationManipulator.Apply(assignment, index1, index2, insertPoint);
-        after = asymmetricProblem.Evaluate(assignment);
+        after = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPTranslocationMoveEvaluator.Apply(clone, new TranslocationMove(index1, index2, insertPoint, assignment), asymmetricWeights, asymmetricDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on asymmetric matrices");
 
         // NON-ZERO DIAGONAL ASYMMETRIC MATRICES
-        before = nonZeroDiagonalProblem.Evaluate(assignment);
+        before = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         clone = new Cloner().Clone(assignment);
         TranslocationManipulator.Apply(assignment, index1, index2, insertPoint);
-        after = nonZeroDiagonalProblem.Evaluate(assignment);
+        after = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPTranslocationMoveEvaluator.Apply(clone, new TranslocationMove(index1, index2, insertPoint, assignment), nonZeroDiagonalWeights, nonZeroDiagonalDistances);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on non-zero diagonal matrices");
@@ -255,22 +256,22 @@
 
         // SYMMETRIC MATRICES
-        double before = symmetricProblem.Evaluate(assignment);
+        double before = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         double move = QAPScrambleMoveEvaluator.Apply(assignment, scramble, symmetricWeights, symmetricDistances);
         ScrambleManipulator.Apply(assignment, scramble.StartIndex, scramble.ScrambledIndices);
-        double after = symmetricProblem.Evaluate(assignment);
+        double after = symmetricProblem.Evaluate(assignment, CancellationToken.None);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on symmetric matrices");
 
         // ASYMMETRIC MATRICES
-        before = asymmetricProblem.Evaluate(assignment);
+        before = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPScrambleMoveEvaluator.Apply(assignment, scramble, asymmetricWeights, asymmetricDistances);
         ScrambleManipulator.Apply(assignment, scramble.StartIndex, scramble.ScrambledIndices);
-        after = asymmetricProblem.Evaluate(assignment);
+        after = asymmetricProblem.Evaluate(assignment, CancellationToken.None);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on asymmetric matrices");
 
         // NON-ZERO DIAGONAL ASYMMETRIC MATRICES
-        before = nonZeroDiagonalProblem.Evaluate(assignment);
+        before = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         move = QAPScrambleMoveEvaluator.Apply(assignment, scramble, nonZeroDiagonalWeights, nonZeroDiagonalDistances);
         ScrambleManipulator.Apply(assignment, scramble.StartIndex, scramble.ScrambledIndices);
-        after = nonZeroDiagonalProblem.Evaluate(assignment);
+        after = nonZeroDiagonalProblem.Evaluate(assignment, CancellationToken.None);
         Assert.IsTrue(move.IsAlmost(after - before), "Failed on non-zero diagonal matrices");
       }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/Script Sources/GAQAPScriptSource.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/Script Sources/GAQAPScriptSource.cs	(revision 17320)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Tests/HeuristicLab.Scripting-3.3/Script Sources/GAQAPScriptSource.cs	(revision 17321)
@@ -1,5 +1,5 @@
 ﻿using System;
 using System.Linq;
-
+using System.Threading;
 using HeuristicLab.Analysis;
 using HeuristicLab.Data;
@@ -42,5 +42,5 @@
     for (int i = 0; i < popSize; i++) {
       population[i] = new Permutation(PermutationTypes.Absolute, qap.Weights.Rows, random);
-      qualities[i] = qap.Evaluate(population[i]);
+      qualities[i] = qap.Evaluate(population[i], CancellationToken.None);
     }
     var bestQuality = qualities.Min();
@@ -52,5 +52,5 @@
         nextGen[i] = PartiallyMatchedCrossover.Apply(random, parents[i * 2], parents[i * 2 + 1]);
         if (random.NextDouble() < mutationRate) Swap2Manipulator.Apply(random, nextGen[i]);
-        nextQual[i] = qap.Evaluate(nextGen[i]);
+        nextQual[i] = qap.Evaluate(nextGen[i], CancellationToken.None);
         if (nextQual[i] < bestQuality) {
           bestQuality = nextQual[i];
