anylogic无法解析的编译问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了anylogic无法解析的编译问题相关的知识,希望对你有一定的参考价值。

您好,很高兴能回答您的问题。AnyLogic是一款多模型建模软件,它可以帮助用户创建复杂的模型,并使用多种技术来模拟和分析它们。AnyLogic的编译问题可以通过使用正确的编译器来解决。编译器是一种软件,它可以将源代码转换成机器可以理解的机器码。编译器可以检查源代码中的语法错误,并将其转换为机器可以理解的机器码。此外,编译器还可以检查源代码中的语义错误,并将其转换为机器可以理解的机器码。AnyLogic可以使用多种编译器,如Java编译器,C++编译器和C#编译器等,以解决编译问题。 参考技术A anylogic无法解析的编译问题是有时候因为热键冲突造成的,在偏好里面改下快捷键,可以改为alt+x。 参考技术B anylogic无法解析的编译问题,是Java编程还有C语言编程,这两个编程都是在前端工程师要用的,要用前端的设置里面,这是anylogic无法解析的编译问题。 参考技术C 请检查您的代码是否有语法错误,并确保您的AnyLogic版本是最新的。如果问题仍然存在,请联系AnyLogic技术支持团队,以获取更多帮助。

AnyLogic - 修改代理变量

【中文标题】AnyLogic - 修改代理变量【英文标题】:AnyLogic - Modifying agent variable 【发布时间】:2021-09-05 03:01:16 【问题描述】:

在 AnyLogic 中,我试图根据代理内部的变量创建一个小服务循环。出于某种原因,我的变量没有像我预期的那样改变,我无法让它工作。

在我的 selectHowMany 块中,我有以下代码,应该修改客户群体中的变量:

ped.howMany = ped.howMany + 1.0
ped.howMany = ped.howMany + 2.0
ped.howMany = ped.howMany + 3.0
ped.howMany = ped.howMany + 4.0
ped.howMany = ped.howMany + 5.0

my model with selectHowMany block open

然后,我希望输出确定 ped 应该去服务还是下沉,这取决于 howMany 变量是否大于 1。为此,我在客户群中有另一个布尔变量 isItEnough,在 output 块中有“if”语句。

  if(agent.howMany < 1.0)
    agent.isItEnough = false;

条件:

agent.isItEnough = true

output properties

最后,在每个服务块的出口处,我都有以下代码,因此变量实际上是根据行人的动作进行修改的:

ped.howMany = ped.howMany - 1.0

我的意图是,进入selectHowMany 街区的行人将定义客户群体中的变量,以确定该行人将使用服务街区之一的次数。

无论我如何尝试,行人都不会使用块(无论它退出哪个 selectHowMany 输出),所以修改变量是不正确的。 ped 处于连续循环中,它永远不会到达 sink。

希望有人能帮助我。

非常感谢, 彼得

【问题讨论】:

嗨@Peter,在这个问题上付出了很大的努力,很乐意提供帮助。但是,我可以建议您缩短这个问题并简化它,以便在一分钟左右的时间内掌握它吗?您应该能够首先将问题浓缩为核心问题,也许可以从您的特定模型中抽象出来。让我们的生活变得简单,请参阅 ***.com/help/how-to-ask 和 benjamin-schumann.com/blog/2021/4/1/… 非常感谢本杰明,反馈很好。我会看看我是否可以通过 Emile 的一些提示来解决它,并将问题改写为更直接。我很抱歉,这并不是我没有阅读如何提问,而是说实话我希望能够验证整个想法,因为我是一个使用任何 Java 的菜鸟。 不用担心。但是你更有可能得到简短而甜蜜的问题的好答案。最好请几个人来验证你的整个想法:) 【参考方案1】:

对于条件,您需要使用两个等号,而不是一个。

agent.isItEnough == true

这是我能够识别的一个错误...如果这不能解决问题,请告诉我。

另一个问题是 AnyLogic 在进入块之前评估选择输出条件。请参阅另一个问题: Unexpected behavior SelectOutput block in AnyLogic

因此,当您在选择输出的 On Enter 中添加操作时,它不会影响该选择输出的决策。正如我分享的链接中提到的那样,解决它的一种方法是在放置以下代码的选择输出元素之前添加一个 0.01 毫秒的虚拟延迟:

 if(agent.howMany < 1.0)
    agent.isItEnough = false;

【讨论】:

非常感谢 Emile,这很有帮助。我做了虚拟延迟,但到目前为止还没有解决问题。实际上,我使用 traceln 在某些位置打印出我的变量,有趣的是 - if 语句根本不起作用。 if 语句之前:ped.howMany - 5.0; ped.isItEnouhg - 错误; if 语句后:ped.howMany - 5.0; ped.isItEnouhg - 错误;我会尝试更多地朝这个方向挖掘,除非你也在这里发现一些可怕的错误? :-) 刚刚解决了!非常感谢 !其实很简单。我的 if 语句从未将变量变为 false... 愚蠢的错误,但我很高兴能抓住它。最终代码还需要“else”:'if(agent.howMany >= 1.0) agent.isItEnough = true; 其他 agent.isItEnough = false; ' 再次感谢您的宝贵帮助!一切顺利,彼得

以上是关于anylogic无法解析的编译问题的主要内容,如果未能解决你的问题,请参考以下文章

当代码编译良好时,Resharper“无法解析符号”[重复]

React 无法编译模块未找到:无法在listingDetail 上解析

boost::spirit 算术公式解析器无法编译

无法编译 ./src/App.js 找不到模块:无法解析

React 编译失败。找不到模块:无法解析“Main.css”

找不到模块:无法解析“./pages”编译失败