如果您在仿真领域工作,就会知道灵活性和效率是提供无缝建模体验的关键。在处理新的仿真项目时,您希望避免从头开始重建功能。在 AnyLogic 中使用模块化模型,有助于通过重复使用可调整、可共享的组件来扩展仿真体验。
在本文中,我们将介绍设计模块化模型的核心原则,这些模型具有可扩展性、可适应性,并易于跨团队共享。我们还将演示如何创建智能体库,以增强制造、医疗系统或物流的仿真工作流,从而提高开发效率。
另请阅读《复杂项目管理工具箱的演变》,了解如何在战略项目管理中应用仿真技术。
可重用智能体对仿真项目的重要性
在开展仿真项目时,效率不仅仅是建立模型的速度;它还关系到确保您创建的智能体可以轻松地重复使用并适用于未来的仿真。在 AnyLogic 中,构建可重复使用的智能体或流程模块至关重要,而且随着您处理更大规模的仿真项目以及现有模型的发展,这种需求会变得更加明显。
在下面的章节中,我们将讨论初学者建模通常认为的弊端,并阐述增强模块化的关键概念,从而实现更灵活的仿真体验。
复制粘贴综合症——一个陷入重复的建模者的故事
如果没有经过适当的培训,初学者往往会陷入复制和粘贴类似对象的习惯,我们可以将这种做法称为 “复制粘贴综合症”。
这种方法可能适用于小型仿真项目,但当所需更改会阻碍个人成长,甚至影响整个组织时,这种方法就会变得很成问题。用这种方法建立的小型模型看似易于管理,但大规模仿真很快就会暴露出这种方法的低效性。
如果您发现自己有这样的问题,那您并不孤单。许多人仍在使用这些做法。不过,读完本文后,您就可以接受可重用性原则,创造出让他人赞叹的精简、高效的仿真体验了。
使用通用智能体——避免冗余
当我们反思过去做法的弊端时,有些人可能会说:“我从来没有这样做过”,或者认为那是很久以前的事了。然而,另一些人在回顾当前的仿真项目时可能会沮丧地意识到,他们仍在使用这些过时的方法。
如果您发现自己也属于这种情况,请不要惊慌—您仍有机会发展和提升仿真体验。在您向更有效的规模仿真实践过渡时,请抓住这个成长的机会。
AnyLogic 团队优先考虑您的仿真体验;例如,这里有一段关于创建自定义模块的视频。

这是一个良好的开端,因为通过发送创建自定义模块的模型,可以轻松与他人共享这些自定义模块。您可以探索无数令人着迷的可能性:
- 自定义菜单和用户界面框架,以提高可用性。
- 定制包含仿真项目中常用特征的智能体类型(例如,具有年龄、身高、国籍等属性的公民智能体,或具有忙碌和空闲状态图的工人智能体)。其他智能体可以继承这些类型,获得某些特征。
- 通过设计运行自定义实验的智能体来实施仿真实验,使您能够进行默认情况下可能无法进行的常用测试。
- 让您的创造力引导您——如果您重复使用某样东西,就把它变成一个智能体。这一原则放之四海而皆准。
然而,挑战也随之而来。假设小组 A 创建了一个名为 patientHandler 的自定义模块,用于管理护士如何接待病人并在病人出院前将其送往医生办公室。小组 A 与小组 B 分享了这一功能,他们对这一进展表示赞赏。一个月后,团队 C 请求类似的功能。小组 A 向小组 C 发送了 patientHandler 的版本,而小组 B 也发送了他们修改后的版本。现在,小组 C 面临着一个两难的选择:他们必须在两个版本中做出选择,而且他们很可能也会做出自己的调整。
不久之后,patientHandler 就会出现多个版本,每个版本都有不同的功能和特性。虽然您已经成功开发了一个可重复使用的智能体,但组织在跨团队有效重复使用方面仍将举步维艰,这将导致仿真项目管理的混乱和低效。
封装—参数化方法的记录
为了应对上述挑战,您应该采取一些步骤来简化仿真项目:
- 避免硬编码。说真的,这一点至关重要。硬编码值限制了灵活性和适应性。
- 确保您的智能体独立于外部因素。这种自主性允许在不同模型之间更好地重复使用和集成。
- 保护您的智能体不受外部影响。保持智能体功能的完整性至关重要。
参数化(parametrization)的概念是指智能体使用的所有数据都必须存在于参数中。封装(encapsulation)的概念是指,智能体中的所有内容都应在智能体本身内部运行,某些部分应保持私有以保护其内部运作。这包括使用私有变量和添加方法来安全地访问它们。这些做法有助于创建更强的仿真体验,并使智能体在大型仿真中可靠运行。
有关使用获取器和设置器的更多见解,请观看视频:

应用这些实践后,您的智能体就可以重用、灵活、安全地使用了。但您还缺少一件事——将智能体打包成易于共享的可重用组件。
创建一个库—从可重用性的基础出发
您已经在实现良好实践的道路上走了很长一段路,现在您已经准备好创建一个带有参数化和封装智能体的库了。幸运的是,创建库非常简单,AnyLogic 帮助文档 中提供了清晰的说明。
这种方法可以在 AnyLogic 面板上添加一个新库,其中包含所有参数化和封装的智能体,以便在未来的仿真项目中重复使用。与您的团队共享这个库,甚至在更大范围内共享都变得毫不费力。它还消除了多个版本的问题,因为您可以控制库的功能,并通过访问源代码来处理更新请求。
资源库和提取——协作力量的入口
作为资料库的创建者,您可能不想总是负责添加新功能或管理用户请求,尤其是当资料库越来越受欢迎时。相反,明智的做法是让其他人有能力自行更改。使用像 GitHub 这样的共享库,其他团队就可以克隆最新版本、进行修改并推送更新。
但是,您需要确保某些方法在智能体或类之间以最小的依赖性一致地实现,以保持灵活性和易于测试。这就是 Java 接口的用武之地——它们有助于保持一致的行为,如果您希望简化仿真项目,它们是必不可少的。
与世界共享库
库不仅可以在组织内部共享,还可以免费或通过许可与全球共享。AnyLogic 已经创建了一些外部库,如Pypeline 和 Alpyne.
在 Noorjax Consulting,我们创建了几个共享库;您可以在我们的产品页面上找到它们:
- ChatGPT Bridge:允许您在模型中使用人工智能聊天工具,随着仿真项目的进展,该聊天工具可帮助您了解模型的数据输出信息。
- 机械臂:这是多个行业生产中使用的典型制造组件。
- 堆垛机:使用自动化系统在原生存储对象中存储、检索和重新定位智能体。
- 自动分拣系统:这是一个复杂的库,可通过自动创建分拣传送带并与外部软件集成来确定对象的优先级和路线,从而增强仿真体验。
- 特殊优化和蒙特卡罗实验:用于优化实验和蒙特卡罗实验的自动置信区间停止标准的解决方案。
- 普通智能体和资源电梯组:一组可在流程建模库中协同工作的电梯,可扩展移动智能体和资源的仿真。
下一步是什么?
是时候专注于建立您的仿真项目了!无论您是正在创建一个库,还是已经创建了一个库,或者认为您已经有了一个接近的库,都可以联系我们,我们将为您提供专家咨询。Noorjax 可以轻松帮助您扩展您的仿真想法,为您带来完整的仿真体验。
让您的仿真项目更进一步——立即下载 AnyLogic,开始构建可扩展、有影响力的仿真。