【问题标题】:anylogic selectblock on 'true' returns same agent'true' 上的 anylogic selectblock 返回相同的代理
【发布时间】:2022-01-24 07:53:46
【问题描述】:

我正在模拟最后一英里的交付,我想迭代地评估停靠点之间的二氧化碳排放量。第一次路线评估的数量相加,即它正确计算/删除嵌入路线中的每个停靠点。问题是当第一条路线完成时,模型应该考虑嵌入在“toConsumer”中的“订单”类型的新代理中的下一条路线,但事实并非如此。据我所知,在满足选择块中的条件后,订单代理没有更新。但是,我不确定为什么会这样做。当条件满足时,代理会继续到接收器。有谁知道我如何确保代理的更新?

anylogic 模型如下所示:

在源代码块中,我通过以下优化结果创建代理:

int r = 0;
agent.routeVeh = (int) parVehicle.get(r);
agent.route = (List) parRoute.get(r);
agent.routeDep = (int) parDepot.get(r); 
r++;

在我的选择块中:

到消费者块:

【问题讨论】:

  • 那么,routeFinished 块中的False 选项后面有零个代理?
  • 还是返回toConsumer块,但不做下一趟?
  • 嗨 Yashar,第二个。如果为真,则将相同的路由返回到 toConsumer 块。
  • 知道了。您能否添加 toConsumer 块内发生的事情。
  • 我添加了它,-1 是由于与 python 的连接,其中第一个使用者 1 在 java 脚本中是 0。

标签: anylogic vehicle-routing


【解决方案1】:

如果您在 Main 代理中执行此操作,则需要在 Order 代理中定义 routeCountconsumerCount(或者如果您在其中定义了 Vehicle 代理)。因为它们是为每个订单定义的。然后在routeFinished 中,您需要将变量更新为agent.consumerCount++;

【讨论】:

  • 感谢您的回答,它有效。非常感谢!
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 2018-02-22
  • 2015-10-15
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 2020-09-12
  • 2021-10-24
相关资源
最近更新 更多