当前位置: 首页 > 知识库问答 >
问题:

OptaPlanner:扩展vrp示例以解决多跳情况

汪玮
2023-03-14

7.-在ArrivalTimeUpdatingVariableListener类中,我扩展了更新到达时间的方法,以考虑更新NextVehicle->ReadyTime,并由此更新属于下一次旅行的客户的到达时间(当有两次以上的旅行时,以此类推)

我确信这不是最优雅的解决方案,但我尝试了其他方法(例如在车辆上使用自定义阴影变量),但它不能使它工作。我现在面临的问题是,当ArrivalTimeUpdatingVariableListener被调用时,我无法理解模型的状态,也许有人面临类似的问题,可以帮助我。我发现(试错后)是:

  • customer.getVehice()方法并不总是返回值(不同于null值),它似乎在previousStandstill更改触发侦听器“UpdatearRivalTime”方法后一段时间得到更新。
    • 在构造fase中,当customer得到分配给车辆时,customer.getVehice()方法返回null(它来自“not assigned”)
    • 在构造fase中,当客户“被释放”时,customer.getVehice()方法返回“previous vehicle”
    • 在本地搜索fase中,当客户被分配到车辆时,customer.getVehice()方法返回“previous vehicle”(原始车辆)
    • 在本地搜索fase中,当客户返回原始车辆时,customer.getVehice()方法返回“previous assign vehicle”

    对此有什么想法吗?我的假设正确吗?(因为最初我认为customer.getVehicle()是“实际的”交通工具,解决方案是完全错误的...)

    >

  • 触发前停止变化的顺序(对我来说)有点难以理解。我是说,当移动顾客或在车辆之间交换他们时...任何想法或暗示都是为了找到信息?

    当求解器移动时,我可以从“模型的前一状态”访问一些变量吗?,因为我认为如果继续使用这种方法(例如,当客户是链上的最后一个时,更新Vehicle->EndofTrip(即NextVehicle->ReadyTime))

    最后...我是不是在做完全错误的事情?

    任何评论都将不胜感激(抱歉,我的语法,我是母语为西班牙语的人)

暂时还没有答案

 类似资料:
  • 我需要减少从Optaplanner获取结果的延迟。是否可以跨集群中的多个实例(和/或机器)运行作业?我似乎找不到实现这一目标的任何信息/尝试。

  • 基于这个来自云平衡问题的示例,我尝试将客户从工作解决方案中删除,如下所示: 结果我得到了这个例外: java.lang.IllegalStateException:实体(Customer--6361356485874019865)有一个值为(Customer--902742678799526425)的变量(previousStandstill),该变量有一个值为(null)的sourceVaria

  • 我特别想知道: 扩展名驻留在哪里(文件和命名约定)? 什么是扩展语法? 几个简单的常用示例是什么?

  • 我在处理多车路线问题。我正在尝试Optaplanner,看起来很好,很有前途。 提前谢了。 向你问好,费德里科。

  • 本文向大家介绍Ruby使用C++扩展实例(含C++扩展代码示例),包括了Ruby使用C++扩展实例(含C++扩展代码示例)的使用技巧和注意事项,需要的朋友参考一下 早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。 建立 extconf.rb 建立

  • 我正在为班级(老师,课程,时间)安排项目。我使用optaplanner作为spring-boot应用程序的一部分,测试代码正在正确编译和运行,但结果包含空解决方案,在日志输出中我看到以下消息: RTED:花费的时间(11)、最佳得分(0hard/0soft)、环境模式(REPRODUCIBLE)、移动线程计数(NONE)、随机(带有种子0的JDK)。2021-09-28 22:39:26.619信