Не удается возобновить решение с использованием предыдущего наилучшего решения или сериализованного решения

#optaplanner

Вопрос:

Для всех,

Версия optaplanner: 7.48 С этого момента я больше не могу возобновить решение. Процесс заключается в:

     thread 1: solver.solve();
    thread 2: solver.terminateEarly();
    thread 2: solver.solve(solver.getBestSolution());
 

Чем больше времени проходит между решением() и завершением (), тем меньше вероятность, что резюме будет работать нормально.
Когда не работает, симптомы проявляются после завершения эвристики построения, найдено только несколько новых лучших решений, а затем решатель навсегда останавливается, чтобы найти новые лучшие решения, даже если он все еще вычисляет со значительной скоростью процессора.

Проблема аналогична, когда функция solver.getBestSolution() сериализуется и перезагружается позже.

Есть какие-нибудь предложения?

Спасибо.

С уважением.

JLL

Комментарии:

1. Может быть, больше нет лучших решений, которые можно было бы найти? Или еще хуже — он каким-то образом застрял в локальном оптимуме (и алгоритмы недостаточно сильны, чтобы избежать этого). В последнем случае см. раздел «Ловушка очков», другие общие ходы, пользовательские ходы и т. Д. В документах.

Ответ №1:

Исходя из содержания вопроса, название неверно — OptaPlanner возобновляется просто отлично, он просто не может найти лучшего решения. Есть две причины, по которым это может быть так:

  • Лучших решений больше не найти. Чем больше становится ваш набор данных, тем меньше вероятность этого.
  • Есть лучшие доступные решения, но OptaPlanner не может добраться до них, так как застрял в локальной оптимуме. Это распространенная проблема.

Выход из локальных оптимумов обычно достигается комбинацией следующих действий:

  • Устранение ловушек очков из ваших ограничений.
  • Увеличение разнообразия в выборе хода. Ознакомьтесь с доступными универсальными ходами или рассмотрите возможность реализации пользовательского хода для любых сложностей вашей конкретной проблемы.
  • Итеративный локальный поиск. Мы (пока) не поддерживаем это из коробки, но общая идея заключается в том, что в определенный момент вы разрушаете часть своего решения (возможно, неинициализируя его), а затем воссоздаете его (случайным образом или иным образом).

Наконец, я от всего сердца рекомендую вам перейти на OptaPlanner 8. Обновление несложно, и поток 7.x уже очень давно находится в режиме обслуживания.