Repast Statecharts

Repast Statecharts

1. Getting Started

  1. 功能:可视化的展示个体的状态和转移。

  2. 添加Satechart

    右键Agent类,新建statechart

    代码解析

    // 实例化一个agent statechart对象,并在delaytime时间后开始
    Statechart statechart = Statechart.createStateChart(agent,delaytime);
    
    // 实例化agent statechart对象
    Statechart statechart = Statechart.createStateChart(agent);
    // 使statechart对象开始
    StateChartScheduler.beginNow(statechart);
    StateChartScheduler.beginLater(later, statechart);
    
    // 停止statechart对象
    statechart.stop();
    

状态图调度方式:定时激活(activate)、触发器(statechart trigger)

  1. 状态图编辑器

2. States

2.1 Entry State Marker

在这里插入图片描述

每个statechart必须有一个入口状态标记,该标记定义了当一个状态图被激活时的入口。

2.2 Simple State

在这里插入图片描述

在激活的状态图中任一个时间点,有且只有一个简单状态时活跃的。

  • ID: ID名

  • actions

    • On Enter: 进入该状态时触发

    • On Exit: 退出该状态时触发

      On Enter/On Exit可用

      • 关键字:agent、state、params
      • 包:
        • repast.simphony.essentials.RepastEssentials
        • repast.simphony.random.RandomHelper

2.3 Composite State

在这里插入图片描述

组合状态用于在状态图中嵌套元素。

属性

  • 同Simple State(ID、On Enter、On Exit)
  • 可以包含子元素(Simple State、Composite State、Initial state marker、History state、Final state、Branching state)

状态

  • 当复合状态中一个子元素被激活时,该组合状态也会被激活
  • 当复合状态外部到其子元素的状态转移发生时,该组合状态会先于其子元素被进入
  • 当复合状态中一个子元素到复合状态外部的状态转移发生时,该组合状态会晚于子元素被退出

2.4 Initial State Marker

在这里插入图片描述

任何包含迁移结束或含有历史状态的复合状态必须有初始状态标记。

初始状态标记指向在进入复合状态时的开始元素。

2.5 History State

在这里插入图片描述

  • shallow:当进入浅历史状态时,与历史状态相同层次的封闭复合状态中的最后一个被激活的元素(初始状态)将被重新进入。

在这里插入图片描述

  • deep:当进入深历史状态时,封闭复合状态内最后一个被激活的简单状态(初始状态)将被重新进入。

2.6 Final State

在这里插入图片描述

最终状态时状态图所有活动的结束标记,只有On Enter动作。

进入最终状态后,没有新的状态会被进入或者状态转移被触发。

2.7 Branching State

在这里插入图片描述
每个分支状态必须定义一个默认转移,其他的为条件转移

3. Transitions

普通转移/自我转移

  • 可以定义 On Transition动作
    • 可用关键字:agent、transition、params
  • 可以定义守护条件(Guard condition),必须满足守护条件转移才会被触发
  • 当有一个以上的有效转换时,使用转换的优先级断开连接。如果转换有相同的优先级,那么其中一个转移将以均匀随机概率被选择。
  • 零时间转移:当一个新的状态进入时,如果有一个有效的零时间转换离开它,该转换立即被跟随。
  • 轮询时间:对转换进行有效性轮询的频率。

3.1 Always Trigger

总是触发总是是有效的,可以设置守护条件为假来阻止触发。

3.2 Timed Trigger

定时触发在一定时间后有效。

3.3 Probability Trigger

概率触发根据给定大概率来判断是否有效。

3.4 Condition Trigger

条件触发根据特定的条件来判断是否有效。

3.5 Exponential Decay Rate Trigger

指数衰减率分布在一个服从指数分布的随机时间后有效。

3.6 Message Trigger

当状态图接收到满足特定条件的消息时,消息触发器会生效。

  • 当消息满足条件时(When Message Meets Condition):

  • 当消息相等时(When Message Equals):

  • 当消息时某个类型时(When Message is of Class):

  • 总是(Always):

4. Debugging Statechart

5. Statecharts at Runtime

6. Putting it All Together

参考:https://repast.github.io/docs/Statecharts.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值