use*_*463 7 python-2.7 q-learning
当我运行我的程序时,出现以下错误,该程序具有下面定义的函数。我认为这是
valid_actions = filter(lambda x: x != random.choice(maxQactions)
Run Code Online (Sandbox Code Playgroud)
导致错误的部分。有谁知道问题是什么,或者建议如何解决它?谢谢。
错误:
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
Run Code Online (Sandbox Code Playgroud)
代码:
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
Run Code Online (Sandbox Code Playgroud)
参考https://docs.python.org/2/library/random.html
如果 seq 为空, random.choice(seq) 会引发 IndexError 。在您的情况下,IndexError 发生在
'action = random.choice(valid_actions)'
我怀疑 valid_actions 是否为空。
| 归档时间: |
|
| 查看次数: |
11358 次 |
| 最近记录: |