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);
        }
Beispiel #2
0
	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));
	}