Реализация алгоритма оптимизации планирования по иерархической проблеме - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю над проблемой планирования, включающей:

  1. набор объектов планирования, каждый из которых содержит переменную планирования A
  2. глобальная переменная планирования B (содержится в решении планирования)

Поскольку я начинающий с Optaplanner и планирую оптимизацию в целом, я начал с более простой проблемы с версией, сосредоточившись на оптимизации А с помощью модели B как факта планирования.

Теперь, когда У меня есть программа, успешно оптимизирующая A с учетом B. Я хочу реализовать новый решатель, оптимизирующий как A, так и B. Оказывается, лучшая стратегия поиска для оптимизации - сначала выбрать значение B, а затем оптимизировать A с учетом этого значения B. Этот процесс следует повторять до тех пор, пока не будет найден оптимальный (рассматриваемая проблема является иерархической)

Я ищу совет о том, как реализовать это с помощью Optaplanner. Сначала я думал, что реализую это как две фазы (оптимизация B -> оптимизация A), но теперь я понимаю, что фазы Optaplanner не предназначены для этого. Например, решатель не может l oop на этой упорядоченной последовательности двух фаз.

Вместо этого, я думаю, мне следует реализовать пользовательский MoveSelector, который начинается с перемещения по B, а затем бесконечный список перемещений A ..

Что ты думаешь? Я на правильном пути?

С уважением,

1 Ответ

0 голосов
/ 29 апреля 2020

A и B - разные ступени , не разные фазы (в терминологии OptaPlanner).

В многоступенчатое планирование (см. короткая запись в документах), это в основном 2 разных решателя, один из которых подается в другой. Это очень часто встречается, когда А и В происходят в разное время (например, стратегия c против тактики против планирования операции) или по закону Конвея (организационная структура пользователей). Это простое решение, а зачастую и наиболее практичное для управления изменениями в бизнесе. Это наименьший риск. Тем не менее, он неоптимален (по крайней мере, в теории).

Альтернатива действительно состоит в том, чтобы иметь несколько объектов планирования, что делает его одной большой проблемой планирования. Это идеальное решение. Это сложно. Идеальный может быть врагом добра. Архитектура OptaPlanner поддерживает его, но действительно необходимы пользовательские перемещения (сегодня в OptaPlanner 7.35), так как селекторы перемещения по умолчанию не будут выходить из локальной оптимумы достаточно часто.

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