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

问题描述:

我有一个计划实体请求和计划变量作为出租车。Optaplanner通过计划解决方案传递变量

我想将Date(特定日期)传递给cab分配的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的文件

规则 “检查重叠SHIFT1”

when  
    $date:Date()  
then 

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

我建议的NurseRosteringParametrization appoach。

FooSolution类有一个FooParameterization类,它包含诸如日期或计划窗口开始日期或特定得分权重等内容。然后在您的drools规则中简单匹配FooParameterization(您知道只有1个实例)就是这样。确保FooParameterization是part getProblemFacts()或@ProblemFactProperty