问题标签 [drools-planner]

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 回答
206 浏览

optaplanner - Optaplanner 采取最快的路径

  • 我们如何优化 Optaplanner 以选择最快的路线?请参阅下图中突出显示的点。它正在走很长的路。

优化路线

注:车辆无需返厂。我认为我不能使用 CVRPTW,因为arrivalAfterDueTimeAtDepot 是一个内置的硬约束(此外我没有任何时间限制)。

  • 我们如何编写一个约束来选择容量较小的车辆?
    例如,一位客户只需要 3 件商品,而我们有两辆容量为 4 和 9 的车辆。似乎 Optaplanner 默认从输入顺序中选择第一辆车。
0 投票
1 回答
664 浏览

drools - Optaplanner:扩展 vrp 示例以处理多行程情况

在我的公司,我们目前正在使用 optaplanner 解决车辆路线问题并取得了很好的效果,我们构建了一个 Web 应用程序来管理车辆、客户、位置、站点并显示解决方案的图形表示(包括在地图中显示位置) . 我们将求解器包装在一个带有 rest 接口的 spring java 应用程序中,以接收请求并解决问题。我们正在使用谷歌地图来获取距离时间数据。现在我们需要实现multirip ....

为了解决多行程部分,我采用了这种方法:

1.- 我在 Vehicle 类中添加了 readyTime、endOfTrip 和 dueTime 成员

2.- 我创建了一个规则来防止在车辆后到达客户->dueTime

3.- 我修改了 ArrivalTimeUpdateListener 以在计算车辆的离开时间时考虑车辆->就绪时间(使用 Math.max(depot->readyTime, vehicle->readyTime)

4.-此时我开始使用车辆类,就好像它是车辆旅行而不是车辆(我仍然没有更改名称,但这就是想法)

5.-我在vehicle中创建了一个成员nextVehicle来代表下一次旅行

6.- 出于测试目的,我手动链接两辆车(或车辆行程),然后将其发送到求解器->求解

7.- 在 ArrivalTimeUpdatingVariableListener 类中,我扩展了更新到达时间的方法,以考虑更新 nextVehicle->readyTime 以及因此属于下一次旅行的客户的到达时间(当有超过两次旅行时,依此类推)

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

  • customer.getVehice() 方法并不总是返回一个值(与空值不同),它似乎在 previousStandstill 更改触发侦听器“updateArrivalTime”方法后的某个时间得到更新。
    • 在施工过程中,当客户被分配给车辆时,customer.getVehice() 方法返回 null(它来自“未分配”)
    • 在构造过程中,当客户“被释放”时,customer.getVehice() 方法返回“先前的车辆”
    • 在本地搜索中,当客户被分配给车辆时,customer.getVehice() 方法返回“先前车辆”(原始车辆)
    • 在本地搜索中,当客户返回原始车辆时,customer.getVehice() 方法返回“先前分配的车辆”

对此有什么想法吗?我是否做出了正确的假设?(因为最初我认为 customer.getVehicle() 是“实际”车辆并且解决方案完全错误......)

  • 触发previousStandstill更改的顺序有点难以理解(对我来说)。我的意思是当移动客户或在车辆之间交换他们时......有什么想法或提示是为了找到信息?

  • 当求解器采取行动时,我可以从“模型的先前状态”中访问一些变量吗?因为我认为如果我继续使用这种方法(更新作为下一个车辆的车辆->endOfTrip->例如,当客户是链上最后一个时的就绪时间)

最后......我在概念上做错了什么吗?

任何评论将不胜感激(对不起我的语法,我是西班牙语母语人士)

0 投票
0 回答
85 浏览

drools - 如何使用drools 6.3.0自定义引导决策表以添加新窗口

我是 drools 6.3.0 的新手,根据我们的项目要求,我需要自定义引导决策表。我想在那里添加一个新窗口,可以从文件中导入元素,并且我想将这些元素拖放到决策表单元格上。如果有人可以帮助我,是否可以使用 Drools 6.3.0。基本上我想根据我们的要求定制引导决策表。但不确定这是否可能

0 投票
0 回答
27 浏览

drools - 我无法在 drools 6.3.0 中使用 XLS 文件

我创建了一个 XLSX 文件,并上传了它,但我看不到 xlsx 转换的决策表。

在此处输入图像描述

在此处输入图像描述

我也上传了 xlsx 文件。但无法看到转换后的表格。谁能建议我在这里缺少什么。

0 投票
1 回答
755 浏览

drools - 退出执行 Drools 决策表中的剩余规则

我们有一个场景要在决策表中实现,如果某个规则成功执行了规则的操作部分,则退出执行剩余的规则。假设我有 50 条规则,而第 5 条规则说保险索赔无效,那么我们将索赔设置为对对象无效,那么就不需要执行剩余的规则。这怎么可能实现。请建议

0 投票
1 回答
388 浏览

optaplanner - Optaplanner VRP 与 DropOffs 之前的皮卡

我正在使用 Optaplanner 解决以下具有许多要求的复杂 vrp 问题。除了以下两个方面,我能够处理其中的大部分。

  1. 仅在 DropOffs 前取件
  2. 在接送客户的路上强制执行特定路径。

目标是吸引一群前往靠近的目的地并将他们放在同一辆车中的客户。

提前致谢!感谢您的帮助!

该问题与示例 VRP TimeWindow 示例非常相似,但有以下更改。

  • 客户将在固定地点(在电路中)被接走
  • 每个接送客户都有一个下车目的地(
    赛道外)
  • 车辆不会前往下车处,然后再次返回取货处。(一旦车辆离开赛道,它所做的就是在设定的位置下客)
  • 在电路中移动的车辆必须在特定路径上移动(想象一条单向街道)

计划使用道路距离以及每个皮卡之间的分数是已知的。Pickup -> Drop-Off 未知(计划使用 Air)。

我很难强制执行,在离开赛道让客户下车后,车辆可能不会回来接更多的客户,并且在车辆可以在赛道上行驶的固定路径上进行这项工作。

我的主要想法是执行以下操作。

  • 为客户添加了 TYPE 属性以区分取货和客户
  • 向客户类添加了一个变量侦听器,该侦听器跟踪当前车辆到达时的所有 DropOffIds,以便只有在有乘客前往该地点时才会转到 dropOffLocation。当车辆到达 dropOff 时,它会从列表中删除该项目。(本质上用作堆栈)。
  • 从理论上讲,问题在于,如果客户位置相对较近,这不是从一辆汽车停下来接一个客户,然后再接另一个客户。
  • 还很难执行车辆必须在电路中采用的固定路线,计划使用成本矩阵来使用软约束来强制执行路线隐含性(车辆不会倒退或跳过一个点,因为成本太高),但没有按应有的方式工作。
0 投票
1 回答
898 浏览

java - 如何在drools 5.5.0中缩短决策表的条件和操作

我正在将对象“ABC”插入知识会话。该对象包含一个 HashMap,该 HashMap 包含“Person”类型的对象列表,该“Person”包含 HashMap 以保存人员数据,例如姓名、年龄、性别等。现在我必须在 CONDITION 中读取此人以检查年龄.

ABC:ABC()

条件
abc.getUserMap().get("personList").getListOfPeople().getPeople().get("age")==$param

ACTION “对父对象或人员对象的操作”

所以在这里我想将此条件代码减少到最低限度。例如 条件- xyz.getPeople().get("age")==$param

行动- xyz.getPeople().set($param) value = "Eligible"

0 投票
1 回答
177 浏览

drools - Drools 规则运算符匹配在 Optaplanner 6.2Fiinal 中不起作用

我正在使用 Optaplanner 6.2Final 版本,除了匹配运算符外,一切正常。为了解释更多,这是我的规则。

以下是抛出的异常:

注意:如果我删除了 $cheese. 在type前面声明,规则没有问题。这工作正常:

任何建议,将不胜感激。

更新: 事实证明,在我检查完所有版本后,以下仅在 drools 核心版本 6.2.0.Final 和 6.3.0.Final 上引发异常。它适用于其余版本。

0 投票
1 回答
1027 浏览

java - Optaplanner - benchmarkConfigResource 在类加载器中不作为类路径资源存在

我是OptaPlanner的新手,我专注于基准测试。我开始在Eclipse中使用基准测试。我遵循了文档(http://docs.jboss.org/optaplanner/release/6.4.0.Final/optaplanner-docs/html_single/index.html#buildAndRunAPlannerBenchmark),但是在尝试运行时,出现了这个错误

也许我在 Java 中做错了什么(我需要查看它),所以这是我的代码

信息:我已将文件nurserRosteringBenchmarkConfig.xml 放在同一个ClasseJava的包(prova)中。

谢谢你的帮助。

0 投票
1 回答
268 浏览

apache-camel - Drools 骆驼服务器

目前我们在Drools Camel Server 5.5.0;我们想升级到新版本。当我查看 Drools 下载页面时,显示6.4是最新的,并且没有Drools Camel 服务器构建。我发现为KIE Execution Server提供的描述与drools Camel Server功能相似。Drools 服务器是否重命名为KIE Execution Server