예제 #1
0
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))
예제 #2
0
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)
예제 #4
0
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)
     )
예제 #6
0
 def setUp(self):
     self.solver = PantsSolver(initial=[1, 2, 3, 4, 5],
                               goal=[5, 4, 3, 2, 1],
                               heuristic=BreadthFirst(None))