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 - _出生率)* (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.rnPlease check expressions of this variable.");
}

这个问题显然是源于蚊子出生的函数调用,但我没有得到任何其他语法错误,除了那一个,当我试图运行模型。我花了很长时间才使它没有错误(除了最后一个)。任何提示/建议/帮助都非常感谢!

所以我看了你对模型的解释,似乎有一些事情需要澄清/纠正:

  1. 滑块没有链接到参数吗?尝试将它链接到一个名为Temperature_F的参数,并将滑动条的名称更改为其他任何名称。在这种情况下,新参数将有一个链接将其连接到流,就像" neasia_mosquito ">

  2. 我假设你的函数接受一个名为"Temperature_F" int类型的参数。对吗?它应该。

  3. 您没有定义变量"NEAsia_Temperature_F"在你的函数中?函数体以

    开始
    int NEAsia_Temperature_F = 0;
    
  4. 从流动方程中删除分号:

    Mosquito_Births = (NEAsia_Mosquito_Pop * NEAsia_Mosquito_BirthRate) * (NEAsia_Temperature_F(Temperature_F))
    

以上评论是基于您提供的信息。通过以上步骤,我试图复制您的模型,错误不再存在。

让我知道这是否为你解决了问题。

最新更新