首页 > 解决方案 > 本地搜索的附近选择器配置错误

问题描述

我在尝试在本地搜索中实现 NearbySelector 时遇到此错误。本地搜索配置。我尝试了随机和原始选择顺序:

                    <changeMoveSelector>
                        <entitySelector id="entitySelector1"/>
                        <selectionOrder>ORIGINAL</selectionOrder>
                        <valueSelector>
                            <nearbySelection>
                                <originEntitySelector mimicSelectorRef="entitySelector1"/>
                                <nearbyDistanceMeterClass>NearbyGrainMeter</nearbyDistanceMeterClass>
                                <parabolicDistributionSizeMaximum>40</parabolicDistributionSizeMaximum>
                            </nearbySelection>
                        </valueSelector>
                    </changeMoveSelector>

错误:

java.lang.IllegalArgumentException: The nearbySelectorConfig (NearbySelectionConfig()) with randomSelection (false) has distribution parameters.
    at org.optaplanner.core.config.heuristic.selector.common.nearby.NearbySelectionConfig.buildNearbyRandom(NearbySelectionConfig.java:226)
    at org.optaplanner.core.config.heuristic.selector.common.nearby.NearbySelectionConfig.applyNearbyValueSelector(NearbySelectionConfig.java:205)
    at org.optaplanner.core.config.heuristic.selector.value.ValueSelectorConfig.buildValueSelector(ValueSelectorConfig.java:293)
    at org.optaplanner.core.config.heuristic.selector.move.generic.ChangeMoveSelectorConfig.buildBaseMoveSelector(ChangeMoveSelectorConfig.java:84)
    at org.optaplanner.core.config.heuristic.selector.move.MoveSelectorConfig.buildMoveSelector(MoveSelectorConfig.java:252)
    at org.optaplanner.core.config.heuristic.selector.move.MoveSelectorConfig.buildMoveSelector(MoveSelectorConfig.java:241)
    at org.optaplanner.core.config.heuristic.selector.move.composite.UnionMoveSelectorConfig.buildBaseMoveSelector(UnionMoveSelectorConfig.java:77)
    at org.optaplanner.core.config.heuristic.selector.move.MoveSelectorConfig.buildMoveSelector(MoveSelectorConfig.java:252)
    at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildMoveSelector(LocalSearchPhaseConfig.java:289)
    at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildDecider(LocalSearchPhaseConfig.java:155)
    at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildPhase(LocalSearchPhaseConfig.java:141)
    at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildPhase(LocalSearchPhaseConfig.java:54)
    at org.optaplanner.core.config.solver.SolverConfig.buildPhaseList(SolverConfig.java:446)
    at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:349)
    at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61)
    at App.main(App.java:168)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
    at java.lang.Thread.run(Thread.java:748)```

Does anyone understand what is happening?

标签: optaplanner

解决方案


附近的选择需要RANDOM选择顺序,而您的配置ChangeMoveSelector指定<selectionOrder>ORIGINAL</selectionOrder>.

您是否尝试将其更改为:<selectionOrder>RANDOM</selectionOrder>


推荐阅读