Это продолжение моего предыдущего вопроса
Я работаю над проблемой планирования, включающей:
- набор объектов планирования, каждая из которых содержит переменная планирования A
- глобальная переменная планирования B (содержится в решении по планированию)
Хотя мой вариант использования не имеет ничего общего с финансами, он очень похож на инвестиции optaplanner пример.
Переменная планирования A представляет распределение некоторых ресурсов между единицами. Существует заданное, статическое c количество ресурсов, которые должны быть выделены, поэтому я реализовал настраиваемые ходы, чтобы гарантировать, что ходы распределения поддерживают игру с нулевой суммой .
Ключевое отличие заключается в том, что A не представляет собой коэффициент распределения, а представляет собой абсолютное значение. Последнее имеет значение при вычислении оценки решения.
Таким образом, абсолютное значение выделяемого бюджета ресурсов является релевантным планирующим объектом. И этап B моего решения по планированию - это исследование того, могут ли вариации общего бюджета ресурсов привести к более выгодным решениям.
Я не хочу менять B, одновременно оптимизируя A, так как я чувствую, что выбор перемещений связан с разными динамиками c (A, B) комбинации нельзя просто сравнить. Размер области поиска также может увеличиваться ...
Мне посоветовали реализовать эту двухэтапную оптимизацию либо как два решателя, каждый из которых взаимодействует с другим, либо как одну «большую» задачу планирования с несколькими объектами.
Я рассматриваю второй подход с настраиваемыми ходами, как рекомендовано. У меня уже есть MoveFactories для создания ходов для переменной планирования A при сохранении игры с нулевой суммой. Я думаю, что мог бы создать другие MoveFactories, которые начинаются с одного движения на B, а затем с последовательности ходов A. Но как мне объединить эти фабрики?
Кажется, unionMoveSelector
будет выбирать ходы из своих дочерних фабрик и смешивать их, чтобы найти решение. Я хочу, чтобы решатель «следовал» за последовательностью ходов, возвращаемой его выбранной в данный момент фабрикой.
Это то, для чего нужен ORIGINAL
selectionOrder
?