optaplanner:为什么未配置entityClass(空),并且因为entityClassSet中存在多个?

问题描述 投票:0回答:1

我正在用optaplanner进行生产进度计划,它具有两个计划实体Task和PDItem,如下所示:

Hi Optaplanner小组:我正在使用optaplanner进行生产计划程序,它具有两个计划实体,Task和PDItem,如下所示:

@PlanningEntity(difficultyComparatorClass = TaskDifficultyComparator.class)
 public class Task {


  private Integer waitting_time;   //planning variable


  @PlanningVariable(valueRangeProviderRefs = {"wtRange"})   
      public Integer getWaitting_time() {

                return waitting_time;
           }


   @ValueRangeProvider(id = "wtRange")
      public CountableValueRange<Integer> WaitTimeRange_v2() {
         return ValueRangeFactory.createIntValueRange(this.searchRangeDown,this.searchRange+1);

            }




      @PlanningEntity(difficultyComparatorClass = TaskDifficultyComparator.class)
      public class PDItem {

       private DyeMachineType machine_type; //planning variable


      @PlanningVariable(valueRangeProviderRefs = {"macRange"})  
        public DyeMachineType getMachine_type() {
         return machine_type;
        }


     @ValueRangeProvider(id = "macRange")
       public ArrayList<DyeMachineType> getDyemachinetype_list() {
            return this.dyemachinetype_list;
          }

但是当我启动程序时,它显示如下:

线程“主”中的异常java.lang.IllegalArgumentException:该配置(QueuedEntityPlacerConfig(null,null))没有配置entityClass(null),并且因为在entityClassSet中有多个([class Planning_v3.Domain.Task,Planning_v3类.Domain.PDItem]),则无法自动推断。在org.optaplanner.core.config.AbstractConfig.deduceEntityDescriptor(AbstractConfig.java:86)在org.optaplanner.core.config.constructionheuristic.placer.QueuedEntityPlacerConfig.buildEntitySelectorConfig(QueuedEntityPlacerConfig.java:144)在org.optaplanner.core.config.constructionheuristic.placer.QueuedEntityPlacerConfig.buildEntityPlacer(QueuedEntityPlacerConfig.java:107)在org.optaplanner.core.config.constructionheuristic.placer.QueuedEntityPlacerConfig.buildEntityPlacer(QueuedEntityPlacerConfig.java:43)在org.optaplanner.core.config.constructionheuristic.ConstructionHeuristicPhaseConfig.buildPhase(ConstructionHeuristicPhaseConfig.java:166)处在org.optaplanner.core.config.constructionheuristic.ConstructionHeuristicPhaseConfig.buildPhase(ConstructionHeuristicPhaseConfig.java:51)处在org.optaplanner.core.config.solver.SolverConfig.buildPhaseList(SolverConfig.java:367)在org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:270)在org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61)在Planning_v3.APP.PlanningAPP3.main(PlanningAPP3.java:47)

请帮助您!非常感谢!

请帮助您!非常感谢!

optaplanner
1个回答
0
投票

您当前有2个带有@PlanningEntity批注的类,它们也至少具有一个真正的@PlanningVariable(!=阴影变量)。因此,您有2个真正的计划实体类(阴影实体不计算在内)。

[非常罕见。在大多数情况下,如果您按照this section in the docs的准则设计好的模型,则最终不会获得2个真正的计划实体类,并且省去了很多麻烦。] >

话虽这么说,但在某些情况下确实有意义。 (乍看之下,您的情况似乎不是其中一种,请先阅读该指南):

  • 然后某些用户仍然会通过多阶段计划避免使用它-但这通常更多是因为公司的结构方式(请参阅康韦定律)并从一个简单的项目开始。
  • 但是,如果您确实有2个真正的计划实体,那对OptaPlanner来说很好。但是,算法需要进行功率调整,例如explained in this chapter
© www.soinside.com 2019 - 2024. All rights reserved.