Как я могу настроить алгоритм позднего принятия? - PullRequest
1 голос
/ 26 февраля 2020

Я сталкиваюсь с некоторыми проблемами при изменении применяемых алгоритмов: во-первых, кажется, что я не могу изменить конфигурацию алгоритма позднего принятия. Это моя локальная конфигурация поиска, которая хорошо работает, когда я не указываю ни акцептор, ни сборщик:

<localSearch>
    <localSearchType>LATE_ACCEPTANCE</localSearchType>
    <acceptor>
            <lateAcceptanceSize>5000</lateAcceptanceSize>
            <entityTabuRatio>0.1</entityTabuRatio>
            <!--valueTabuSize>10000</valueTabuSize-->
    </acceptor>
    <forager>
        <acceptedCountLimit>1</acceptedCountLimit>
    </forager>
    <termination>
              <minutesSpentLimit>10</minutesSpentLimit>
              <bestScoreLimit>[0/11496/11496]hard/[0]soft</bestScoreLimit>
        </termination>
</localSearch>

Я получаю это сообщение об ошибке как часть вывода

 java.lang.IllegalArgumentException: The localSearchType (... 
java.lang.IllegalArgumentException: The localSearchType (LATE_ACCEPTANCE) must not be configured if the acceptorConfig (AcceptorConfig()) is explicitly configured.
        at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildAcceptor(LocalSearchPhaseConfig.java:182)
        at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildDecider(LocalSearchPhaseConfig.java:132) 
        at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildPhase(LocalSearchPhaseConfig.java:117) 
        at org.optaplanner.core.config.localsearch.LocalSearchPhaseConfig.buildPhase(LocalSearchPhaseConfig.java:54) 
        at org.optaplanner.core.config.solver.SolverConfig.buildPhaseList(SolverConfig.java:364) 
        at org.optaplanner.core.config.solver.SolverConfig.buildSolver(SolverConfig.java:270) 
        at org.optaplanner.core.impl.solver.AbstractSolverFactory.buildSolver(AbstractSolverFactory.java:61) 
        at com.gmv.g2gmps.CBand.App.main(App.java:75) 
        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) 

1 Ответ

1 голос
/ 24 апреля 2020

Наконец, мне сказали, что конфигурация LATE_ACCEPTANCE и lateAcceptanceSize одновременно несовместима. Поэтому я установил размер позднего принятия в качестве единственного параметра (следовательно, позднее принятие в качестве акцептора) вместо того, чтобы записывать его в качестве локального типа поиска.

<localSearch>
    <acceptor>
        <lateAcceptanceSize>5000</lateAcceptanceSize>
        <entityTabuRatio>0.1</entityTabuRatio>
        <!--valueTabuSize>10000</valueTabuSize-->
    </acceptor>
    <forager>
        <acceptedCountLimit>1</acceptedCountLimit>
    </forager>
    <termination>
        <minutesSpentLimit>10</minutesSpentLimit>
        <bestScoreLimit>[0/11496/11496]hard/[0]soft</bestScoreLimit>
    </termination>
</localSearch>
...