[英]Optaplanner : Planning entity and Planning variable at the same time?
使用Optaplanner,是否可以将类定义为计划实体和计划变量?
示例:
@PlanningEntity(difficultyComparatorClass = NodeDifficultyComparator.class)
public class Node extends ProcessChain {
// Planning variables: changes during planning, between score calculations.
private List<Node> parents;
private List<Node> childs;
@PlanningVariable(valueRangeProviderRefs = {"nodeRange"})
public List<Node> getParents() {
return parents;
}
@PlanningVariable(valueRangeProviderRefs = {"nodeRange"})
public List<Node> getChilds() {
return childs;
}
public void setParents(List<Node> parents) {
this.parents = parents;
}
public void setChilds(List<Node> childs) {
this.childs = childs;
}
}
尽管TSP和车辆路径示例都使用了chained=true
变量,但它们的规划值也已经是规划实体。 因为chained=true
,所以它意味着没有2个计划实体具有相同的计划变量(并且所有计划实体都直接或间接地连接到锚)。 请参阅文档部分“链式计划变量”。
在你的情况下,我怀疑你不想要链,而是树,有向图或无向图。 无向图(=允许循环的图形)对于构造启发式而言是有问题的,因为开箱即用它们不能构造具有循环的图形。 对于树和有向图:它应该在理论上起作用,但是您可能需要自定义移动(请参阅文档)以使移动有效。 将来,我们希望支持树结构,类似于我们支持链的方式(用于作业车间调度)。
在任何情况下:您当前无法在计划实体List
上拥有@PlanningVariable
。 你需要将许多2个关系变成许多2和1个关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.