Evaluating/executing AnyLogic 中的动态字符串
Evaluating/executing strings dynamically in AnyLogic
AnyLogic中是否有通过evaluating/executing个字符串动态检查和设置代理参数的方法?
我的情况:
- 我有编号从 0 到 200 的停车场,命名为 parkingLot0,parkingLot1,...,parkingLot200(每个停车场容量为 1)。
- 我有一个名为 DetachedTrailer 的代理。
- 我想为到达的 DetachedTrailer 找到一个空的停车位,并将 agent.parking 设置为那个 parkingLot。
- 我不想一个接一个地手动执行此操作,而是希望有一个短循环来解决问题。
我尝试使用 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()");
这也行
AnyLogic中是否有通过evaluating/executing个字符串动态检查和设置代理参数的方法?
我的情况:
- 我有编号从 0 到 200 的停车场,命名为 parkingLot0,parkingLot1,...,parkingLot200(每个停车场容量为 1)。
- 我有一个名为 DetachedTrailer 的代理。
- 我想为到达的 DetachedTrailer 找到一个空的停车位,并将 agent.parking 设置为那个 parkingLot。
- 我不想一个接一个地手动执行此操作,而是希望有一个短循环来解决问题。
我尝试使用 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()");
这也行