【问题标题】:Stack overflow error encountered in AnyLogicAnyLogic中遇到堆栈溢出错误
【发布时间】:2021-12-13 21:19:21
【问题描述】:

我的模型执行了前 800 秒,之后我遇到了以下错误。有没有办法可以增加 AnyLogic 中的堆栈大小?有没有其他方法可以用来对付同样的问题?

`Exception during discrete event execution:
StackOverflowError
java.lang.StackOverflowError
at com.anylogic.engine.Agent.e(Unknown Source)
at com.anylogic.engine.Agent.h(Unknown Source)
at com.anylogic.engine.Agent.ext(Unknown Source)
at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source)
at com.anylogic.libraries.processmodeling.OutputBlock.forwardReadyEntityNotification(Unknown Source)
at com.anylogic.libraries.processmodeling.InputBlock$1.a(Unknown Source)
at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source)
at com.anylogic.libraries.processmodeling.OutputBlock.forwardReadyEntityNotification(Unknown 
Source)
at com.anylogic.libraries.processmodeling.InputBlock$1.a(Unknown Source)
at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source)
at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source)
at com.anylogic.libraries.processmodeling.OutputBlock.forwardReadyEntityNotification(Unknown 
Source)`

【问题讨论】:

  • 你能用更小的型号运行吗?难道这实际上不是一个无限循环,或者您实际上需要在代码中处理的东西吗?我不知道任何逻辑,但也许 this post 可以帮助您 - 它展示了如何增加 java 项目的堆栈,或者可能是 this tutorial,我认为这更有帮助 - 与 jvm 堆栈配置有关。
  • 您可能已经创建了一个无限循环,没有任何 AnyLogic 设置可以帮助您。您需要调试模型以查看错误来自何处。
  • 谢谢莱昂纳多和本杰明。你猜对了,这个错误是由无限循环引起的。让我解释一下到底发生了什么。在模拟模型中,我希望卡车代理被转移到一个或另一个海湾。只有当海湾是空的时,卡车才能驶入海湾。由于有 2 个托架,我创建了一个选择输出块,其在错误条件下退出导致另一个选择输出块,其错误条件退出导致返回到第一个选择输出块之前的块输入。如果卡车在两个海湾都出现,则会导致无限循环。

标签: java runtime-error simulation stack-overflow anylogic


【解决方案1】:

我相信您正在使用 AnyLogic 软件的免费试用/(PLE) 版本,因为堆栈大小是有限的。可以通过减少代理数量或在此处购买完整版本来缩小模型大小来解决该问题。 https://www.anylogic.com/purchase/

【讨论】:

  • PLE 没有堆栈大小限制。 StackOverflow 错误仅在触发无限循环时发生,这与任何模型设置或 PLE 限制无关:)
猜你喜欢
  • 1970-01-01
  • 2014-01-26
  • 2019-02-16
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多