Optaplanner 通过规划解决方案传递变量
Optaplanner passing a variable through planning solution
我有一个计划实体请求和一个计划变量作为出租车。
我想将日期(特定日期)传递给 drools 文件以分配出租车。
我尝试将日期添加到规划解决方案,但规则总是在我捕获日期的地方失败。
规划解决方案
@PlanningSolution
public class NRequest extends AbstractPersistable implements Solution<HardMediumSoftScore> {
private Date date;
private List<Cabs> list_cabs;
@PlanningEntityCollectionProperty
private List<Requests> list_req;
.....
.....
}
Drools 文件
规则"Check overlap Shift1"
when
$date:Date()
then
scoreHolder.addHardConstraintMatch(kcontext, 3);
scoreHolder.addSoftConstraintMatch(kcontext, 2);
end
我建议使用 NurseRosteringParametrization 方法。
FooSolution class 有一个 FooParameterization class,它包含日期或计划 window 开始日期或特定分数权重等内容。然后简单地匹配 FooParameterization在你的流口水规则中(你知道只有 1 个实例)就是这样。确保 FooParameterization 是 getProblemFacts() 或 @ProblemFactProperty
的一部分
我有一个计划实体请求和一个计划变量作为出租车。
我想将日期(特定日期)传递给 drools 文件以分配出租车。
我尝试将日期添加到规划解决方案,但规则总是在我捕获日期的地方失败。
规划解决方案
@PlanningSolution
public class NRequest extends AbstractPersistable implements Solution<HardMediumSoftScore> {
private Date date;
private List<Cabs> list_cabs;
@PlanningEntityCollectionProperty
private List<Requests> list_req;
.....
.....
}
Drools 文件
规则"Check overlap Shift1"
when
$date:Date()
then
scoreHolder.addHardConstraintMatch(kcontext, 3);
scoreHolder.addSoftConstraintMatch(kcontext, 2);
end
我建议使用 NurseRosteringParametrization 方法。
FooSolution class 有一个 FooParameterization class,它包含日期或计划 window 开始日期或特定分数权重等内容。然后简单地匹配 FooParameterization在你的流口水规则中(你知道只有 1 个实例)就是这样。确保 FooParameterization 是 getProblemFacts() 或 @ProblemFactProperty
的一部分