java - 即使可以为空的解决方案在 VRS 中也可以,不允许硬性规则中断
问题描述
我正在使用 OptaPlanner 的车辆路由模块。在网站上的这个例子中,无论是否打破硬约束(容量等),车辆都必须访问所有客户。在代码中是否有可能在技术上实现没有硬性规则甚至更少或没有车辆和客户的分配发生。
解决方案
如果我正确理解了这个问题,那么您说的是过度约束的规划情况,即所有客户的需求总和大于车队的总容量。
您希望 OptaPlanner 仅提出可行的解决方案,即不超过任何车辆的容量(因为这在物理上是不可能的),即使以不拜访所有客户为代价(这在物理上是可能的)。
我相信由于车辆路由域的建模方式,目前这是不可能的。它被称为变量链接。在这种情况下,每个初始化的实体(客户)都是链的一部分。未访问的客户将是不属于任何链的客户,因此是未初始化的实体,但求解器无法取消初始化实体。
作为一种解决方法,您可以使用具有无限容量的幽灵车辆实体并将其用作后备来访问由于容量限制而无法被真实车辆访问的客户。使用这种方法,您必须调整评分功能以激励使用真实车辆而不是幽灵车辆。
推荐阅读
- azure-application-insights - 在 Azure 应用程序洞察应用程序地图中跟踪 python simpleHttp 服务器日志记录信息
- python - 将时区感知字符串转换为日期时间 python,其格式类似于 '2012-11-01T04:16:13.000Z'
- python - raise TypeError('添加的层必须是' TypeError: 添加的层必须是类Layer的实例。找到:tf.Tensor
- javascript - 如何将值从 HTML 传递到 JS
- javascript - 将img中的onClick区域限制为Scale
- javascript - 要从 html 链接打开的 android 应用程序快捷方式
- java - 从 JNI 修改 Java 对象字段
- css - 尝试在卡片上实现展开和折叠动画 - ReactJS
- html - 导航栏文本左对齐
- reactjs - 如果父组件可以,为什么我的子组件无法访问 redux 存储?