Je reçois l'erreur ci-dessous lorsque j'exécute mon programme, qui a la fonction définie ci-dessous. Je pense que c'est leindex de liste erreur hors plage utilisant random.choice
valid_actions = filter(lambda x: x != random.choice(maxQactions)
qui provoque l'erreur. Est-ce que quelqu'un voit quel est le problème ou suggère comment le résoudre? Merci.
Erreur:
choose_action
action = random.choice(valid_actions)
File "/Users/UserName/anaconda/lib/python2.7/random.py", line 275, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
IndexError: list index out of range
code:
def choose_action(self, state):
self.state = state
self.next_waypoint = self.planner.next_waypoint()
action_selections = self.Q[state]
maxQ = max(action_selections.items(), key=lambda x: x[1])[1]
maxQactions = []
for action, Q in self.Q[state].items():
if Q == maxQ:
maxQactions.append(action)
if self.learning:
choose_using_epsilon = random.random() < 1 - self.epsilon
if not choose_using_epsilon:
valid_actions = filter(lambda x: x != random.choice(maxQactions),
Environment.valid_actions)
action = random.choice(valid_actions)
else:
action = random.choice(maxQactions) #maxQaction
else:
action = random.choice(Environment.valid_actions)
return action
Très probablement, 'maxQactions' est nul, pouvez-vous le vérifier? – user10089632