public SolutionStrategy GetStrategy() { SolutionStrategy toReturn; switch (StrategyType) { case CSPStrategy.BacktrackingStrategy: toReturn = new BacktrackingStrategy(); break; case CSPStrategy.ImprovedBacktrackingStrategy: var improved = new ImprovedBacktrackingStrategy(); toReturn = improved; improved.enableLCV(EnableLCV); switch (Selection) { case CSPSelection.DefaultOrder: break; case CSPSelection.MRV: improved.setVariableSelection(ImprovedBacktrackingStrategy.Selection.MRV); break; case CSPSelection.MRVDeg: improved.setVariableSelection(ImprovedBacktrackingStrategy.Selection.MRV_DEG); break; default: throw new ArgumentOutOfRangeException(); } switch (Inference) { case CSPInference.None: break; case CSPInference.ForwardChecking: improved.setInference(ImprovedBacktrackingStrategy.Inference.FORWARD_CHECKING); break; case CSPInference.AC3: improved.setInference(ImprovedBacktrackingStrategy.Inference.AC3); break; default: throw new ArgumentOutOfRangeException(); } break; case CSPStrategy.MinConflictsStrategy: toReturn = new MinConflictsStrategy(MaxSteps); break; default: throw new ArgumentOutOfRangeException(); } return(toReturn); }
public void testBackTrackingSearch() { Assignment results = new BacktrackingStrategy().solve(csp); Assert.assertNotNull(results); Assert.assertEquals(MapCSP.GREEN, results.getAssignment(MapCSP.WA)); Assert.assertEquals(MapCSP.RED, results.getAssignment(MapCSP.NT)); Assert.assertEquals(MapCSP.BLUE, results.getAssignment(MapCSP.SA)); Assert.assertEquals(MapCSP.GREEN, results.getAssignment(MapCSP.Q)); Assert.assertEquals(MapCSP.RED, results.getAssignment(MapCSP.NSW)); Assert.assertEquals(MapCSP.GREEN, results.getAssignment(MapCSP.V)); Assert.assertEquals(MapCSP.RED, results.getAssignment(MapCSP.T)); }