Могу ли я одновременно планировать разные решатели одного и того же проекта? - PullRequest
0 голосов
/ 05 февраля 2020

Это происходит с перебоями, и я не вижу рисунка на нем. Мой сценарий состоит в том, что я программно создаю 7 решателей и после создания каждого решателя отправляю его в планирование.

Иногда бывает так, что только 1 или 2 решателя решают его. Иногда кажется, что 5 решателей даже не получают тело запроса, потому что свойство best-solution имеет значение null, а для решателей, успешно решивших, оно не равно null.

{
  "container-id": "spread-TVF_1.0.0-SNAPSHOT",
  "solver-id": "2020-02-11-solver",
  "solver-config-file": "bookingSolveConf.solver.xml",
  "status": "SOLVING",
  "score": {
    "value": null,
    "scoreClass": null
  },
  "best-solution": null
}

Ошибка, полученная от REST API - это то, что я написал в заголовке. Unknown error updating solver state. И я могу найти следы исключений в журналах cmd: время

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете запустить несколько экземпляров Solver из одного (или разных) SolverFactory одновременно. Многие пользователи делают это, особенно в мультитенантных средах. Фактически, SolverFactory был разработан с учетом этого: SolverFactory является поточно-ориентированным. Обратите внимание, что Solver не является.

Начиная с optaplanner 7.32.0. Наконец, просто используйте SolverManager (глава документации, объединенная для выпуска 7.33, не содержит 7.32):

// all these methods return immediately: the solving happens on a separate thread.
solverManager.solve(problem1, this::saveSolution);
solverManager.solve(problem2, this::saveSolution);
solverManager.solve(problem3, this::saveSolution);

С нашей без quarkus (скоро) или spring-boot (выпущено) интеграция для внедрения этого SolverManager для вас.

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