Anylogic:你能在编辑框中输入概率分布吗?

Anylogic: can you type a probability distribution into an edit box?

在模拟 window 中,在 运行 之前,我想通过键入 "triangular(5, 20, 15)" 来更改一些概率分布(例如延迟时间)链接到变量的编辑框。 我知道如何使用静态值执行此操作,但我不知道如何使用概率分布执行此操作。

这是一个 Java 问题。您需要将字符串(您的编辑框内容)转换为可执行代码。不是直截了当但也不是不可能,请参阅 Convert String to Code 和类似的帖子。

AnyLogic 为 com.anylogic.engine.database.CodeValue.

提供了内置功能

原本的意思是将内部数据库中以文本形式存储的分布函数解析为java代码并执行,但实际上它在没有数据库的情况下也适用于任何类型的代码。这与本杰明的回答中的想法相同,只是您不需要添加任何外部 java 库。

这样使用:

CodeValue myCode = new CodeValue(this,"....java code to be executed");
myCode.execute();

并且在您的特定情况下,假设您有一个名为 variableA 的变量和一个名为 editbox 的编辑框,请使用以下代码评估表达式,获取一个值并将其设置为变量:

CodeValue myCode = new CodeValue(this,"variableA = "+editbox.getText());
myCode.execute();

显然,允许用户在此处键入任何命令并且 运行 它没有检查或错误处理是一个坏主意,请注意这一点。