我正在尝试将tf_agent 库与自定义环境一起使用来构建执行以下操作的代理:
代理通过向他们提供资源(12 个资源)来为许多用户(10 个用户)提供服务。
它接收一个输入(观察/状态),它是一个 0 和 1 的二维矩阵;假设它有 10 行(用户数)和 3 列。如果某一行的某一列的值为 1,则意味着必须为该行的用户分配资源。
观察(状态)矩阵示例:
[
[0, 0, 0],
[0, 1, 0],
[1, 0, 0],
...
]
这意味着(例如)该用户
row[1]
需要资源。(用户 1)输出也是一个 0 和 1 的二维矩阵,有 12 行(资源数)和 10 列(用户数)。
如果资源 0 分配给用户 1,则输出矩阵中的第一行将具有值为 1 的第二列。
row[0][1]
每个资源一次只能分配给一个用户,每个用户一次只能分配一个资源。(这意味着每一行只有一个值为 1 的列,并且整个矩阵中的每一列只能有一个值为一个的行 | 示例:例如,不能有第一行的第一列和第一列第二行的列的值都为 1,其中一个必须为 1,其他必须全部为 0)。
动作矩阵示例:
[
[0, 1, 0, 0, ...],
[0, 0, 0, 0, ...],
[1, 0, 0, 0, ...],
[0, 0, 0, 1, ...],
...
]
在上面的例子中,第一行第二列有1
row[0][1]
(row[1]
已要求分配资源。如果用户没有请求资源,则不应向该用户提供任何资源。
我不知道如何为此自定义环境初始化 tf_agent 的 observation_spec 和 action_spec。
而且我不确定 tf_agent 是否是最好的方法。
我是深度学习的新手,从头开始为这个自定义环境构建神经网络非常令人困惑。