【发布时间】:2020-03-29 12:53:36
【问题描述】:
在模拟窗口中,在运行之前,我想通过在链接到变量的特定编辑框中键入例如“triangular(5,20,15)”来更改一些概率分布(例如延迟时间) . 我知道如何处理静态值,但不知道如何处理概率分布。
【问题讨论】:
标签: simulation probability distribution anylogic editbox
在模拟窗口中,在运行之前,我想通过在链接到变量的特定编辑框中键入例如“triangular(5,20,15)”来更改一些概率分布(例如延迟时间) . 我知道如何处理静态值,但不知道如何处理概率分布。
【问题讨论】:
标签: simulation probability distribution anylogic editbox
AnyLogic 为 com.anylogic.engine.database.CodeValue 提供了内置功能。
它原本的意思是一个以文本形式存储在内部数据库中的分布函数可以被解析为java代码并执行,但实际上它也可以在没有数据库的情况下和任何类型的代码中工作。这与 Benjamin 的回答中的想法相同,只是您不需要添加任何外部 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();
显然,允许用户在此处键入任何命令并在没有检查或错误处理的情况下运行它是一个坏主意,请注意这一点。
【讨论】:
Annotation processing got disabled, since it requires a 1.6 compliant JVM,有时我也会收到:error during model destruction: truncated class file。有任何想法吗? @弗洛里安
这是一个 Java 问题。您需要将字符串(您的编辑框内容)转换为可执行代码。不是直截了当,但也不是不可能,请参阅 Convert String to Code 和类似的帖子。
【讨论】: