java - AnyLogic 库存/流错误:无法解析(变量名)的表达式 - 流
问题描述
这样做的目的是根据温度的热/冷来操纵蚊子的出生率。温度与滑块相关联,因此用户可以在模拟过程中调整温度以观察蚊子出生率的变化。温度越接近75,蚊子的出生率就越高。但我有这个问题:
当我尝试运行我的 AnyLogic 模型时,这是我得到的唯一错误,它使模型在我尝试运行它时无法运行模拟窗口:
Couldn't parse expression for Mosquito_Births - Flow: syntax error.
Please check expressions of this variable.
at group4_assignment2.Main.<init>(Main.java:460)
at group4_assignment2.Simulation.createRoot(Simulation.java:154)
at group4_assignment2.Simulation.createRoot(Simulation.java:1)
[这里是发现错误的模型部分的图片,红色圈出] : https ://i.stack.imgur.com/sx8hH.png
Temperature_F链接到函数NEAsia_Temperature_F。最小限制设置为 1,最大限制设置为 120。
函数 NEAsia_Temperature_F设置为返回int
值,代码为:
if(Temperature_F <= 75){
NEAsia_Temperature_F = (Temperature_F / 75);
} else {
NEAsia_Temperature_F = (2 - (Temperature_F / 75));
}
return NEAsia_Temperature_F;
NEAsia_Mosquito_Birthrate = 0.45
Mosquito_Births = (NEAsia_Mosquito_Pop * NEAsia_Mosquito_BirthRate) * (NEAsia_Temperature_F(Temperature_F);)
NEAsia_Mosquito_Pop = 100
这是从与错误关联的模型中自动生成的 Java 代码。错误if (true) throw new RuntimeException
在底部的行上:
private static String[] _parameterNames_xjal;
@Override
public String[] getParameterNames() {
String[] result = _parameterNames_xjal;
if (result == null) {
List<String> list = new ArrayList<>( Arrays.asList( super.getParameterNames() ) );
list.add( "NEAsia_Human_FertilityRate" );
list.add( "NEAsia_Mosquito_BirthRate" );
list.add( "Mosquito_Mortality_Rate" );
list.add( "Human_Mortality_Rate" );
list.add( "Contact_Rate" );
list.add( "Incubation_Time" );
list.add( "Infection_Duration" );
result = list.toArray( new String[ list.size() ] );
_parameterNames_xjal = result;
}
return result;
}
// Dynamic (Flow/Auxiliary/Stock) Variables
{
if (true) throw new RuntimeException("ERROR during variable generation:\nCouldn't parse expression for Mosquito_Births - Flow: syntax error.\r\nPlease check expressions of this variable.");
}
问题显然源于 Mosquito_Births 中的函数调用,但是当我尝试运行模型时,除了那个单一的语法错误之外,我在任何地方都没有收到任何其他语法错误。我花了很长时间才让它没有错误(最后一个除外)。非常感谢任何提示/建议/帮助!
解决方案
所以我回顾了你对模型的解释,似乎有些事情需要澄清/纠正:
滑块是否未链接到参数?尝试将其链接到名为 Temperature_F 的参数并将滑块的名称更改为其他任何名称。在这种情况下,新参数将有一个链接将其连接到流,就像“NEAsia_Mosquito_Birthrate”一样
我假设你的函数接受一个名为“Temperature_F”的 int 类型的参数。那正确吗?它应该。
您没有在函数中定义变量“NEAsia_Temperature_F”吗?启动函数体
int NEAsia_Temperature_F = 0;
从流量方程中删除分号:
Mosquito_Births = (NEAsia_Mosquito_Pop * NEAsia_Mosquito_BirthRate) * (NEAsia_Temperature_F(Temperature_F))
以上评论基于您提供的信息。通过上述步骤,我尝试复制您的模型,错误不再存在。
让我知道这是否为您解决了问题。
推荐阅读
- flutter - 如何使用颤振将动态值传递给其他小部件
- vue.js - 我如何使它成为“应用程序”属性
不适用于“xs”屏幕尺寸,因此抽屉位于内容之上? - c - inotify_add_watch 的 fd 参数是什么?
- flutter - 如何展平列表
- python-3.x - 使用 datetime 模块减少 python3 中的日期代码
- python - 如何以pythonic方式从数组中删除十进制值
- laravel - 为什么注册时收不到确认邮件?
- flutter - 如何在 Dart 中将字符串索引转换为字符索引
- python - 如何使用多索引数据框绘制图表
- go - 如何检查一个函数在测试中被调用了多少次?