internal bool CheckResult(VariableDef[] variableDefs, ConstraintDef[] constraintDefs, NeighborDef[] neighborDefs, double[] expectedPositions, bool checkResults) { SetVariableExpectedPositions(variableDefs, expectedPositions); int violationCount; return CheckResult(variableDefs, constraintDefs, neighborDefs, checkResults, out violationCount); }
// These overloads work with the local Test*()... internal bool CheckResult(VariableDef[] variableDefs, ConstraintDef[] constraintDefsX, ConstraintDef[] constraintDefsY, double[] expectedPositionsX, double[] expectedPositionsY, bool checkResults) { return CheckResult(variableDefs, /*clusterDefs:*/ null, constraintDefsX, constraintDefsY, expectedPositionsX, expectedPositionsY, checkResults); }
// // These overloads work with the local Test*() routines. // bool CheckResult(VariableDef[] variableDefs, ConstraintDef[] constraintDefs , NeighborDef[] rgNeighborDefs, double[] expectedPositionsX, bool fCheckResults) { for (uint id = 0; id < variableDefs.Length; ++id) { variableDefs[id].SetExpected(id, expectedPositionsX[id]); } return CheckResult(variableDefs, constraintDefs, rgNeighborDefs, fCheckResults); }
internal bool CheckResult(VariableDef[] variableDefs, ClusterDef[] clusterDefs, ConstraintDef[] constraintDefsX, ConstraintDef[] constraintDefsY, double[] expectedPositionsX, double[] expectedPositionsY, bool checkResults) { for (uint id = 0; id < variableDefs.Length; ++id) { variableDefs[id].SetExpected(id, expectedPositionsX[id], expectedPositionsY[id]); } return CheckResult(variableDefs, clusterDefs, constraintDefsX, constraintDefsY, checkResults); }
//// //// These overloads work with the local Test*() routines. //// internal bool CheckResult(VariableDef[] variableDefs, ConstraintDef[] constraintDefs, double[] expectedPositions, bool checkResults) { return CheckResult(variableDefs, constraintDefs, null, expectedPositions, checkResults); }
internal bool SolveRegap(string tag, VariableDef[] variableDefs, ConstraintDef[] constraintDefs, double[] expectedPositionsX) { if (TestGlobals.VerboseLevel >= 1) { this.WriteLine("... ReGapping ({0})...", tag); } SetVariableExpectedPositions(variableDefs, expectedPositionsX); int numViolations = 0; var sw = new Stopwatch(); sw.Start(); this.SolutionX = this.SolverX.Solve(this.SolverParameters); sw.Stop(); bool succeeded = true; if (!VerifySolutionMembers(this.SolutionX, /*iterNeighbourDefs:*/ null)) { succeeded = false; } if (!VerifyConstraints(/*cRep:*/ 0, constraintDefs, /*succeeded:*/ true, ref numViolations, /*checkResults:*/ true)) { succeeded = false; } if (!PostCheckResults(variableDefs, this.SolutionX.GoalFunctionValue, double.NaN, sw, /*checkResults:*/ true)) { succeeded = false; } DisplayVerboseResults(); return succeeded; }
internal void StartAtZeroWorker(int numVarsPerBlock, int numBlocks) { var expectedPositionsXNotUsed = new double[numVarsPerBlock * numBlocks]; var variableDefs = new VariableDef[numVarsPerBlock * numBlocks]; var constraintDefs = new ConstraintDef[(numVarsPerBlock - 1) * numBlocks]; for (int idxBlock = 0; idxBlock < numBlocks; ++idxBlock) { int varOffset = numVarsPerBlock * idxBlock; int cstOffset = (numVarsPerBlock - 1) * idxBlock; for (int idxVar = 0; idxVar < numVarsPerBlock; ++idxVar) { int varIndex = varOffset + idxVar; variableDefs[varIndex] = new VariableDef(0.0, ValueNotUsed); if (idxVar > 0) { constraintDefs[cstOffset + idxVar - 1] = new ConstraintDef( variableDefs[varIndex - 1], variableDefs[varIndex], 1.0); } } } Validate.IsTrue( CheckResult(variableDefs, constraintDefs, expectedPositionsXNotUsed, false /* fCheckResults */), FailureString); }