Выберите из ProblemFactCollectionProperty и PlanningEntityCollectionProperty в ShadowVariableListener, как в ContraintProvider

#optaplanner

#optaplanner

Вопрос:

Для обновления моей теневой переменной я должен учитывать некоторые ограничения, которые я могу получить от объектов, сохраненных в ProblemFactCollectionProperty / PlanningEntityCollectionProperty .

Можно ли выбрать из ProblemFactCollectionProperty и PlanningEntityCollectionProperty внутри ShadowVariableListener, как это можно сделать с помощью ContraintProvider? Или я должен добавить указатель, указывающий на эти коллекции, к каждому объекту, у которого есть этот прослушиватель теневой переменной, чтобы слушатель мог получить доступ к ProblemFactCollectionProperty / PlanningEntityCollectionProperty?

Ответ №1:

У всех методов VariableListener есть ScoreDirector параметр, который вы можете использовать scoreDirector.getWorkingSolution() для получения рабочего решения.

Не кэшируйте этот экземпляр решения или его экземпляры списка сущностей в VariableListener, поскольку клонирование решения может повлиять на то, какой экземпляр является реальным.