PRISM 随机博弈(SMG)
简介
随机多人博弈(Stochastic Multiplayer Games, SMG)是PRISM模型检查器支持的一种交互式概率模型,用于描述多个决策者(玩家)在随机环境中的策略互动。与马尔可夫决策过程(MDP)不同,SMG允许两个或多个玩家以竞争或协作的方式影响系统行为。
核心特征
- 多玩家系统:至少两个玩家各自拥有独立的策略空间
- 概率转移:系统状态转移可能包含随机性
- 目标冲突:玩家可能具有相互冲突的优化目标
基础语法结构
PRISM中SMG模型使用.smg
文件扩展名,其基本框架延续了.pmd
(MDP)文件的语法,但需要明确指定玩家控制:
// 玩家定义
player P1
[a1], [a2] // 玩家1的可控动作
endplayer
player P2
[b1], [b2] // 玩家2的可控动作
endplayer
// 模型定义
smg
module Player1
s : [0..1] init 0;
[a1] s=0 -> 0.5:(s'=1) + 0.5:(s'=0); // 玩家1的动作a1
[a2] s=0 -> (s'=1); // 玩家1的动作a2
endmodule
module Player2
[b1] s=1 -> (s'=0); // 玩家2的动作b1
[b2] s=1 -> 0.8:(s'=0) + 0.2:(s'=1); // 玩家2的动作b2
endmodule
关键组件详解
1. 玩家定义块
每个玩家通过player...endplayer
块声明,包含该玩家可控的动作标签(用方括号标识):
player NetworkAdmin
[allow], [block], [scan]
endplayer
2. 模块中的玩家控制
在模块内部,动作前的标签表明哪个玩家控制该转移:
module SecuritySystem
[admin_act] compromised=0 -> ... // 由admin_act对应的玩家控制
[attacker] compromised=0 -> ... // 由attacker玩家控制
endmodule
3. 奖励结构
可以为不同玩家定义独立的奖励机制:
rewards "attacker_gain"
[attack] success : 5;
endrewards
rewards "defender_cost"
[defend] : -2;
endrewards
典型应用案例:网络安全博弈
考虑网络攻防场景,防御者(Defender)和攻击者(Attacker)在存在随机故障的网络中进行对抗:
对应的PRISM SMG模型:
player Defender
[patched], [recover]
endplayer
player Attacker
[exploit], [backdoor]
endplayer
smg
module Network
state : [0..2] init 0; // 0=secure, 1=compromised, 2=crashed
[exploit] state=0 -> 0.7:(state'=1) + 0.3:(state'=0);
[patched] state=0 -> (state'=0);
[backdoor] state=1 -> (state'=1);
[recover] state=1 -> (state'=0);
[] state=1 -> 0.1:(state'=2);
endmodule