问题标签 [pickup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
routes - 无法理解取件和交付示例代码的输出
我已经从以下链接运行了取货和交付的示例代码 https://developers.google.com/optimization/routing/pickup_delivery#define_pickup_and_delivery_requests
我已将输入修改为 data['pickups_deliveries'] = [ [1, 6] ] data['num_vehicles'] = 4
我希望只有一辆车用于从位置 1 拣货并运送到位置 6。但是,当我运行上面的示例代码时,我看到以下输出
0号车路线:0 -> 7 -> 3 -> 4 -> 5 -> 0 路线距离:1620m
车辆1路线:0 -> 12 -> 11 -> 15 -> 13 -> 0 路线距离:1552m
车辆2路线:0 -> 1 -> 2 -> 6 -> 8 -> 0 路线距离:2008m
3号车路线:0 -> 9 -> 14 -> 16 -> 10 -> 0 路线距离:1552m
所有路线总距离:6732m
我看到车辆 2 从位置 1 取货并交付到位置 6。那么为什么车辆 2 要经过位置 2。为什么输出中有其他车辆 (0,1,3) 的路线?我希望只有一辆车可以去拣货然后交货?
请帮助我理解这个输出。
python - CVRP 中的旅行时间约束值与取货和交付
我是学习 python 和使用 or-tools 为我的研究任务编写代码的新手。这是考虑到个人旅行时间价值(VOTT)的载货车辆路线问题。VOTT 的约束是,VOTT 较高的乘客将被较晚上车和较早下车。同样,VOTT 较低的乘客将被提早上车,稍后下车。之前我们做了这样的VOTT约束:
这里 2 代表高,1 代表低 VOTT。
和数据看起来像:
这里 1-16 代表节点。
我想编辑它,让每个乘客都有不同的 VOTT,而不是像这种二进制场景。在这方面的任何指导和帮助将不胜感激。
pickup - 如何知道容器中的代理量(拾取元素)
我的目的是模拟人们乘坐地铁通勤的过程。我在流程建模库中使用了拾取元素。地铁(集装箱)到达接送区,接载乘客并在下一站下车。
现在我想知道地铁(集装箱)从一个站到另一个站的乘客数量,目的是观察地铁部分线路的客流。如何做到这一点?
laravel - 使用 Laravel 基于商店时间表的订单取货系统
我想创建一个订单提取系统。每个客户只能选择可用的时间段。卖方说明他可以下订单的日期和/或时间。这可以是一整天(周一上午 8 点到晚上 8 点)或按时间段。如果他平均选择 1h30 的准备时间,我应该显示 8:00、9:30、11:00。而这一切都基于数据库中已经记录的开盘和关盘时间。我使用 Laravel,我不喜欢任何代码,而是想要遵循逻辑的想法,因为我迷路了......谢谢你!
woocommerce - 必须单独购买特定的 WooCommerce 商品
我有多种产品无法发货。我还有其他可以发货的产品。
我想强制将特定的非发货(仅限本地取货)产品与发货的产品分开购买,这样客户就不能混合产品并期望它们全部发货。
我目前正在使用此处找到的解决方案:https ://stackoverflow.com/a/67115522/17318373
问题是这种解决方案只适用于一种产品。我有多种产品需要此应用,但我不擅长编写代码。
routes - 使用 or-tools 来组合取货和送货、多次旅行和容量限制
我搜索了许多类似的问题,但找不到适合我情况的解决方案。如果你们中的任何人能给我一些建议,我将不胜感激。
这是我的情况
车辆在仓库装载一些新机器,然后访问多个位置。当车辆向每个节点交付新机器时,它们还会从每个节点收集损坏的机器。
同时,车辆有容量限制。
此外,我需要复制仓库以允许多次旅行:车辆需要返回仓库卸载损坏的机器并装载新机器并再次行驶,直到所有交付和取货都完成。
主要思想类似于这个例子:https ://github.com/google/or-tools/blob/master/ortools/constraint_solver/samples/cvrp_reload.py ,但现在我不考虑时间限制。
我做了什么
主要思想是:
- 取消注释时间窗口约束。
- 使用交付维度来跟踪新机器的交付
- 使用拾取维度来跟踪损坏机器的拾取情况
- 在每个节点添加一个约束,CumulVar(pickups) + CumulVar(deliveries) <= capacity
请求帮忙
示例任务是这样的:
问题是:
如果我将车辆容量设置为10,则问题可以解决。但是当我设置为 7 时,“找不到解决方案”!
但显然,车辆至少可以行驶 4 次才能完成所有工作:
第1轮:在仓库加载5台新机器,到节点1,卸载它们,然后捡起4台坏机器回到仓库
回合2:在仓库加载5台新机器,到节点2,卸载它们,然后捡起6台坏机器回到仓库
回合3:在仓库加载2台新机器,到节点3,卸载它们,然后捡起7台坏机器回到仓库
第4轮:在仓库加载3台新机器,到节点4,卸载它们,然后拿起3台坏机器回到仓库
我可以理解为什么求解器没有找到这个解决方案。因为每次车辆离开重复的站点节点时,交付维度都会重置为_capacity 。当_capacity为 7 时,车辆可以满足节点 1 和节点 4 的需求。(节点 1 卸载 5 台新机器,加载 4 台坏机。节点 4 卸载 3 台坏机,加载 3 台新机器。)
但在节点 2 和节点 3,取货/送货是 +6/-5 和 +7/-2。当车辆离开重复站点节点时,其容量为 7,节点 2 和节点 3 都将打破容量约束。(+6-5>0, +7-2>0)
所以这个问题的根本原因是:重复的depot节点不应该将deliveries维度值设置为一个固定值(_capacity),而是一个介于[0,_capacity]之间的值。
但是 max_slack 是一个正数,我不知道如何使交付维度的值介于 [0, _capacity] 之间。
有人可以帮我吗?太感谢了。
下面是我的代码。
python - CVRPSPD(同时提货和交货的容量车辆路线问题)
我真的需要帮助解决这个问题。
我试图解决的问题的设置如下:
有一个车站,所有车辆都从这里派出。车辆在站点装载了许多已满的垃圾箱。车辆从仓库行驶到站点,在那里他们放下装满的垃圾箱并捡起空垃圾箱。车辆继续访问站点,直到它们的容量用站点的空垃圾箱饱和。一旦装满空垃圾箱,车辆就会返回仓库,放下空垃圾箱,然后拿起装满的垃圾箱。重复此过程,直到所有站点都满足了他们对空箱的取货和满箱的下车的需求,并且车辆在必要时完成了多次旅行。目标应该是最大限度地减少满足所有站点需求所需的总时间。
我已经开始修改这个示例cvrp_reload,但我正在努力解决这两个维度的组合:空箱的取货和满箱的交付。
我的代码的主要思想:
- 使用维度来跟踪空垃圾箱的拾取情况。
- 使用另一个维度来跟踪满箱的交付情况。
- 车辆上空箱和满箱的累计总和 <= 车辆容量
- 复制仓库,以便车辆可以重新访问仓库以卸载空箱并在必要时重新装载满箱。
这里的问题是:
- 我举了一个简单的例子,取货和送货的需求是:[0,4,6,2,3]和[0,-5,-5,-2,-3],车辆容量是6(我用这里只有一辆车)。我复制了 2 个仓库。
当我将容量设置为 6 时,求解器丢弃了节点 4(拾取 6,交付 -5)。因为当它重新访问仓库时,它总是加载最大容量为 6。结果:
这显然不是最优解,因为很明显,车辆可以先满载 5 个箱子离开,然后立即访问节点 4,然后访问节点 3、5、6。为什么节点 4 被丢弃?
- 当我将容量设置为 10 时,结果是:
注意最后一步,车辆返回仓库时,Deliveries(5) 和 Pickups(6) 的总和为 11,大于 10!鉴于我添加了以下约束,为什么会出现这样的结果?