Как сливаются унаследованныеSolverBenchmark и solverBenchmark? - PullRequest
0 голосов
/ 14 июля 2020

Я хочу поэкспериментировать с различными конфигурациями локального поиска. Все они используют одно и то же окружение, поэтому я определил unionMoveSelector в унаследованномSolverBenchmark.

<inheritedSolverBenchmark>
    <solver>
        ...
        <localSearch>
            <termination>
                <unimprovedSecondsSpentLimit>30</unimprovedSecondsSpentLimit>
            </termination>
            <unionMoveSelector>
                <changeMoveSelector />
                <swapMoveSelector />
                <pillarChangeMoveSelector>
                    <subPillarType>ALL</subPillarType>
                </pillarChangeMoveSelector>
                <pillarSwapMoveSelector>
                    <subPillarType>ALL</subPillarType>
                </pillarSwapMoveSelector>
            </unionMoveSelector>
        </localSearch>
    </solver>
</inheritedSolverBenchmark>

Затем я создал различные тесты для сравнения:

<solverBenchmark>
    <name>Tabu</name>
    <solver>
        <localSearch>
            <localSearchType>TABU_SEARCH</localSearchType>
        </localSearch>
    </solver>
</solverBenchmark>
<solverBenchmark>
    <name>LateAcceptance</name>
    <solver>
        <localSearch>
            <localSearchType>LATE_ACCEPTANCE</localSearchType>
        </localSearch>
    </solver>
</solverBenchmark>
<solverBenchmark>
    <name>GreatDeluge</name>
    <solver>
        <localSearch>
            <localSearchType>GREAT_DELUGE</localSearchType>
        </localSearch>
    </solver>
</solverBenchmark>
<solverBenchmark>
    <name>Tabu_LA</name>
    <solver>
        <localSearch>
            <acceptor>
                <entityTabuSize>7</entityTabuSize>
                <lateAcceptanceSize>400</lateAcceptanceSize>
            </acceptor>
            <forager>
                <acceptedCountLimit>1000</acceptedCountLimit>
            </forager>
        </localSearch>
    </solver>
</solverBenchmark>

Но теперь кажется, что OptaPlanner выполняет три фазы (строительство + 2-х местный поиск). Я ожидал, что конфигурация localSearch из унаследованныхSolverBenchmark и plannerBenchmark будет объединена. Разве это не так?

1 Ответ

0 голосов
/ 15 июля 2020

Нет, я боюсь, что это не так.

При наследовании SolverConfig phaseList объединяется со списком, а не перезаписывается, а также сливается со списком:

  • Никто хотите перезаписать (так как это просто проигнорирует то, что находится в унаследованной конфигурации), так что это не так.
  • list-merged: в некоторых случаях это нужно. Я много использовал его для определения CH в унаследованной конфигурации и вариантов LS в отдельных тестах.
  • list-element-merged: о чем вы спрашиваете. В некоторых случаях это требуется.

Мы не можем автоматически определить, требуется ли в данном случае объединение списков или объединение элементов списка, поэтому нам пришлось сделать выбор, и мы выбрали объединение списков .

Исправлено: либо объявите это более подробно, либо посмотрите на поддержку шаблона Freemarker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...