首页 > 解决方案 > 时间变量已更新

问题描述

我确信这可能是一个我没有看到的小错误:

我正在创建两个数组。R 和 Q 值。Qvalues 的初始值存储在 R 中,Qvalues 使用多个 for 循环进行更新。但是,由于某种原因,R 也更新了。但在其他任何地方都没有提到 R。我想请你帮忙,谢谢。下面的代码:

import numpy as np 
import random      
import time

gamma = 0.8
Rewards = np.array([[-1,-1,-1,-1, 0, -1], 
                  [-1,-1,-1,0,-1,100],
                  [-1,-1,-1,0,-1,-1],
                  [-1,0,0,-1,0,-1],
                  [0,-1,-1,0,-1,100],
                  [-1,0,-1,-1,0,100]])

Qvalues = np.zeros((6,6))

maxim= np.amax(Rewards); 
indices = np.argwhere(Rewards == maxim)
Qvalues[indices[:,0],indices[:,1]] = maxim

change  = 1
indices = np.argwhere(Qvalues == maxim)

R = Qvalues
print(R)

for i in range(len(indices)):
    c_index = indices[i,0]  
    zeros_ind = np.argwhere(Rewards[:,c_index] ==0) 
    for l in range(len(zeros_ind)):
        if(Qvalues[zeros_ind[l],c_index]==0):
            Qvalues[zeros_ind[l],c_index] = gamma*maxim
print(R)

标签: python

解决方案


如前所述,R = Qvalues不制作对象的副本。

尝试R = Qvalues.copy().deepcopy()https://docs.python.org/2/library/copy.html


推荐阅读