0

0

如何在AnyLogic中动态创建多个并行流程图模块

花韻仙語

花韻仙語

发布时间:2026-01-05 18:37:21

|

823人浏览过

|

来源于php中文网

原创

如何在AnyLogic中动态创建多个并行流程图模块

本文介绍在anylogic中根据excel数据动态实例化多个相同流程图模块(如自定义agent)的方法,通过enter/exit块串联实现流程复用,避免重复拖拽,提升模型可维护性与扩展性。

在AnyLogic中,若需根据外部数据(如Excel)动态生成多个结构一致的流程图片段(例如10个相同的处理单元),不推荐直接在主流程中复制粘贴多个标准流程图块——这会导致模型臃肿、难以维护且无法参数化控制数量。正确的建模思路是:将单个流程图逻辑封装为独立Agent类型,并通过程序化实例化实现动态扩展

✅ 推荐实现步骤:

  1. 创建专用Agent类型(如 SeparateFlowchart)
    新建一个Agent类型(右键Projects → New Agent),在其内部构建完整的子流程逻辑(如 Delay + Service + 自定义逻辑)。关键是在该Agent的入口和出口处分别添加 Enter 和 Exit 模块(位于Process Modeling Library),确保外部主流程中的智能体(agent)能按序进入、执行、离开该子流程。

  2. 在主模型中声明并动态实例化该Agent
    在主Agent(如Main)中,声明一个ArrayList或使用Population(更推荐)来管理多个实例:

    // 在Main中定义Population(推荐)
    population flowchartUnits;

    然后在on startup或on model start中,从Excel读取数量(假设Excel表config中A1单元格为整数n)并批量创建:

    int n = (int) excelReadCell("config", "A1"); // 读取Excel中指定数量
    for (int i = 0; i < n; i++) {
        SeparateFlowchart unit = new SeparateFlowchart(this);
        flowchartUnits.add(unit);
    }
  3. 在主流程中串联所有实例
    使用SelectOutput + Service或DynamicEvent虽可行,但最简洁的方式是:

    • 将主流程中Source → [一系列Enter/Exit链] → Sink 的路径,改为调用一个循环遍历flowchartUnits的自定义函数
    • 或更优雅地:在Source后接Enter模块,再连接一个Service模块(其Capacity设为1),并在Service的On enter中编写:
      // 假设当前智能体为agent,按顺序访问每个SeparateFlowchart
      for (SeparateFlowchart unit : flowchartUnits) {
          agent.enter(unit.enter); // 强制进入该单元的Enter块
          // 注意:实际需配合Exit回调或事件驱动,推荐用嵌套Enter-Exit链
      }

      但更健壮的做法是: 在SeparateFlowchart Agent内,Exit模块的On exit中自动触发下一个单元的Enter(或通过main调度),形成链式调用。

      情感家园企业站5.0 多语言多风格版
      情感家园企业站5.0 多语言多风格版

      一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!

      下载

⚠️ 注意事项:

  • Enter/Exit模块必须成对出现在同一Agent内,且Exit的Destination应指向下一个Enter(跨Agent时需用unit.enter引用);
  • 若各单元需并行处理(非串行),则Source应连接SelectOutput分流至各Enter,而非链式调用;
  • Excel读取需提前配置ExcelFile对象,并确保路径正确、Sheet名与单元格坐标无误;
  • 所有动态创建的SeparateFlowchart实例会自动加入仿真运行时环境,无需手动启动。

✅ 总结

通过“流程封装→Agent化→动态实例化→Enter/Exit链式调度”四步法,即可灵活响应Excel等外部数据驱动的流程规模变化。该方法符合AnyLogic面向对象建模范式,显著提升模型复用性、可读性与后期维护效率。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

54

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

49

2025.11.27

excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

1368

2023.07.25

excel重复项筛选标色
excel重复项筛选标色

excel的重复项筛选标色功能使我们能够快速找到和处理数据中的重复值。本专题为大家提供excel重复项筛选标色的相关的文章、下载、课程内容,供大家免费下载体验。

397

2023.07.31

excel复制表格怎么复制出来和原来一样大
excel复制表格怎么复制出来和原来一样大

本专题为大家带来excel复制表格怎么复制出来和原来一样大相关文章,帮助大家解决问题。

545

2023.08.02

excel表格斜线一分为二
excel表格斜线一分为二

在Excel表格中,我们可以使用斜线将单元格一分为二。本专题为大家带来excel表格斜线一分为二怎么弄的相关文章,希望可以帮到大家。

1240

2023.08.02

excel斜线表头一分为二
excel斜线表头一分为二

excel斜线表头一分为二的方法有使用合并单元格功能方法、使用文本框功能方法、使用自定义格式方法。本专题为大家提供excel斜线表头一分为二相关的各种文章、以及下载和课程。

363

2023.08.02

绝对引用的输入方法
绝对引用的输入方法

绝对引用允许在公式中引用一个固定的单元格,而不会随着公式的复制和粘贴而改变引用的单元格。本专题为大家提供绝对引用相关内容的文章,大家可以免费体验。

4517

2023.08.09

漫蛙2入口地址合集
漫蛙2入口地址合集

本专题整合了漫蛙2入口汇总,阅读专题下面的文章了解更多详细内容。

162

2026.01.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 10.9万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号