Java 如何让Optaplanner选择锚点作为先前的静止状态

Java 如何让Optaplanner选择锚点作为先前的静止状态,java,optaplanner,Java,Optaplanner,我们正在使用OptaPlanner进行一项优化任务,类似于车辆路径示例问题(请参阅),但要复杂得多,需要更多的领域知识 现在,我们有了一个特定的用例,其中车辆(=前一个静止/下一个客户链的锚)对于规划问题来说是新的,应该很快从例如500个客户中分配一个。 因此,我希望使用如下自定义SwapMoveSelector配置: public class VehicleSelectionFilter implements SelectionFilter<Standstill> {

我们正在使用OptaPlanner进行一项优化任务,类似于车辆路径示例问题(请参阅),但要复杂得多,需要更多的领域知识

现在,我们有了一个特定的用例,其中车辆(=前一个静止/下一个客户链的锚)对于规划问题来说是新的,应该很快从例如500个客户中分配一个。 因此,我希望使用如下自定义SwapMoveSelector配置:

    public class VehicleSelectionFilter implements SelectionFilter<Standstill> {
        @Override
        public boolean accept(ScoreDirector scoreDirector, Standstill selection) {
            return selection instanceof Vehicle;
        }
    }

    EntitySelectorConfig esc = new EntitySelectorConfig(Standstill.class);
    List<java.lang.Class<? extends SelectionFilter>> selectionFilterClassList = new ArrayList<>();

    selectionFilterClassList.add(VehicleSelectionFilter.class);
    esc.setFilterClassList(selectionFilterClassList);

    SwapMoveSelectorConfig anchorSwapMoveSelectorConfig = new SwapMoveSelectorConfig();
    anchorSwapMoveSelectorConfig.setEntitySelectorConfig(new EntitySelectorConfig(Customer.class));
    anchorSwapMoveSelectorConfig.setVariableNameIncludeList(Collections.singletonList("previousStandstill"));
    anchorSwapMoveSelectorConfig.setSecondaryEntitySelectorConfig(esc);
    moveSelectorConfigList.add(anchorSwapMoveSelectorConfig);
公共类车辆选择过滤器实现选择过滤器{
@凌驾
公共布尔接受(ScoreDirector ScoreDirector,停止选择){
返回车辆的选择实例;
}
}
EntitySelectorConfig esc=新的EntitySelectorConfig(Standstill.class);

列表使用“自定义移动”(请参阅文档)您可能也可以这样做,也许自定义MoveIteratorFactory就足够了,并为移动本身重用ChainedSwapMove或ChainedChangeMove。我设法使其工作,但自定义MoveIteratorFactory不够(因为ValueSelector不知何故没有选择正确的锚定值)-我需要一个自定义移动、一个自定义移动迭代器、一个自定义移动选择器(和一个自定义移动选择器配置)以及一个自定义选择筛选器,其中大多数只是为了在自定义移动中传递锚点EntitySelector。然而,我认为有一种更简单/更直接的方法。由于现实世界中的用例,我也会将此作为一个特性请求推荐。要将此作为一个特性推荐,请提供用例描述和一些代码来说明问题。请对其进行总结并使其具体化。是的,每个规划实体都知道其定位点,但我需要获取未分配nextCustomer的定位点,因此我无法使用通过CustomerEntitySelector功能请求创建的客户的定位点阴影变量: