当我运行我的程序时,我收到以下错误,该程序具有下面定义的功能。
我认为这是valid_actions = filter(lambda x: x != random.choice(maxQactions)
造成错误的部分。有谁知道这是什么问题,或建议如何解决它?感谢。
错误:
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
代码:
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
答案 0 :(得分:0)
请参阅https://docs.python.org/2/library/random.html
如果seq为空,random.choice(seq)会引发IndexError。在您的情况下,IndexError出现在
&#39; action = random.choice(valid_actions)&#39;
我怀疑valid_actions是否为空。