Beispiel #1
0
    def test_2(self):
        """1a-2-hidden:  Test create_nqueens_csp with different n."""
        nQueensSolver = submission.BacktrackingSearch()
        nQueensSolver.solve(submission.create_nqueens_csp(4))
        # BEGIN_HIDE
        # END_HIDE

        nQueensSolver = submission.BacktrackingSearch()
        nQueensSolver.solve(submission.create_nqueens_csp(7))
Beispiel #2
0
    def test_1(self):
        """2b-1-hidden:  Test get_sum_variable with empty list of variables."""
        csp = util.CSP()
        sumVar = submission.get_sum_variable(csp, 'zero', [], 15)
        sumSolver = submission.BacktrackingSearch()
        sumSolver.solve(csp)
        # BEGIN_HIDE
        # END_HIDE

        csp.add_unary_factor(sumVar, lambda n: n > 0)
        sumSolver = submission.BacktrackingSearch()
        sumSolver.solve(csp)
Beispiel #3
0
 def test_0(self):
     """1b-0-basic:  Basic test for MCV with n-queens CSP."""
     mcvSolver = submission.BacktrackingSearch()
     mcvSolver.solve(submission.create_nqueens_csp(8), mcv=True)
     self.assertEqual(1.0, mcvSolver.optimalWeight)
     self.assertEqual(92, mcvSolver.numOptimalAssignments)
     self.assertEqual(1361, mcvSolver.numOperations)
Beispiel #4
0
 def test_0(self):
     """1a-0-basic:  Basic test for create_nqueens_csp for n=8."""
     nQueensSolver = submission.BacktrackingSearch()
     nQueensSolver.solve(submission.create_nqueens_csp(8))
     self.assertEqual(1.0, nQueensSolver.optimalWeight)
     self.assertEqual(92, nQueensSolver.numOptimalAssignments)
     self.assertEqual(2057, nQueensSolver.numOperations)
Beispiel #5
0
 def test_0(self):
     """0c-0-basic:  Basic test for create_chain_csp."""
     solver = submission.BacktrackingSearch()
     solver.solve(submission.create_chain_csp(4))
     self.assertEqual(1, solver.optimalWeight)
     self.assertEqual(2, solver.numOptimalAssignments)
     self.assertEqual(9, solver.numOperations)
Beispiel #6
0
 def test_0(self):
     """1c-0-basic:  Basic test for AC-3 with n-queens CSP"""
     acSolver = submission.BacktrackingSearch()
     acSolver.solve(submission.create_nqueens_csp(8), ac3=True)
     self.assertEqual(1.0, acSolver.optimalWeight)
     self.assertEqual(92, acSolver.numOptimalAssignments)
     self.assertEqual(769, acSolver.numOperations)
Beispiel #7
0
    def test_2(self):
        """2b-2-hidden:  Test get_sum_variable with different variables."""
        csp = util.CSP()
        csp.add_variable('A', [0, 1, 2])
        csp.add_variable('B', [0, 1, 2])
        csp.add_variable('C', [0, 1, 2])

        sumVar = submission.get_sum_variable(csp, 'sum-up-to-7',
                                             ['A', 'B', 'C'], 7)
        sumSolver = submission.BacktrackingSearch()
        sumSolver.solve(csp)
        # BEGIN_HIDE
        # END_HIDE

        csp.add_unary_factor(sumVar, lambda n: n == 6)
        sumSolver = submission.BacktrackingSearch()
        sumSolver.solve(csp)
Beispiel #8
0
 def test_3(self):
     """3b-3-hidden:  Test MVC+AC-3+all additional constraints"""
     profile = util.Profile(bulletin, 'profile3b3.txt')
     cspConstructor = submission.SchedulingCSPConstructor(
         bulletin, copy.deepcopy(profile))
     csp = cspConstructor.get_basic_csp()
     cspConstructor.add_all_additional_constraints(csp)
     alg = submission.BacktrackingSearch()
     alg.solve(csp, mcv=True, ac3=True)
Beispiel #9
0
 def test_2(self):
     """3b-2-hidden:  Test unsatisfiable scheduling"""
     profile = util.Profile(bulletin, 'profile3b2.txt')
     cspConstructor = submission.SchedulingCSPConstructor(
         bulletin, copy.deepcopy(profile))
     csp = cspConstructor.get_basic_csp()
     cspConstructor.add_all_additional_constraints(csp)
     alg = submission.BacktrackingSearch()
     alg.solve(csp)
Beispiel #10
0
 def test_1(self):
     """3b-1-hidden:  Test add_unit_constraints with different profiles"""
     profile = util.Profile(bulletin, 'profile3b1.txt')
     cspConstructor = submission.SchedulingCSPConstructor(
         bulletin, copy.deepcopy(profile))
     csp = cspConstructor.get_basic_csp()
     cspConstructor.add_unit_constraints(csp)
     alg = submission.BacktrackingSearch()
     alg.solve(csp)
Beispiel #11
0
    def test_0(self):
        """2b-0-basic:  Basic test for get_sum_variable"""
        csp = util.CSP()
        csp.add_variable('A', [0, 1, 2, 3])
        csp.add_variable('B', [0, 6, 7])
        csp.add_variable('C', [0, 5])

        sumVar = submission.get_sum_variable(csp, 'sum-up-to-15',
                                             ['A', 'B', 'C'], 15)
        csp.add_unary_factor(sumVar, lambda n: n in [12, 13])
        sumSolver = submission.BacktrackingSearch()
        sumSolver.solve(csp)
        self.assertEqual(4, sumSolver.numOptimalAssignments)

        csp.add_unary_factor(sumVar, lambda n: n == 12)
        sumSolver = submission.BacktrackingSearch()
        sumSolver.solve(csp)
        self.assertEqual(2, sumSolver.numOptimalAssignments)
Beispiel #12
0
 def test_2(self):
     """3a-2-hidden:  Test add_quarter_constraints with no quarter specified"""
     profile = util.Profile(bulletin, 'profile3a2.txt')
     cspConstructor = submission.SchedulingCSPConstructor(
         bulletin, copy.deepcopy(profile))
     csp = cspConstructor.get_basic_csp()
     cspConstructor.add_quarter_constraints(csp)
     alg = submission.BacktrackingSearch()
     alg.solve(csp)
Beispiel #13
0
    def test_0(self):
        """3b-0-basic:  Basic test for add_unit_constraints"""
        profile = util.Profile(bulletin, 'profile3b.txt')
        cspConstructor = submission.SchedulingCSPConstructor(
            bulletin, copy.deepcopy(profile))
        csp = cspConstructor.get_basic_csp()
        cspConstructor.add_unit_constraints(csp)
        alg = submission.BacktrackingSearch()
        alg.solve(csp)

        # Verify correctness.
        self.assertEqual(15, alg.numOptimalAssignments)
        for assignment in alg.allAssignments:
            sol = util.extract_course_scheduling_solution(profile, assignment)
            self.assertTrue(verify_schedule(bulletin, profile, sol))
Beispiel #14
0
    for idx1 in range(10, 15):
        for idx2 in range(10, 15):
            if idx1 != idx2:
                csp.add_binary_potential(variables[idx1], variables[idx2],
                                         lambda x, y: x != y)

    for idx1 in range(15, 20):
        for idx2 in range(15, 20):
            if idx1 != idx2:
                csp.add_binary_potential(variables[idx1], variables[idx2],
                                         lambda x, y: x != y)

    for idx1 in range(20, 25):
        for idx2 in range(20, 25):
            if idx1 != idx2:
                csp.add_binary_potential(variables[idx1], variables[idx2],
                                         lambda x, y: x != y)

    return csp


csp = create_zebra_problem()
search = submission.BacktrackingSearch()
search.solve(csp, mcv=True, mac=True)
print(search.optimalAssignment)
houses = collections.defaultdict(list)
for var, house in search.optimalAssignment.items():
    houses[house].append(var)
print(houses)
Beispiel #15
0
 def test_2(self):
     """1b-2-hidden:  Test MCV with different CSPs."""
     mcvSolver = submission.BacktrackingSearch()
     mcvSolver.solve(util.create_map_coloring_csp(), mcv=True)
Beispiel #16
0
 def test_1(self):
     """1a-1-hidden:  Test create_nqueens_csp with n=3."""
     nQueensSolver = submission.BacktrackingSearch()
     nQueensSolver.solve(submission.create_nqueens_csp(3))
Beispiel #17
0
 def test_4(self):
     """1c-4-hidden:  Test MCV+AC-3 for map coloring CSP"""
     acSolver = submission.BacktrackingSearch()
     acSolver.solve(util.create_map_coloring_csp(), mcv=True, ac3=True)
Beispiel #18
0
 def test_3(self):
     """1c-3-hidden:  Test MCV+AC-3 for n-queens CSP with n=7"""
     acSolver = submission.BacktrackingSearch()
     nqueens_csp = self.run_with_solution_if_possible(
         submission, lambda sub_or_sol: sub_or_sol.create_nqueens_csp(7))
     acSolver.solve(nqueens_csp, mcv=True, ac3=True)
Beispiel #19
0
from __future__ import print_function
import util, submission

print('Map coloring example:')
csp = util.create_map_coloring_csp()
alg = submission.BacktrackingSearch()
alg.solve(csp)
print('One of the optimal assignments:' % alg.optimalAssignment)

print('\nWeighted CSP example:')
csp = util.create_weighted_csp()
alg = submission.BacktrackingSearch()
alg.solve(csp)
print('One of the optimal assignments:' % alg.optimalAssignment)
print('\nnqueen CSP example:')
csp = submission.create_nqueens_csp(8)
alg = submission.BacktrackingSearch()
alg.solve(csp)
print('One of the optimal assignments:' % alg.optimalAssignment)
Beispiel #20
0
def main():
    csp = submission.create_n_queens_csp()
    alg = submission.BacktrackingSearch()
    alg.solve(csp, mcv=False, ac3=False)
    print('One of the optimal assignments:', alg.all_assignments[0])
Beispiel #21
0
 def test_1(self):
     """1b-1-hidden:  Test for MCV with n-queens CSP."""
     mcvSolver = submission.BacktrackingSearch()
     nqueens_csp = self.run_with_solution_if_possible(
         submission, lambda sub_or_sol: sub_or_sol.create_nqueens_csp(8))
     mcvSolver.solve(nqueens_csp, mcv=True)