0

0

在 AnyLogic 中动态创建多个流程图组件的完整实现方法

花韻仙語

花韻仙語

发布时间:2026-01-05 10:22:34

|

884人浏览过

|

来源于php中文网

原创

在 AnyLogic 中动态创建多个流程图组件的完整实现方法

本文介绍如何根据 excel 数据动态生成指定数量的相同流程图模块(如 seperateflowchart),并通过 enter/exit 块串联它们,使主流程中的智能体依次通过全部模块。

在 AnyLogic 中,若需按外部数据(如 Excel)动态构建重复性流程逻辑(例如并行或串行部署多个功能一致的子流程),不推荐直接复制粘贴多个流程图块到主流程中——这会导致模型僵化、难以维护且无法参数化。正确做法是采用“模块化代理 + 动态实例化”设计范式。

✅ 推荐架构:封装为独立 Agent 类型

  1. 新建 Agent 类型(如 SeperateFlowchartUnit)

    • 在该 Agent 内部嵌入完整的子流程图(含您原有的逻辑,如 Service、Delay、SelectOutput 等);
    • 必须添加 Enter 和 Exit 块:Enter 作为入口点接收来自外部的智能体,Exit 作为出口点将智能体传递给下一个环节;
    • 可选:为 Enter 设置 on enter 动作以记录日志或触发事件,增强可观测性。
  2. 在 Main 模型中读取 Excel 数据并批量实例化
    假设 Excel 表格 config.xlsx 的 Sheet1 中 A1 单元格存储数量 n = 10,可在 Main 的 on startup 动作中编写:

// 读取 Excel 中指定单元格的整数值
int n = (int) excelFile.getCellNumericValue("Sheet1", 0, 0); // 行0列0 → A1

// 动态创建 n 个 SeperateFlowchartUnit 实例,并自动添加到 Main 的嵌入式 agent 图表中
for (int i = 0; i < n; i++) {
    SeperateFlowchartUnit unit = add_seperateFlowchartUnit(); // 使用 AnyLogic 自动生成的 add_ 方法
    unit.setName("flowUnit_" + i);

    // 可选:设置位置(便于可视化布局)
    unit.setXY(200 + i * 180, 300);
}
  1. 连接主流程与子模块链

    蓝色企业网站系统(含PC和wap端)1.0
    蓝色企业网站系统(含PC和wap端)1.0

    该网站程序ASP+Access开发,拥有完善的网站前台和后台管理功能,前台完全纯Html生成,本套源适合大部分中小企业建站需求。 网站前台生成PC版和WAP版,适合现在主流推广方式一、网站管理非常简单易用 二、单页介绍系统、图文展示、文章管理三、前台纯HTML静态文件生成四、前台生成PC和WAP两个版本,更实用

    下载
    • 主流程中:Source → Enter(第一个 SeperateFlowchartUnit)
    • 子模块间:每个 SeperateFlowchartUnit.exit → 下一个 SeperateFlowchartUnit.enter
    • 末尾:最后一个 SeperateFlowchartUnit.exit → Sink
    ? 提示:可通过循环自动连线(使用 connect() 方法),或在初始化后手动拖拽连线(适合调试阶段)。
  2. 确保智能体流动逻辑正确

    • 所有 SeperateFlowchartUnit 必须启用 Allow multiple agents(在 Enter 属性中勾选),否则会阻塞;
    • 若子流程需保持状态隔离(如不同单元处理不同任务),请确认 SeperateFlowchartUnit 中的变量/资源未被全局共享;
    • 建议为每个 SeperateFlowchartUnit 添加唯一 ID(如 unitId = i),便于日志追踪和调试。

⚠️ 注意事项

  • Enter/Exit 块是实现跨 Agent 流程衔接的核心——它们提供标准化的输入输出接口,替代了传统流程图中“硬连线”的耦合方式;
  • 动态创建的 Agent 实例默认属于 Main 的嵌入式 agent 集合,其生命周期由 Main 管理,无需手动销毁;
  • 若 Excel 数据变更需热重载,可封装为函数并在实验参数中绑定,配合 reset() 触发重建(适用于迭代调试)。

通过该方法,您不仅实现了“读 Excel 控制流程长度”的需求,更构建出高内聚、低耦合、可复用、易扩展的 AnyLogic 工程化建模结构。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1003

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

56

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

293

2025.12.29

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

python设置中文版教程合集
python设置中文版教程合集

本专题整合了python改成中文版相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.05

热门下载

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

精品课程

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

共162课时 | 10.8万人学习

成为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号