Время обработки OptaPlanner

#optaplanner

#optaplanner

Вопрос:

Я использую OptaPlanner для решения проблемы, очень похожей на пример балансировки облака. У меня есть 4 небольших правила, написанных в drools, и все они выполняются в Spring boot. Модель имеет 1 облачный процесс и 50 компьютеров. Оптимизация работает отлично. Чего я не понимаю, так это времени, необходимого для завершения, а именно 7 минут.

Если я увеличу размер набора данных до 1200 процессов и 70 компьютеров, это займет 10 минут.

Я понимаю, что это мой ноутбук, и он не самый быстрый. Но для этого небольшого набора данных я ожидал, что результат будет доступен в течение нескольких секунд, если не миллисекунд. Возможно ли иметь такую быструю обработку, особенно если я хочу решать в реальном времени.

Я уверен, что я что-то упускаю. Пожалуйста, сообщите.

Ответ №1:

Прежде всего, запустите optaplanner-benchmark. График наилучших результатов покажет вам соотношение качества и времени.

Во-вторых, посмотрите на скорость подсчета очков (последняя строка журнала данных). Это должно быть выше 1000, предпочтительно выше 5000. Определите, какие ограничения являются медленными, используя это число.

В-третьих, вы можете использовать moveThreadCount для включения многопоточного решения.

В-четвертых, чтобы выполнить миллисекундное решение, посмотрите на решение в реальном времени в документах, в частности addProblemFactChange() .