Optaplanner: конфигурация динамического завершения - PullRequest
0 голосов
/ 16 января 2019

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

<constructionHeuristic></constructionHeuristic>
<localSearch></localSearch>

И затем перед запуском решателя я установил

TerminationConfig terminationConfig = new TerminationConfig();
terminationConfig.setTerminationCompositionStyle(TerminationCompositionStyle.OR);
terminationConfig.setUnimprovedStepCountLimit(4000);
terminationConfig.setStepCountLimit(10000);

LocalSearchPhaseConfig localSearchPhaseConfig = (LocalSearchPhaseConfig) solverFactory.getSolverConfig().getPhaseConfigList().get(1);
localSearchPhaseConfig.setTerminationConfig(terminationConfig);

Я пытался сохранить значение unimprovedStepCount как 1но это все еще не заканчивается через 30-40 минут.Как я могу определить этот конфиг?

Кроме того, нужно ли явно определять constructionHeuristic и constructionHeuristic в конфигурации xml или они выводятся по умолчанию?

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Проблема была в моем SelectionFilter. Возникла ошибка, из-за которой метод accept из SelectionFilter всегда возвращал значение false, и, следовательно, фаза локального поиска вообще не выполнялась.

После ее разрешения конфигурация динамического завершения работает как есть.

0 голосов
/ 17 января 2019

Разве это не так?

  <localSearch>
    <termination>
      <terminationCompositionStyle>OR</terminationCompositionStyle>
      <unimprovedStepCountLimit>4000</unimprovedStepCountLimit>
      <stepCountLimit>10000</stepCountLimit>
    </termination>
  </localSearch>

Если вы не определите CH, по умолчанию будет FIRST_FIT Я полагаю.

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