AnyLogic method exceeding the byte limit error: how these methods are actually defined?

AnyLogic method exceeding the byte limit error: how these methods are actually defined?

这是 的后续问题;关于错误信息如下:

Description: The code of method _createPersistentElementsBP5_xjal() is exceeding the 65535 bytes limit.

基本上是说方法_createPersistentElementsBP5_xjal()的代码大小已经超过了最大限制。通过检查模型的 Java 代码,我看到我的主要代理分为六个部分:_createPersistentElementsBP1_xjal()_createPersistentElementsBP2_xjal()、...、_createPersistentElementsBP6_xjal().

5 号的那个有问题。但是,我找不到关于如何分离这些方法的任何定义逻辑(例如,在哪个方法中包含哪些元素)。

如果您查看屏幕截图的顶部,您会看到路径 5、6、7 属于 ...BP4_xjal()。然后开始 ...BP5_xjal()(有问题的那个)与交叉点和一个名为 reversePoint4 的节点。其实reversePoint4path5/6/7都属于同一个网络

问题是:AnyLogic中这样的方法定义的基础是什么(例如,哪些元素属于哪个方法)?是不是乱做的?

Java 对可用于定义单个方法的文本量有内置限制(更多解释 here)。在这种情况下,这个错误是由AnyLogic生成的方法的实际文本引起的。

为了解决这个问题,我会尝试重构模型以减少文本量。这可以通过定义创建元素的函数而不是直接定义元素或在其他代理中移动元素然后包含在 Main 代理中来完成。

您可能只能通过询问 AnyLogic 支持才能知道答案,因为这是其代码生成的内部机制。我的猜测是它只是将 space 标记元素的初始化拆分为给定数字的 'chunks' (也许 --- 这将是相当讽刺的 --- 试图避免 method/signature 尺寸问题)。

(我假设 BP1-5 拆分不对应于模型中的任何 'functional' 拆分;例如,不同的 space 标记网络或类似网络。您似乎在暗示在你的问题中。)