Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsprit入门:概念性建议_Jsprit - Fatal编程技术网

jsprit入门:概念性建议

jsprit入门:概念性建议,jsprit,Jsprit,对不起,这不是一个具体的问题。由于我是Jsprit新手,我需要一些关于如何开始解决问题的概念性帮助 我的例子是: 我一开始只有一辆车有开始和结束位置。有几个具有优先权的收货位置,只有一个用于交货的仓库位置。车辆应行驶1天,然后在每天给定开始/结束时间的情况下比另一天休息2天。每天定义开始/结束位置(1和4)。车辆可在第1天(包括装载)返回其末端位置,但在第4天,最后一个位置应为待卸载的车辆段(并空车返回) 我希望根据优先级和车辆2d负载约束拾取尽可能多的项目,如果拾取过多,将忽略它们。车辆每天可

对不起,这不是一个具体的问题。由于我是Jsprit新手,我需要一些关于如何开始解决问题的概念性帮助

我的例子是:

我一开始只有一辆车有开始和结束位置。有几个具有优先权的收货位置,只有一个用于交货的仓库位置。车辆应行驶1天,然后在每天给定开始/结束时间的情况下比另一天休息2天。每天定义开始/结束位置(1和4)。车辆可在第1天(包括装载)返回其末端位置,但在第4天,最后一个位置应为待卸载的车辆段(并空车返回)

我希望根据优先级和车辆2d负载约束拾取尽可能多的项目,如果拾取过多,将忽略它们。车辆每天可多次返回车辆段卸货。在第4天开始之前,我还考虑过改变取货优先级

  • 有什么想法吗
  • 单独定义提货和交货而不是使用装运是否有好处/区别
  • 我想定义2辆车,而不是定义休息时间,但我不想在第一天卸货。我读过这篇文章,可以用2个驱动程序来完成,看了API和驱动程序的设置我都不知道怎么做。 Driver类有一个home属性,但这是一个字符串,只能在车辆上定义中断
  • 在第四天运行解算器之前,我是否应该运行两次解算器并移除第一条路线中已经存在的拾取之后合并结果
  • 如果负载达到85%,如何实现仅限onload的约束

  • 如何实施第4天的最后一个位置在返回终点位置之前应为车辆段的约束(即使我也会每周运行两次解决方案,并删除第一天要完成的所有停止,因为下一个解决方案不再需要这些停止。如果卡车第二天可以在任何地方启动,则第二天需要更新启动位置。否则,如果两天都从仓库启动,则启动位置两天的结束位置相同

    首先,您要定义您的车辆类型和车辆:

    // Vehicle Type
    VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance("Your vehicle type")
        .addCapacityDimension(0, capacity)
        .setMaxVelocity(maxSpeed) // in meters per second
        .setCostPerDistance(value)
        .build();
    
    VehicleImpl vehicle = VehicleImpl.Builder.newInstance(fleet[i])
        .setType(vehicleType)
        .setEarliestStart(start).setLatestArrival(end)
        .setStartLocation(location) // Warehouse location
        .setEndLocation(location) // warehouse location
        .build();
    
    接下来,创建您的作业。服务作业从仓库开始,取货作业可以从门店位置开始,然后送到目标位置。通过此操作,我将定义
    取货
    服务
    作业,然后将它们添加到
    VRP

    // Service Jobs
    Service.Builder.newInstance(instanceName)
        .setName("Unique Name").setLocation(
             new Location.Builder()
             .newInstance().setId("Unique ID")
             .setCoordinate(new Coordinate(x, y))
        )
        .addSizeDimension(0, 1) // accounts for vehicle capacity
        .build();
    
    // Shipment Jobs
    Shipment.Builder.newInstance(instanceName)
        .setName("Unique Name")
        .setPickupLocation(
             new Location.Builder()
             .newInstance().setId("Unique ID")
             .setCoordinate(new Coordinate(x, y))
        )
        .setDeliveryLocation(
             new Location.Builder()
             .newInstance().setId("Unique ID")
             .setCoordinate(new Coordinate(x, y))
        )
        .addSizeDimension(0, 1)
        .build();
    
    // You can add priorities to jobs how you like with .setPriority()
    
    您可以循环查看作业,并根据类型创建任一作业,然后将其添加到
    VRP
    。此外,查看成本矩阵也可以帮助您解决问题。(签出:)

    然后,运行您的解决方案

    干杯