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

在Optaplanner VRPTW中作为一个附加的规划变量开始--一个好主意?

章琛
2023-03-14

祝所有Optaplanner用户新年快乐,

一次旅行的开始时间可能不同,取决于几个条件(即,在旅行开始之前必须生产出要交付的货物;只有有限数量的卡车可以同时在工厂门口提供服务;卡车必须在开始新的旅行之前返回)。方法:同样,旅行的顺序也可能不同,而且卡车旅行之间的时间间隔可能会发生。

我的设计计划是,在Optaplanners VRPTW-example中将TourStartTime注释为第二个规划变量,并将TourStartTime分配为2小时的时间区间(规划范围为1周,旅游通常不在夜间开始;所以提到的时间区间反映了可能的旅游开始的简化日历)。

可用卡车的数量(来自外部物流公司)每周都有变化。关于这一点,我想计划与‘无限’数量的卡车。但是,每个物流公司能够实际分配到交货的卡车数量,应该通过一个约束(即“并行使用的卡车”)来控制。

有谁能告诉我,这是不是一个可行的设计方法,或者我必须在哪里避免陷阱(大约1000送货/周,每天40-80卡车)?

谢谢迈克尔

共有1个答案

苍意智
2023-03-14

第二个规划变量是可能的(根据您的需求,甚至可能是最好的设计),但它会扩大搜索空间,甚至可能需要定制的课程粒度移动来获得更好的结果。

相反,我将首先研究卡车的TourStartTime是否可以成为一个影子变量。例如,给所有卡车一个唯一的优先级编号。然后将卡车的TourStartTime设为影子变量:卡车最快可以离开的时间。如果只有3条车道,4辆卡车想要离开,优先级编号最高的3辆卡车先离开(因此获得原始的TourStartTime,第4辆卡车获得一个后一个)。

 类似资料:
  • 我正在研究来自OptaPlanner的示例用例。我也找不到任何类似的例子,可以在一个规划实体中求解多个规划变量。例如,在护士名册中,一个轮班的每个可能需要多个分配的。在这种情况下,如何利用planner和编写规则呢?

  • 在制定时间表时,你必须遵守法律(硬性要求),该法律规定,作为一名员工,你每七天只能工作一定的时间。它没有说日历周的原因是在创建时间表时为雇主提供一些回旋空间(通常是提前4-16周)。一旦设置了此计划期的开始日期,在您想要进行完整的重新规划之前,该日期无法更改,但您需要通知员工。所以它可以被视为一个变量,直到你接受了时间表,然后它就变成了一个常数。当然,这是每个员工的个人情况。该开始日期将由您的第一

  • 问题内容: 我最近发现了如何通过此方法在python中动态创建变量: 从而创建变量。 我的问题是,这是个好主意吗?还是应该总是提前声明变量? 问题答案: 我认为最好使用字典: 我认为这更像Python。

  • 问题内容: 我是python的新手,我列出了每年的年份和值。我想做的是检查字典中是否已经存在年份,如果存在,则将值附加到特定键的值列表中。 例如,我有一个年份列表,每年都有一个值: 我想做的是用年作为键填充那些字典,而那些数字作为值填充字典。但是,如果我两次列出了2009,那么我想将该第二个值追加到该词典中的值列表中,因此我想: 现在,我有以下内容: 问题答案: 如果我可以重新表述您的问题,您想要

  • 我目前正在使用python shell中的selenium删除Linkedin作业目录 从selenium导入webdriver 从selenium.webdriver.common.keys导入密钥 驱动程序:火狐() 这段代码不起作用,我一直在努力尝试各种方法来解决这个问题。如果我能得到正确的解决方案那就太好了。

  • 问题内容: 我想了解原始和对象引用变量的行为方式不同。我以Kathy Sierra的 OCA / OCP Java SE7中 的以下代码为例: 在上面的代码中,我获得了更改之前和之后的值。 基本变量case的输出为: 但是,在对象引用变量中,一旦更改了的值,我将获得不同的值 参考变量大小写的输出为: 书中提到在两种情况下都复制位模式并放置新副本。如果这是真的,那为什么我们会得到不同的行为呢? 问题