You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic中关联单选按钮实现多组调度计划条件选择

AnyLogic 单选按钮控制多场景Source速率调度实现方案

步骤1:配置选择状态变量与单选按钮

  • 在Main代理中新建一个整型变量selectedScenario,初始值设为0,对应默认选中的场景A
  • 从控件面板拖入Radio Button控件到需要展示选择入口的位置(模型运行界面/自定义实验配置页均可),在控件的Items属性栏按顺序填入5个选项文本:Operating Scenario A, Operating Scenario B, Operating Scenario C, Operating Scenario D, Operating Scenario E,控件会自动给选项分配从0开始的索引值,和5个场景一一对应
  • 打开Radio Button的Action选项卡,写入赋值代码:selectedScenario = value;,其中value是单选按钮控件的内置返回值,会自动返回当前选中项的索引,不需要额外编写选中状态判断逻辑。

步骤2:为Source块绑定动态匹配的速率计划

提前把所有场景对应的速率调度计划(西向A1-E1、东向A2-E2)创建完成并放在Main代理的可调用作用域内,不要给Source块静态指定固定的速率计划,通过动态表达式按选中场景匹配:

  • 打开WestboundArrival Source块的属性面板,找到到达速率(Arrival rate)配置项,选择动态表达式输入模式,写入以下判断代码:
switch (selectedScenario) {
    case 0: return A1;
    case 1: return B1;
    case 2: return C1;
    case 3: return D1;
    case 4: return E1;
    default: return A1; // 异常兜底默认加载A场景计划
}
  • 打开EastboundArrival Source块的属性面板,同样在到达速率的动态表达式栏写入对应匹配逻辑:
switch (selectedScenario) {
    case 0: return A2;
    case 1: return B2;
    case 2: return C2;
    case 3: return D2;
    case 4: return E2;
    default: return A2;
}

优化与避坑提示

  • 如果单选按钮放在模型运行的Main界面,需要勾选控件的「初始化时执行动作(Execute action on initialization)」选项,保证模型启动时会自动给selectedScenario赋初始选中项的值,避免初始状态匹配不到速率计划报错。
  • 如果单选按钮放在自定义实验的配置页,注意赋值代码的作用域,需要明确指定给Main实例下的selectedScenario变量传值,不要直接写局部赋值。
  • 所有速率计划(Rate Schedule)的时间单位必须和Source块设置的到达速率时间单位完全一致,否则会出现实际到达速率和预期不符的问题。
  • 如果后续场景数量会扩展,可以提前定义两个Schedule类型的数组存储对应计划,简化代码:
    // Main中提前定义数组
    Schedule[] westArrivalSchedules = {A1, B1, C1, D1, E1};
    Schedule[] eastArrivalSchedules = {A2, B2, C2, D2, E2};
    
    此时Source块的动态表达式只需要写一行代码:return westArrivalSchedules[selectedScenario];即可,不需要写长段switch判断,后续加场景直接往数组里加元素就行。

不要通过反复启停Source块、替换控件的方式切换场景,直接通过动态表达式返回对应计划的方式是AnyLogic官方推荐的动态参数绑定方式,运行时不会额外消耗性能,也不会出现事件触发时序错误。

内容的提问来源于stack exchange,提问作者AndyC22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:09:20