Как мне получить "текущий" scoreirector в optaplanner - и имеет ли это значение?

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

Но я не уверен, как получить директор оценки, который использовался при создании первого решения, и о важности вызова Before/AfterEntityRemoved и Before/AfterVariableChanged в scoredirector при удалении сущностей?

Предположим, что я удалил Автомобиль и все клиенты, которые были ему назначены - и я сам еще не создал ScoreDirector - могу ли я тогда просто игнорировать вызов методов на scoreirector и все еще иметь возможность решить его снова с правильно рассчитанным счетом?

1 ответ

Решение

1) Вы уверены, что вместо удаления сущностей вы можете просто оставить их неназначенными? Если да, то используйте вместо этого слишком ограниченное планирование (см. Документы).

2) Если вы удаляете объекты, прежде чем передать экземпляр решения solve(Solution s) Затем вы можете удалить их, не уведомляя ScoreDirector.

3) Удаление сущностей обычно меняет проблему планирования, то есть планирование в реальном времени (= изменение проблемы во время решения). Так что если вы хотите удалить сущности во время решения, это нужно сделать в addProblemFactChange(), Смотрите документы о том, как получить ScoreDirector там и каковы ваши обязательства по уведомлению.

Другие вопросы по тегам