Optaplanner 通过规划解决方案传递变量

问题描述 投票:0回答:1

我有一个规划实体请求和一个规划变量作为出租车。

我想将日期(特定的一天)传递给 drools 文件以进行出租车分配。

我尝试将日期添加到计划解决方案中,但在我捕获日期的地方规则总是失败。

规划解决方案

@PlanningSolution

public class NRequest extends AbstractPersistable implements Solution<HardMediumSoftScore> {


private Date date;  

private List<Cabs> list_cabs;

@PlanningEntityCollectionProperty
private List<Requests> list_req;
.....
.....
}

流口水文件

规则“检查重叠 Shift1”

when    
    $date:Date()     
then

    scoreHolder.addHardConstraintMatch(kcontext, 3);
    scoreHolder.addSoftConstraintMatch(kcontext, 2);
end
optaplanner planning
1个回答
0
投票

我建议使用 NurseRosteringParametrization appoach。

FooSolution 类有一个 FooParameterization 类,其中包含日期或计划窗口开始日期或特定分数权重等内容。然后只需在您的 drools 规则中匹配 FooParameterization(您知道只有 1 个实例),仅此而已。确保 FooParameterization 是 getProblemFacts() 或 @ProblemFactProperty

的一部分
© www.soinside.com 2019 - 2024. All rights reserved.