我正在尝试使用Fisher& amp实现工作车间调度应用程序。汤普森mt10数据集。基本上它包含
我已经实施了一个基于" Taskassigning"的Optaplanner用例。例。我删除了速度和优先级概念,但保留了技能概念,使作业只能在他们能够运行的机器上运行。我介绍了一个"前身"构建作业/步骤之间的依赖关系的概念。
由于计划中存在空白(与Taskassigning示例不同),删除了starttime和endtime,并引入了一个starttime PlanningVariable,由可能的开始时间列表提供。
但是,我在日程表中只有两个不同的开始时间--Optaplanner似乎没有使用我的价值范围提供商。因此,违反了硬约束,因为不保留依赖步骤的顺序。
作业:
private JobType jobType;
private Job predecessor;
private Job successor;
private int indexInJobType;
// Planning variables: changes during planning, between score calculations.
@PlanningVariable(valueRangeProviderRefs = {"machineRange", "jobRange"},
graphType = PlanningVariableGraphType.CHAINED)
private JobOrMachine previousJobOrMachine;
@AnchorShadowVariable(sourceVariableName = "previousJobOrMachine")
private Machine machine;
@PlanningVariable(valueRangeProviderRefs = {"startTimeRange"})
private StartTime startTime=new StartTime(0); // In minutes
我的PlanningSolution有一个范围提供者:
@ValueRangeProvider(id = "startTimeRange")
@ProblemFactCollectionProperty
public List<StartTime> getStartTimeList() {
return startTimeList;
}
我对Optaplanner相对较新,可能会遗漏一些非常基本的东西。即使在广泛阅读了文档和示例之后,我仍在努力确定我做错了什么。
有什么想法吗?
答案 0 :(得分:1)
我发现与计划变量相关的硬约束规则存在问题。这个问题不再有效。感谢。