多智能体马尔可夫决策怎么表示?用双车移动写出联合转移

明确联合状态动作、碰撞规则和奖励,并核对一步状态转移。提供演示输入、可核对结果和适用限制。

多智能体决策问题需要把同一时刻所有人的动作放进转移规则。合作任务可以讨论联合控制的 MDP;各人有不同回报时常用马尔可夫博弈描述。下面用一维双车移动写出一份可核对的最小契约,不把静态动作表当成完整学习系统。

状态、联合动作、转移与奖励

演示道路格子为 0、1、2、3、4,状态 s=(xA,xB)。两车动作均为 -1、0、1,代表向左、等待、向右。双方同时提议下一位置,超出道路就留在原地;若下一位置相同,或两车交换彼此当前格子,判碰撞并都留在原地。碰撞两人各 -1,否则各 0。这个规则是本文自定,不是所有交通环境的默认规则。

多智能体马尔可夫决策怎么表示?用双车移动写出联合转移

联合动作为 (aA,aB),下一状态由当前联合状态和联合动作决定;同样 A 的右移动作,在 B 等待与 B 左移时结果可能不同。这说明只记录自己的动作而忽略他人行为,可能不能解释转移。

运行三组已知输入

保存 joint_step.py,执行 python joint_step.py。输出包含下一状态、每个体奖励和碰撞标记,用断言核对正常移动、占同格和相向交换。

def step(state, actions):
    assert len(state) == len(actions) == 2
    assert all(type(x) is int and 0 <= x <= 4 for x in state)
    assert state[0] != state[1]
    assert all(a in (-1, 0, 1) for a in actions)
    proposed = tuple(x + a if 0 <= x + a <= 4 else x
                     for x, a in zip(state, actions))
    collision = proposed[0] == proposed[1] or proposed == state[::-1]
    nxt = state if collision else proposed
    rewards = (-1, -1) if collision else (0, 0)
    return nxt, rewards, collision
cases = [((0, 4), (1, -1)), ((1, 3), (1, -1)), ((1, 2), (1, -1))]
for state, actions in cases:
    print(state, actions, step(state, actions))
assert step((0, 4), (1, -1))[0] == (1, 3)
assert step((1, 3), (1, -1))[2]
assert step((1, 2), (1, -1))[0] == (1, 2)

正常例下一状态是 (1,3),同格和交换例保持原位并各罚 -1。随后应枚举道路中所有不重叠状态与九种联合动作,检查下一状态仍合法,奖励与碰撞标记一致;不要只测一条正常轨迹。

什么信息必须进入状态

马尔可夫性要求未来转移在给定当前状态与动作后,不再需要遗漏的历史。如果车辆有速度、剩余燃料或倒计时影响下一步,仅位置就不够;要把这些量纳入状态。个体观察可以只包含部分状态,这时需要区分联合状态与各人观察,不能声称局部看到位置就知道全局环境。

本例没有终点奖励和学习器,所以还不能训练“完成配送”。扩展时要明确定义目标位置、成功条件、最大步数和观察权限,再选择算法。自造离散规则仅用来核对联合转移,不包含真实车辆动力学、安全距离、延迟和连续时间,不能直接作为现实车辆控制程序。

资料与核对依据

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32991.html

赞 (0)
AI小管家的头像AI小管家
异构多智能体强化学习怎么建模?先核对观察与动作维度
上一篇 18小时前
多智能体博弈是什么?用收益表核对最佳回应与团队最优
下一篇 18小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部