#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 уже очень давно находится в режиме обслуживания.