问题标签 [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 投票
2 回答
916 浏览

drools-planner - 在 OptaPlanner 中实现自定义元启发式

截至目前,Opta Planner 规划器提供以下支持:

  1. 禁忌搜索。
  2. 模拟退火。

但是,如果我需要使用 Opta Planner 实现任何其他算法,例如遗传算法,那么可以在哪里以及如何使用它。我有遗传算法的代码,但是我不知道如何将它与 Opta 规划器集成。我发现很少有可能的地方。

  1. 在自定义 Score 类中。
  2. 在自定义 Move 类中。
  3. 在自定义 MoveFactory 类中。
  4. 在 XML 配置文件中。

请指导我需要在哪里进行修改。

谢谢

0 投票
1 回答
1508 浏览

graph-theory - OptaPlanner VRP 边缘权重需要使用实际 GPS 数据而不是欧几里得距离

我是 optaplanner 的新手。我正在尝试修改 vrp 示例 [无论是 CVRP 还是 VRPTW] 以支持的不仅仅是欧几里德距离作为节点之间的边权重。我正在使用最新版本的 optaplanner 6.0.0.CR5

0 投票
1 回答
226 浏览

optaplanner - 在轮班计划场景中处理“ProblemFact”属性的变化?

我正在使用 OptaPlanner 计算一组需要在一天内处理的任务的班次(即开始时间、结束时间和必要的资格)。

我使用了一个drools score director,并设置了一些规则来将任务分配给轮班,同时保持如下约束:

  • 永远不要将重叠的任务分配给同一个班次
  • 永远不要将两个任务分配给同一个班次,因为这会导致违反最大班次长度
  • 当没有一组可能的资格与两项任务的必要资格相匹配时,永远不要在同一班次上安排两项任务等。

到目前为止,我得到了相当不错的结果。但是,还剩下一项优化。应该可以有不同长度的轮班(例如 8 小时、6 小时和 4 小时轮班),并且有一个可以认为轮班有效的阈值(例如,如果任务涵盖了 60% 的时间)。因此,与长期无效率的轮班相比,进行更多、更短但富有成效的轮班会更好。

我很难将类似的东西定义为规则。在我看来,问题在于这是一种转变的属性。然而,这种转变是我的计划事实,因此在计算过程中不能改变它的状态。

你知道我该如何解决这个问题吗?

在此先感谢, 问候, Hendrik

0 投票
1 回答
146 浏览

drools - uninitializedEntityFilter 的详细示例

我已将我的计划变量设置为可为空。但是使用这个构造启发式将变量初始化为空值,我认为这是计算最佳解决方案的浪费时间。从文档中,您可以使用 uninitializedEntityFilter 覆盖它。但它没有显示实际的 UninitializedTaskFilter.class。这节课的内容是什么?谢谢!

0 投票
1 回答
1038 浏览

java - OptaPlanner 车辆路线和客户访问之间的关系

我正在使用 OptaPlanner 优化与提供的示例非常相似的车辆路线问题。

我面临以下挑战,并会欣赏一些想法。

一些对客户的访问与其他访问有关系,例如:

  • 一次访问必须与另一次访问同时开始。
  • 一次访问必须在另一次访问结束后 2 小时开始。
  • 一次访问必须分配给分配给另一次访问的同一车辆。

挑战是:如何在移动访问时允许移动访问而不导致分数降低?

每次访问可能在不同的机器上(分配给不同的车辆),因此所有提供的移动选择器很可能会提供仅改变一次访问的移动。由于依赖性,此类移动很可能导致较低的分数,并且永远不会被选中。

相同的开始场景:任何改变一次访问开始时间的动作都会导致较低的分数。相同的车辆场景:任何将一次访问更改为不同车辆的移动都会导致较低的分数。

目前我正在使用禁忌搜索,结果令人满意。迟到可能是答案。

谢谢。

0 投票
1 回答
499 浏览

java - Drools Planner 规则分析

我们正在使用 Drools Planner 5.4.0.Final。我们想要分析我们的 java 应用程序以了解我们是否可以提高性能。有没有办法描述需要评估规则的时间?我们使用了很多 eval(....) 并且我们的“每秒平均计算计数”接近 37。删除所有 eval(...) 我们的“每秒平均计算计数”保持不变。

我们已经对应用程序进行了概要分析,我们看到大部分时间都花在了 doMove ... afterVariableChanged(...) 中。

所以我们怀疑我们的一些规则效率低下,但我们不明白问题出在哪里。

谢谢!

0 投票
1 回答
286 浏览

drools-planner - 我如何在 optaplanner 上实现新算法?

对于我的硕士论文,我想实施 optaplanner “强化学习”并用示例中建模的问题测试我的算法,但我需要一个指南或任何帮助我理解方法的文档。你能帮助我吗?

0 投票
1 回答
272 浏览

optaplanner - 增量分数计算方法

有人可以解释增量分数计算需要实施的方法的目的吗?我了解所有 after... 方法,但为什么要在添加、删除实体或更改变量之前调整分数(beforeEntityAdded、beforeVariableChanged、beforeEntityRemoved)?

0 投票
2 回答
2273 浏览

optaplanner - 使用 OptaPlanner 进行大规模优化 - 具有目标时间窗的 VRPPD

我是交通优化和 OptaPlanner 的新手,但我需要解决一个问题,即大约 1,400 辆汽车需要在特定时间从 9000 个地点取货并运送到 500 个目的地。我的目标是制定一个运输计划,利用一辆车去多个目的地接载,并使用多辆车去目的地。带有 OptaPlanner 的 Bicycle messenger/TSPPD 问题似乎暗示了可以满足我需求的结构。

我是 Java 新手,但对编程并不陌生——我过去曾使用 C、C++ 和 SQL 进行编程。我也看过jsprit,我正在寻找最好的路径。Drools 之所以吸引人,是因为它似乎提供了一种有凝聚力的方式来组织不断变化的约束。我已经从时间/距离矩阵开始——应该很快就会准备好。

非常感谢任何意见、想法或建议!我只想从一个好的方向开始,如果有的话。

0 投票
1 回答
369 浏览

jaxb - 如何使用 XStream 的替代方案(JAXB)来读取 optaplanner 中的求解器配置?

optaplanner 使用 XStream 从 XML 读取求解器配置。为了改用 JAXB,自定义实现 XMLSolverFactory 和 SolverConfig 就足够了吗?