首页 > 解决方案 > 什么构成参考计划变量的变化?

问题描述

什么构成了 a 中的“变化”,@PlanningVariableReference这也是 a @PlanningEntity?我的意思是 OptaPlanner 认识到它需要在一个VariableListenerSupport实例中更新通知队列等的意义上的变化?

我一直假设@PlanningEntity计划变量实例(影子或真实)的任何更改都构成了计划变量的更改,因此 OptaPlanner 了解它需要更新影子变量。

然而,我最近在这个假设上遇到了一些麻烦。

例子:

链式时序域模型:Anchor -> Link -> Link -> ...

需要IShadowVariableDataAnchor更改或更改时进行更新previousEntity

以下配置仅在我包含 startTime 时才有效@PlanningVariableReference。我认为它只适用于@PlanningVariableReference(variableName = ANCHOR)

@PlanningEntity
public class Link {
    
    @CustomShadowVariable(variableListenerClass = AVariableListener.class,
                          sources = { @PlanningVariableReference(variableName = ANCHOR),
                                      @PlanningVariableReference(variableName = PREVIOUS),
                                      @PlanningVariableReference(variableName = "startTime", entityClass = Anchor.class) })
    public IShadowVariableData getShadowVariableData() {
        return data;
    }
}

@PlanningEntity
public class Anchor {
    
    @PlanningVariable(valueRangeProviderRefs = { "startTimeVRP" })
    public long getStartTime() {
        return startTime;
    }
}

标签: javaoptaplannerchained

解决方案


推荐阅读