def run(): parser = argparse.ArgumentParser(description='Solve the Pants Problem.') parser.add_argument('--size', type=int, default=5, help='The size of the problem set (defaults to 5)') parser.add_argument('--heuristic', default='BreadthFirst', help='The heuristc class to use.') args = parser.parse_args() initial = list(range(1, args.size + 1)) goal = list(reversed(initial)) print('Initial state: {}'.format(initial)) print('Goal state {}:'.format(goal)) heuristic = getattr(heuristics, args.heuristic, None) if heuristic and type(heuristic) is type: print('Heuristic: {}'.format(args.heuristic)) solver = PantsSolver( initial=initial, goal=goal, heuristic=heuristic(goal) ) solver.solve() display(solver) else: print('ERROR: Cannot find heuristic with name "{}"'.format(args.heuristic))
def run(): parser = argparse.ArgumentParser(description='Solve the Pants Problem.') parser.add_argument('--size', type=int, default=5, help='The size of the problem set (defaults to 5)') parser.add_argument('--heuristic', default='BreadthFirst', help='The heuristc class to use.') args = parser.parse_args() initial = list(range(1, args.size + 1)) goal = list(reversed(initial)) print('Initial state: {}'.format(initial)) print('Goal state {}:'.format(goal)) heuristic = getattr(heuristics, args.heuristic, None) if heuristic and type(heuristic) is type: print('Heuristic: {}'.format(args.heuristic)) solver = PantsSolver(initial=initial, goal=goal, heuristic=heuristic(goal)) solver.solve() display(solver) else: print('ERROR: Cannot find heuristic with name "{}"'.format( args.heuristic))
class PantsSolverTest(unittest.TestCase): def setUp(self): self.solver = PantsSolver( initial=[1, 2, 3, 4, 5], goal=[5, 4, 3, 2, 1], heuristic=BreadthFirst(None) ) def test_initial_setup(self): self.assertEqual(1, self.solver.evaluated) self.assertEqual(1, len(self.solver.working_set)) def test_pop_best(self): best = self.solver.pop_best() self.assertEqual(PantsPath([PantsState(0, [1, 2, 3, 4, 5])]), best) self.assertEqual([], self.solver.working_set) def test_next_iteration(self): self.solver.iterate() self.assertEqual(3, self.solver.evaluated) best = self.solver.pop_best() expected_best = PantsPath([ PantsState(0, [1, 2, 3, 4, 5]), PantsState(2, [1, 2, 3, 4, 5]) ]) self.assertEqual(expected_best, best)
class PantsSolverTest(unittest.TestCase): def setUp(self): self.solver = PantsSolver(initial=[1, 2, 3, 4, 5], goal=[5, 4, 3, 2, 1], heuristic=BreadthFirst(None)) def test_initial_setup(self): self.assertEqual(1, self.solver.evaluated) self.assertEqual(1, len(self.solver.working_set)) def test_pop_best(self): best = self.solver.pop_best() self.assertEqual(PantsPath([PantsState(0, [1, 2, 3, 4, 5])]), best) self.assertEqual([], self.solver.working_set) def test_next_iteration(self): self.solver.iterate() self.assertEqual(3, self.solver.evaluated) best = self.solver.pop_best() expected_best = PantsPath( [PantsState(0, [1, 2, 3, 4, 5]), PantsState(2, [1, 2, 3, 4, 5])]) self.assertEqual(expected_best, best)
def setUp(self): self.solver = PantsSolver( initial=[1, 2, 3, 4, 5], goal=[5, 4, 3, 2, 1], heuristic=BreadthFirst(None) )
def setUp(self): self.solver = PantsSolver(initial=[1, 2, 3, 4, 5], goal=[5, 4, 3, 2, 1], heuristic=BreadthFirst(None))