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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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))
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)
def test_2(self): """1b-2-hidden: Test MCV with different CSPs.""" mcvSolver = submission.BacktrackingSearch() mcvSolver.solve(util.create_map_coloring_csp(), mcv=True)
def test_1(self): """1a-1-hidden: Test create_nqueens_csp with n=3.""" nQueensSolver = submission.BacktrackingSearch() nQueensSolver.solve(submission.create_nqueens_csp(3))
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)
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)
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)
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])
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)