繁体   English   中英

Optaplanner:同时规划实体和规划变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM