Anylogic - 由条件触发的代理位置

Posted

技术标签:

【中文标题】Anylogic - 由条件触发的代理位置【英文标题】:Anylogic - agent location triggered by condition 【发布时间】:2018-11-06 20:32:56 【问题描述】:

我的一个 Anylogic 模拟中的代理位置存在问题。我想设置一个条件来定义代理将在我的模拟可视化中采用的路径。

在我写的主代理的延迟块中

if(agent.previousStation==1)
    path01;
    
else 
    path21;
    

进入代理位置字段。

在构建模型时,anylogic 出现以下错误:

说明:语法错误,插入“VariableDeclarators”完成 本地变量声明。地点:FVMerkmale/shopfloor/wegzeit1 - 延迟

描述:标记的语法错误,错误的构造。 位置:FVMerkmale/shopfloor - 代理类型

在路径前面写“return”也无济于事,并给出不同的错误:

描述:标记的语法错误,错误的构造。 位置:FVMerkmale/shopfloor - 代理类型

说明:path21 无法解析为变量。地点: FVMMerkmale/shopfloor/wegzeit1 - 延迟

说明:无效方法不能返回值。地点: FVMMerkmale/shopfloor/wegzeit1 - 延迟

说明:代理无法解析为变量。地点: FVMMerkmale/shopfloor/wegzeit1 - 延迟

路径元素在主代理中。使用值编辑器选择正确的路径将起作用。

根据anylogic的帮助,可以将代理位置绑定到一个条件:

否则,如果你想在这里为代理设置不同的节点,你可以 编写一个 Java 表达式,根据不同的节点返回不同的节点 一些条件。 https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fagentbased%2FContinuous_Layouts.html

如何编写将路径或节点定义为代理位置的条件?

【问题讨论】:

【参考方案1】:

这是正确的代码,它是 if 语句的压缩版本,使用 ? and : 运算符(不使用分号)

agent.previousStation==1 ? path01 : path21

有关这些运算符的更多信息,请点击此处: http://www.cafeaulait.org/course/week2/43.html

【讨论】:

以上是关于Anylogic - 由条件触发的代理位置的主要内容,如果未能解决你的问题,请参考以下文章

SelectOutPut (AnyLogic) 中代理类型的条件

在 AnyLogic 中使用代理名称作为 selectOutput 的条件

在 Anylogic 中分配随机 GIS 位置

在 Anylogic 仿真中很难找到代理的当前位置

在 AnyLogic 中将预定数量的代理放置在折线中的随机位置

如何在 Anylogic 中创建与特定代理的连接并为代理显示动画连接