numpy - 为 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 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, :]
它在计算上绝对不是有效的,但它确实有效。
推荐阅读
- python - DataFrame 中的新列基于来自另一个 DataFrame 的行和列
- powershell - powershell 脚本通过文件名前缀合并 .csv 文件
- python - 如何根据列名和另一个列值计算行值
- caching - 禁用可能的 Node.js Orchestrator 缓存以始终返回最新数据
- c# - asp.net core 3.1中的查询字符串(输入字符串的格式不正确。)
- fortran - 如何在 fortran 中使用此子例程
- postgresql - 将行合并到 jsonb 对象中
- go - Google Cloud Datastore 提交冲突检测
- angular - Angular 10 FileReplacements 不适用于资产
- arrays - 为什么我的代码没有给我正确的结果