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

时间:2016-12-29 05:17:49

标签: solution optaplanner planning

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

我想将日期(特定日期)传递给drools文件以进行cab分配。

我尝试将日期添加到计划解决方案中,但规则始终失败,我抓住了日期。

规划解决方案

@PlanningSolution

public class NRequest extends AbstractPersistable implements Solution<HardMediumSoftScore> {


private Date date;  

private List<Cabs> list_cabs;

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

Drools file

规则“检查重叠Shift1”

when    
    $date:Date()     
then

    scoreHolder.addHardConstraintMatch(kcontext, 3);
    scoreHolder.addSoftConstraintMatch(kcontext, 2);
end

1 个答案:

答案 0 :(得分:0)

我建议使用NurseRosteringParametrization。

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

的一部分