Evaluating/executing AnyLogic 中的动态字符串

Evaluating/executing strings dynamically in AnyLogic

AnyLogic中是否有通过evaluating/executing个字符串动态检查和设置代理参数的方法?

我的情况:

我尝试使用 executeExpression,但它抛出错误提示 *离散事件执行期间的异常:

根目录:

空*

请看下面截图的函数体

遗憾的是,文档中没有太多关于 executeExpression 的信息。任何帮助将不胜感激。

这行得通吗?请记住,您的道路网络是您可以使用的网络。 roadNetwork 是在您创建第一条道路时自动创建的,该网络包括停车位。

ParkingLot pl=findFirst(roadNetwork.getParkingLots(),x->x.nFree()>0);
agent.parking=pl;

你为什么要执行这个 executeExpression? 你想要它用于一般目的还是解决这个特定问题?

为了制作表达式,您需要执行以下操作:

将你所有的停车位放在一个集合中,对于这个例子,我将把网络本身放在一个变量中

该变量将是 RoadNetwork 类型,并将具有初始值 roadNetwork...让我们称此变量为 rn

然后在表达式上...

CodeValue myCode = new CodeValue(this,"rn.getParkingLots().get(0).nFree()");

这行得通。你可以对 parkingLot0 做同样的事情,把它放在一个名为 pl0 的变量中,类型为 ParkingLot,初始值为 parkingLot0,表达式将如下所示:

  CodeValue myCode = new CodeValue(this,"pl0.nFree()");

这也行