我目前正在学习Q学习,我有一本字典Q [州,行动] 其中每个州可以是任何东西,即字符串,数字,列表......取决于应用程序。每个州都有3个或4个可能的行动。对于每个州,我需要找到具有最高Q值的动作。问题是我不知道如何直接从具有两个键的字典中访问状态所有可能的操作,所以我尝试使用for循环:
for statex, actionx in self.array:
if statex == state and (actionx != None):
y[actionx] = self.array[statex, actionx]
y.argMax()
其中argMax()
def argMax(self):
"""
Returns the key with the highest value.
"""
if len(self.keys()) == 0: return None
all = self.items()
values = [x[1] for x in all]
maxIndex = values.index(max(values))
return all[maxIndex][0]
问题是计算时间太长。任何想法如何让它更快,可能是通过消除循环?
答案 0 :(得分:0)
如果你使用字典词典会快得多:
self.array[state][action]