Very interesting, but the code example used in the documentation is pretty poor:
from simpleai.search import SearchProblem, astar
GOAL = 'HELLO WORLD'
class HelloProblem(SearchProblem):
def actions(self, state):
if len(state) < len(GOAL):
return list(' ABCDEFGHIJKLMNOPQRSTUVWXYZ')
else:
return []
def result(self, state, action):
return state + action
def is_goal(self, state):
return state == GOAL
def heuristic(self, state):
# how far are we from the goal?
wrong = sum([1 if state[i] != GOAL[i] else 0
for i in range(len(state))])
missing = len(GOAL) - len(state)
return wrong + missing
Among other things, why create a class and hardcode the GOAL as a constant?
besides, not always you want to find the goal state. Many problems are about findig the path of actions from the initial state to the goal state, both known.
This is awesome. I really want to play with some AI lib and all of the ones I tried have way too many problems compiling on Windows. pip install them fails too. I don't want to spend time compiling libraries.