Я разрабатываю добавочный решатель для составления списка, два объекта планирования: Назначение и Сотрудник, рабочий имеет коллекцию назначений @InverseRelationShadowVariable. Я заметил странное поведение при использовании FULL_ASSERT.
В начале фазы LS оценивается EmployeeSwapMove.
После этого вызывается прослушиватель, который сначала забирает все назначения из Employee, а затем вставляет все назначения в соответствии с перемещением в теневую коллекцию.
После этого вызывается resetWorkingSolution, но у сотрудника есть назначения перед перемещением.
Optaplanner также регистрирует, что вышеупомянутое перемещение было выбрано, но состояние Employee (коллекция теней) не отражает это.
Конечно, после этого оценка искажается.
Проблема не возникает при использовании FAST_ASSERT.
Может кто-нибудь дать мне подсказку?