UPPAAL-stratego示例-cat and mouse 玩猫和老鼠

如果你是实时系统验证、博弈策略综合的入门者,UPPAAL-Stratego 里的Cat and Mouse示例,绝对是理解工具核心能力的最佳 “开胃菜”—— 它把 “追逃博弈”“策略合成” 这些抽象概念,装进了一个你从小就熟悉的场景里。

引言:UPPAAL-Stratego 是啥?

先快速铺垫:UPPAAL-Stratego 是一款针对实时系统、多玩家博弈系统的验证工具,能自动帮 “可控方” 找 “必胜策略”—— 简单说就是:给定一个有 “玩家”“对手” 的场景,工具能算出 “玩家怎么做才能达成目标”。

而「Cat and Mouse」就是这个工具的 “明星示例”:用 “猫追老鼠” 的迷宫场景,把工具的核心功能(策略合成、统计验证、符号查询)全展示了一遍。

场景:猫在带窄通道的迷宫里追老鼠

系统的 4 个核心进程

Cat 进程:负责追踪猫的当前位置、以及猫能移动的所有可能方向

Mouse 进程:负责追踪老鼠的位置和移动可能;老鼠有个 “专属福利”—— 有一条通往奶酪的窄通道,猫走不了

CatP 进程:模拟猫的移动(上下左右),但移动会有延迟

MouseP 进程:模拟老鼠的移动(上下左右),移动也有延迟

游戏规则

目标:老鼠要抵达奶酪位置,同时不能被猫抓到(猫和老鼠位置重合就算被抓)

控制权:老鼠的移动是可人为控制的;猫的移动是不可控的(属于环境 / 对手)

策略逻辑:通过限制老鼠的可控动作,来实现 “逃到奶酪 + 不被抓” 的目标

1、系统模块

1.1 cat

如上图所示,为cat的模型。

这种双重圆圈的代表的是起始状态,在UPPAAL中用“location”来表示状态,所以这表示的是cat的起始位置是L0。

s是 “位置标识变量”,每个节点(比如 L0、L1、L4)都对应一个唯一的s值(比如 L0 对应s=0,L1 对应s=1,L4 对应s=4);模型通过s的值,就能知道 “当前角色在哪个位置”(比如s=1就代表cat现在在 L1 节点)。

“cr?”是同步信号,是等待接收信号cr!,当接收信号cr!,该条线激活,在UPPAAL中,线叫做edge,就会到达下一个location即L1,即实现右移1位。

其他的edge都是同理,由此实现cat的迷宫控制。

1.2 CatP

这是控制Cat的自动机,它对应 “猫每攒够延迟时间,就随机选一个方向移动” 的循环逻辑。

在讲解之前,先看看一些参数声明:

x是时钟信号;

CP指的是猫的延迟时间,也就是猫等待两个时间单位后,才可以动;

MP是老鼠的延迟时间,等待1个时间单位后,才可以动;

cu,cl,cd,cr分别代表上下左右移动。

回看自动机图,起始位置是x<=CP,cat处于“攒延迟”的阶段;

当x>=CP后,进入下一个location(cat的过渡状态,短暂停留的节点),同时x置零,等待下一次延迟;

1/1指的是每个方向的选择概率(这里 4 个方向都是1/1,代表等概率随机选一个方向),所以接下来随机选一个方向控制cat移动。

这个图对应猫的 “延迟→移动→再延迟” 的循环:

  1. 攒延迟:猫处于左大节点,时钟x从 0 开始涨(每点一次模拟器的 Step,x增加一点);
  2. 够延迟了→选方向:当x ≥ CP(比如x=2),猫从左大节点跳到中间小节点,随机选一个方向cu!向上、cr!向右、cd!向下、cl!向左,四个方向概率一样);
  3. 移动后重置延迟:选完方向后,猫跳到右大节点,同时触发x=0(把时钟重置为 0);
  4. 回到攒延迟状态:从右大节点跳回左大节点,时钟x又开始从 0 涨,准备下一次移动。
     

1.3 mouse

mouse的模型和自动机和cat的类似:

不一样的是mouse的初始位置是在L13,同时图中有标注:"Narrow passage only mice can use",也就是说想L12到L9这种只有一个方向的edge,只能mouse通过,cat不能通过。

其他的逻辑和cat一致。

1.4 mouseP

如下图,和cat不一样的是,MP=1,mouse只用等一个时间单位。

然后还有mouse是由我们控制的,因此没有随机的概率选择动作。

2、模拟

在下面这个选项中,可以进行模拟。界面如下,再点击next。

然后出来下面,可以选择小老鼠的动作,我们双击ml,让它往左走。再点击next。

如图所示,就看到小老鼠的状态转移到了L12中。

模拟器中就是这么进行移动的,同理小猫也是这么动。等所有的动作结束后,还可以点击Replay动态德观察这个过程。

3、验证

如图 点击verifier 进入验证界面,包括四大板块:overview query comment status 

第一个板块overview是所有的要验证的语句;

第二个板块query就是具体的单个语句;

第三个模块 comment就是对单个语句的解释;

第四个模块status就是显示验证的结果。

UPPAAL 中针对猫鼠模型的验证查询语句,简单说就是 “问模型问题的句子”,目的是分析 “老鼠能不能到奶酪”“猫抓到老鼠的概率多大”“不同策略下结果有啥区别” 等。按功能分成以下 5 类:
 

  • 语句1:E<> Mouse.Cheese

  • → 问:“老鼠有没有可能跑到奶酪位置?”(结果是 “能” 或 “不能”)

  • 如下图,点击了check以后,即可开始验证,在status部分现实了satisfied,说明老鼠可能跑到奶酪位置。

语句 2:E<> Cat.s == Mouse.s

  • 语句含义:“是否存在路径,让猫和老鼠的位置重合(猫抓到老鼠)?”
  • 这条语句check后 还会生成一个可以在模拟器运行的轨迹,如图所示,两个位置重合,说明猫抓住了老鼠。

语句 3:strategy Fast = minE(time) [<=100] { Mouse.location } -> {}...

  • 语句含义:定义 “Fast 策略”—— 让老鼠在 100 个时间单位内,用最短时间到达奶酪。
  • 这是 UPPAAL Stratego 的核心功能:自动合成‘最优策略’。我们不用手动给老鼠规划路线,工具会遍历所有路径,算出‘最快到奶酪的走法’。这个‘Fast 策略’就是老鼠的‘极速通关手册’。
  • 如下图这个界面是Fast 策略(老鼠最快到奶酪)的 “学习过程统计结果”。
  • 1.(9009 runs)
  • 含义:为了找到 “老鼠最快到奶酪” 的最优策略,UPPAAL 工具模拟了 9009 次不同的移动场景(相当于试了 9009 种老鼠的走法)。

  •   2.Learning statistics for best strategy:

  • 含义:这是 “最终找到的最优策略” 对应的学习过程数据。
  • 3.Number of resets: 0

  • 含义:“重置学习过程” 的次数是 0。(重置通常是因为工具没找到可行路径、策略卡住等,需要重新开始学习)说明学习过程很顺利 —— 工具一开始就找对了方向,没走弯路,不需要重新试。
  • 4. Number of iterations in last reset: 1 + Number of iterations in total: 1

  • 含义:“迭代次数”(工具调整策略的轮次)总共只有 1 次。
  • 迭代次数是 1,说明这个‘最快路径’很明确 —— 工具只调整了 1 轮策略,就找到了老鼠到奶酪的最短路线,模型的迷宫结构比较清晰(最快路径没有太多复杂分支)语句 4:simulate [<=100; 20] { Mouse.s } under Fast

  • 在 Fast 策略下,模拟 100 个时间单位、采样 20 次,看老鼠的位置分布
  • 时间 0~9 左右Mouse.s的数值从 “较高值”(比如 12、13,对应老鼠的起点位置)快速下降;
  • 时间 9 之后Mouse.s稳定在 2~6 之间(对应靠近奶酪的 L2、L5 等位置),红色区域变得非常密集。
  • 这个图是 Fast 策略的效果可视化:20 次模拟中,老鼠从起点(高s值)出发,只用了不到 10 个时间单位就冲到了奶酪附近(低s值),之后一直待在目标区域。红色密集的区域说明 —— 不管模拟多少次,Fast 策略都能让老鼠‘极速通关’,这就是‘最快策略’的直观体现
  • 语句4 strategy Safe = control: A[] Cat.s != Mouse.s 

  • 这条语句就是制定安全策略,保证小老鼠不被猫抓住。
  • check后生成后,可以在模拟器中运行。

语句5  Pr[ Cat.s == Mouse.s) under Safe 

这条语句用来测试在安全策略下,猫抓到老鼠的概率。

最后得到的结果如下图,可知抓到的概率极低。

语句 6:

是又快又安全的策略。

结语:

「Cat and Mouse」不是一个 “玩具示例”—— 它是你理解 “如何用工具帮系统找最优策略” 的钥匙。如果你上手跑一遍,会更直观地感受到 “模型验证” 不是枯燥的公式,而是能解决实际博弈问题的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值