如果满足条件,是否有一种简单的方法可以在for循环中添加一个附加循环?
在epsilon-greedy的倾斜算法中,该算法应以1-epsilon的概率返回计算出的答案(在这种情况下,计算出的答案是N * N numpy数组,其中一些Actn1> Actn2)。但是,有时要探索环境,该算法将生成一个随机答案。这意味着对于固定数目的情节,循环将终止并返回随机答案,而不是概率为Epsilon的计算答案。
for i in range(Episodes)
.....
if np.random.uniform(0,1) >= ep:
Ans = StActn1 >= StActn2
else:
Ans = np.array(np.random.choice((0, 1), size=(10, 10)))
return(Ans)
如果是这种情况,是否有一种方法可以强制其进行其他循环?我想我正在寻找一种简单的for循环方式来获得类似于此类的行为。
while i <= Episodes or c == 1:
.....
if np.random.uniform(0,1) >= ep:
Ans = QH >= QS
c=0
else:
Ans = np.array(np.random.choice((0, 1), size=(PlrDm, DlrDm)))
c=1
return(Ans)
这可以在python中完成吗?
答案 0 :(得分:1)
我假设您只希望该额外循环最多发生一次,因此您可以添加一个标志:
once_more = False
for i in range(Episodes)
...
if np.random.uniform(0,1) >= ep:
Ans = StActn1 >= StActn2
once_more = False
else:
Ans = np.array(np.random.choice((0, 1), size=(10, 10)))
once_more = True
if once_more:
...
Ans = StActn1 >= StActn2
return Ans
答案 1 :(得分:0)
不确定这是否是解决问题的最佳方法,但我应该在if语句中添加一个附加条件。
for i in range(Episodes)
.....
if np.random.uniform(0,1) >= ep or i == Episodes:
Ans = StActn1 >= StActn2
else:
Ans = np.array(np.random.choice((0, 1), size=(10, 10)))
return(Ans)