【问题标题】:Anylogic: sort move to agents in collection based on distanceAnylogic:根据距离对集合中的代理进行排序
【发布时间】:2021-10-25 15:01:09
【问题描述】:

在 anylogic 中,我对卡车进行了建模,以运送到多个送货地点。卡车使用代码移动到集合中的第一个位置

moveTo(order.orderLocation.getFirst());

卡车到达第一个位置后,使用代码移除第一个代理:

  order.orderLocation.removeFirst();

该过程迭代直到集合为空(见图)。

我正试图让卡车前往最近的代理商,而不仅仅是收藏中的第一个代理商。但是,我不知道删除它移动到的代理的代码是什么。我还尝试根据距离对列表进行排序,但没有成功。有人知道如何建模吗?

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    第一步,找到最近的目的地,使用这个:

    Order theorder= top(orders,x->distanceTo(x));
    

    第二步...从种群中删除代理

    order.orderLocation.remove(theorder);
    

    你也可以找到它的索引

     int index=order.orderLocation.indexOf(theorder);
    order.orderLocation.remove(index);
    

    如果您对排序更感兴趣,我需要知道 orderLocation 是什么,以便根据距离进行适当的比较器进行排序

    【讨论】:

    • 感谢您的回答。我正在尝试实施它。我应该提供更多关于我如何建模它的信息。变量 order(存储在卡车中)包含一个集合“linkedlist”。在这个链接列表中,几个订单位置存储为“零售商”类型。
    • 不幸的是,x->distanceTo(x) 函数不起作用。是因为收藏的选择吗?
    • 好吧,“它不起作用”并没有给我足够的信息...但是您可以在帮助文档中查看如何使用此顶级功能...您的零售商是您在收藏,我仍然不知道零售商是什么......所以没有多大帮助......
    • 在我的模型中,零售商是放置在包含一些参数的 GIS 地图上的代理商。对不起,我不知道还有什么要说的。希望这个信息。有助于理解我的问题。
    • 好吧,也许你可以做零售商 Retailer=top(retailers,r->distanceTo(r));而不是
    猜你喜欢
    • 2019-02-21
    • 1970-01-01
    • 2021-05-14
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多