问题标签 [optaplanner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1553 浏览

drools - Optaplanner Drools 规则错误

我在 Optaplanner 中有以下 Drools 规则:

但是当我运行求解器时,出现以下错误:

我该如何解决这个错误?谢谢。

亲切的问候,

缺口

0 投票
1 回答
594 浏览

drools-planner - 在 drool planner 5.5 中运行示例

我是流口水规划器的新手,并尝试使用 runExamples.bat 运行示例,但是当尝试在 exclipse 中导入该示例并尝试运行以下异常时

0 投票
1 回答
201 浏览

drools-planner - optaplanner 的云平衡示例

我是 drool planner 的新手并尝试运行 cloudbalancing 示例,我复制了代码新的 java 项目(没有 swing)并尝试运行 CloudBalancingApp.java 然后得到以下执行。

我复制了以下课程

  • CloudBalanceApp.java

  • AbstractPersistable.java

  • CloudBalance.java

  • 云计算机.java

  • CloudProcess.java

  • CloudComputerStrengthComparator.java

  • CloudProcessDifficultyComparator.java

当尝试运行 CloudBalancingApp.java 然后得到以下异常

0 投票
1 回答
250 浏览

java - 带有 TimeWindow 的 Optaplanner

我需要帮助解决有关 Time Window 的一个问题 我是 Optaplanner 的初学者 对于对象 VrpTimeWindowedCustomer 我们有一些字段:readyTime、dueTime 和 serviceDuration 在我的问题中,我有 3 次交付 一个到下午 6:15 另一个到下午 6:30 和另一个到下午 6:45 我应该如何填写 readyTime 和 dueTime 字段?

0 投票
2 回答
2391 浏览

java - 带 OptaPlanner 的自行车信使 / TSPPD

亲爱的 OptaPlanner 专家!

我想使用 OptaPlanner(或类似的开源 Java 框架)来优化自行车信使服务的路线。让我们假设 5 个信使必须从某个来源地拿起 30 个信封并将它们交付到某个目的地:

我的五个信使分布在整个城市(所以我没有一个仓库),他们不必回到他们开始的地方:

我会使用以下硬约束:

  • 每个信使最多可携带十五个信封
  • 信封的运输方式应少于直达路线的三倍(因此投递时间不会太长)

还有这些软约束:

  • 优化信使必须循环的方式

我想我必须调整车辆路线示例,但由于我是新手,我不知道从哪里开始。我如何确保在信使尝试投递之前取走信封?如果你能在这里帮助我,那就太好了……

谢谢!

0 投票
1 回答
1026 浏览

drools - 流口水规则中的两个变量的最小值

我想找出流口水规则的 LHS(左侧)中两个变量的最小值。例如:

那么如何找出最小值,是个问题。谢谢。

0 投票
1 回答
442 浏览

java - 如何在 Optaplanner 的课程课程 XML 文件中设置积极的软约束(奖励)

我们在 OptaPlanner 的 XML 文件中为课程问题添加了负软约束,例如

但是如何在 xml 文件中为课程问题添加正软约束?

哪个 XML 标记用于此目的?

正向软约束示例:B老师喜欢在星期一早上上课

0 投票
1 回答
860 浏览

java - OptaPlanner CVRPTW - 持续交付

我是 OptaPlanner 的新手,我正在尝试在我的项目中对其进行配置以解决 CVRPTW 问题。我当前的配置与您在项目源代码中可以找到的示例非常相似,但我的要求不同。我的应用程序收到持续交付请求,其中:

  • 平均服务时间为 5 分钟
  • DueTime - ReadyTime = 10 分钟
  • 地点之间的平均距离(时间)约为 2.5 分钟
  • 只有1个仓库

我的想法是每次收到新请求时都重新运行求解算法。我有必要了解该请求是否可行,或者是否需要及时向前或向后移动。如果您考虑以下问题陈述(位置省略,但与仓库位置相当等距):

考虑到有 2 辆车可用,容量均为 10 辆,我得到以下解决方案(每辆车的时间表):

其中 D 是 Demand,Ar.T 是 Arrival Time,Ap.T 是 Approaching Time(需要离开前一个位置才能准时到达所选位置的时间),Prev.D 是与前一个位置的距离(时间) Next.D 是距以下位置的距离(时间)。

可以看到,客户 4 收货太早了(到货时间是 12:33:56,而准备时间是 13:25:00)。我理解规则arrivalBeforeReadyTime是一个额外的软约束,但我希望计划者建议我使用预留的交付方式向客户4 交付。将规则arrivalBeforeReadyTime设置为额外的硬约束,大多数时候我得到以下异常:

我有两个问题:

  1. 当我得到上述异常时,我是否必须将其视为“未解决的问题”?还是我必须调整我的配置?这是我不应该得到的东西吗?
  2. 我应该如何管理持续交付场景?我是否必须定义不同的大时间窗口来独立解决?但是如何定义这些窗口的边界呢?以及如何管理跨边界计划的交付?(这个解决方案对我来说似乎不正确)

编辑1:

将 OptaPlanner 版本从 6.0.0.CR3 更新到 6.0.0.CR4-Pre1 解决了 NullPointerException。文档对实时规划很清楚,我已经考虑在实时模式下运行我的规划器。但由于在上面的示例中结果并不好,我试图了解我还能做些什么来管理这种情况。我将规则arrivalBeforeReadyTime从软约束切换到硬约束,现在我没有得到NullPointerException,时间安排似乎管理得当,结果如下(例如):

问题陈述:

解决方案

如您所见,第一次交付是不可行的,因为需求的总和超出了车辆的容量。我应该假设它是正确的吗?我的意思是,在这种情况下,一个好的解决方案是使用这两种车辆来管理客户 1、2、3。我使用与示例相同的配置,将 vehicleCapacity 作为硬约束。此外,客户 2 和 1 会在准备好时间之前提供服务,如果我对其使用硬约束也是如此。

0 投票
1 回答
837 浏览

drools - OptaPlanner CVRPTW - 容量问题的解决方案

我有以下 CVRPTW 问题,我正在尝试使用 OptaPlanner 找到一个好的解决方案。时间采用 hh:mm:ss 格式。

我的 DRL 文件是这样。此外,我还定义了相对于在准备时间之前到达的硬约束。我的求解器配置是这样,不同的是终止标签:

这是问题陈述:

我有 2 辆车,可容纳 10 件物品和 1 个仓库。

这是解决方案(客户按车辆分组并按到达时间排序):

(D = 需求,Ar.T = 到达时间,Prev.D = 到前一个位置的距离,Next.D 到下一个位置的距离)

如您所见,车辆 2 必须运输 6+4+5+2+3=20 件物品,这超出了容量。我不明白,如果配置中的容量存在严格限制,为什么求解器会建议我使用这个解决方案。

考虑到我的规则,这不是一个可接受的解决方案。我错过了什么吗?是否存在求解器不提供解决方案的情况?是否考虑“求解器失败”终止?

0 投票
1 回答
1094 浏览

java - OptaPlanner CVRPTW - 优化车辆行程的规划器配置

嗨 OptaPlanner 专家,

我是 OptaPlanner 的新手,我请你帮忙。

据我从这个帖子中了解到,在OptaPlanner的CVRPTW示例(版本CR4)中,实体Vehiclehere)代表车辆的行程(而不是车辆),我想问一下如何管理一个真实的情况,即车辆数量有限,不能重叠行程

在提到的线程中,建议是用 VehicleTrip 替换实体 Vehicle,并创建一个新的 Vehicle 实体。我想新的 Vehicle 有一个 VehicleTrip 对象的列表(因为车辆可以在一天内进行多次旅行 - 例如)。但是如何配置规划器以最小化每辆车的 VehicleTrip 数量?

应该如何修改示例?(我不关心 Swing 部分,只关心模型和规划器的配置 - listeners/DRL/XML)

编辑

我如上所述修改了模型并int getOverlappingTime()在类中创建了方法,该方法返回相同的不同s的VrpTimeWindowedVehicleRoutingSolution重叠时间的数量。然后我创建了以下规则:VehicleTripVehicle

该方法工作正常(经过测试),但分数没有改变(似乎没有触发规则)。请问有谁可以帮助我吗?