Numpy 为Q-Learning构建可用行动矩阵

Numpy 为Q-Learning构建可用行动矩阵,numpy,reinforcement-learning,q-learning,Numpy,Reinforcement Learning,Q Learning,我正在模拟一个零售商店的库存管理系统;因此,我有一个(15,15)的零矩阵,其中状态是行,动作是列: Q = np.matrix(np.zeros([15, 15]) ) 具体来说,0是最低库存水平,14是最高库存水平,状态是当前库存水平,操作库存订单(数量) 因此,我想用“-1”替换零,其中状态和动作之和>14: print(final_Q) #First row, from which I can order everything (since 0 + 14 == 14) [[0 0

我正在模拟一个零售商店的库存管理系统;因此,我有一个(15,15)的零矩阵,其中状态是行,动作是列:

Q = np.matrix(np.zeros([15, 15]) )
具体来说,0是最低库存水平,14是最高库存水平,状态是当前库存水平,操作库存订单(数量)

因此,我想用“-1”替换零,其中状态和动作之和>14:

print(final_Q)

#First row, from which I can order everything (since 0 + 14 == 14)
[[0 0   0   0   0   0   0   0   0   0   0   0   0   0   0]
#Second row, from which I can order max. 13 products (1 + 14 > 14)
[[0 0   0   0   0   0   0   0   0   0   0   0   0   0   -1]]
#Third row, from which the max is 12    
[[0 0   0   0   0   0   0   0   0   0   0   0   0   -1  -1]]

(...)
我尝试手动实现,但如何自动获取最终的矩阵

# Q matrix
Q = np.matrix(np.zeros([15+1, 15+1] ))

# Create a diagonal of -1s
Q = Q[0:15][0:15]
il1 = np.tril_indices(15)
Q[il1] = -1
Q = np.rot90(Q)

# Adjust single values
Q[parameters["max_products"]-1][0, 1:] = Q[parameters["max_products"]][0, 1:]
Q = Q[:15, :]

它在计算上肯定不是有效的,但它是有效的。

你只是想要一个下三角矩阵吗?例如,但它应该从末尾开始,正如文章的矩阵中所解释的那样@攻击68它是正确的;刚刚在公式之前添加了np.asmatrix。从numpy文档中关于矩阵的内容来看:“,即使对于线性代数,也不建议再使用此类。请改用正则数组。该类将来可能会被删除。”
Q = np.tril(-1*np.ones(15), -1)[:, ::-1]

>>> Q
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 0., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0.,  0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0.,  0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.],
       [ 0., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,-1., -1.]])