首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个仓库、作业类型和目的地的路由优化

具有多个仓库、作业类型和目的地的路由优化
EN

Stack Overflow用户
提问于 2014-11-25 12:50:19
回答 1查看 804关注 0票数 2

我是新的路由优化,并将感谢您的帮助解决以下业务需求使用jsprit。我从Stefan Schr der那里得到了一些反馈,他帮助我学习了jsprit的一些基础知识。我会先解释业务要求,然后再问几个问题。

目标是安排一个月内需要完成的维护工作列表。需要为整个月准备一份每日日程安排。这里的目标是每天完成最大数量的工作。

  • 在一个地区,每个仓库有4个仓库。
  • 每个地区大约有70个仓库,总共有300个仓库。
  • 每个仓库与该地区仓库之间的距离是已知的。
  • 每个地区共有3-4辆不同类型的车辆,共12辆。
  • 区域内的车辆只能为该地区内的仓库服务。
  • 区域内的车辆有相同的起点,而起点恰好是终点。
  • 车辆没有任何容量、皮卡或送货要求。
  • 车辆只用于从事维修工作的运输工人。
  • 每辆车的平均速度是已知的。
  • 大约有80种维修作业类型。
  • 每种类型的作业都需要已知的几分钟时间。
  • 维护工作不必在特定时间开始。
  • 每月约有200项维修工作需要执行。
  • 这些工作可能在任何仓库
  • 在同一天或不同的一天,一个以上的工作可能发生在同一个仓库。
  • 一天有三个八小时的轮班。上午六时至下午二时,下午二时至十时及晚上十时至六时
  • 一辆车会在换班开始时离开仓库,并在八小时内参观许多仓库。
  • 车辆必须在执行作业时在仓库等候,然后才能搬进下一个仓库或返回仓库仓库。

我的基本理解是,维护任务可以定义为jsprit中的服务,并且可以为每个车辆设置启动/返回时间。此外,还可以使用成本矩阵来增加车辆与仓库之间关系的时间和距离。我要问的问题是:

  1. 每个维护任务都需要定义为一个服务,因此将有200个服务对象传递给VRP解决程序,对吗?
  2. VehicleTypeImpl有addCapacityDimension()、setCostPerDistance()和setCostPerTime()方法。这些究竟是什么?他们如何应用上述情况?
  3. Service.Builder有addSizeDimension()方法。是干什么的呢?
  4. costMatrixBuilder有添加TransportDistance和TransportTime的方法。这些方法使用哪些单元,我如何使用它们?
  5. 对于每个仓库,需要为每个setStartLocationCoordinate()方法定义一个坐标并将其传递给VehicleImpl ()方法。是这样的吗?
  6. vehicleBuilder有setLatestArrival(双maxDuration);这里使用的是哪个单元?

我非常感谢在解决上述案件方面提供任何帮助。

谢谢,亚当

EDIT1:

几个问题

答: setEarliestStart()和setLatestArrival()方法接受双值,如何将最早的出发日期和最近到达日期指定为这些方法的实际日期?例如,开始时间是2014年11月28日下午2点,结束时间是同一天的晚上10点。

有什么方法可以以分钟为单位指定服务时间吗?

C. VehicleTypeImpl.Builder.setMaxVelocity(double inMeterPerSeconds)方法期望最大速度,有办法指定车辆的平均速度吗?

所有车辆都必须在三班制下工作,这是否意味着我必须给同一辆车下三次定义,每班一班,有不同的最早出发时间和最近到达时间?

由于作业可以在月份内的任何时候执行,是否会将每个作业的时间窗口作为开始和月底传递给Service.Builder.setTimeWindow()方法?

EN

回答 1

Stack Overflow用户

发布于 2014-11-26 12:58:00

( ad1)正确

ad2)如果容量不起作用,则不需要addCapacityDimension(..)。如果是这样的话,您可以使用此方法定义任意数量的容量维度,例如重量、体积、托盘数量(然后是三个维度)。与.setCostPerDistance(..)你设定--顾名思义--单位距离的成本(例如1欧元/公里)。因此,使用.setCostPerTime(..)你设定每个时间单位的成本,例如20欧元/小时。因此,如果你的车辆/司机在1小时内行驶100公里,它将花费100公里*1欧元/公里+20欧元/小时*1小时。

ad3)服务可能会消耗车辆的容量。一项服务可指在客户/服务地点接货。它可能有一定的体积,重量,它可以被加载到一个特定的不。托盘的。这就是用.addCapacityDimension(..)定义的

ad4)定义单元。当您设置成本参数时,应该是同一个单元。

( ad5)正确。但你不一定需要坐标。您要么需要一个locationId,要么需要一个坐标,但是可以同时设置两者。当将时间和距离关系添加到locationId时,costMatrix应该是相同的。

( ad6)再一次,你决定这个单位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27127248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档