Я получаю сообщение «Фаза локального поиска началась с неинициализированного решения», когда я работаю с большим набором данных

Я разрабатываю решатель с использованием Optaplanner 6.1.0, аналогичный проблеме маршрутизации транспортных средств. Когда я запускаю свой решатель на 700 установщиках и 200 заказах, он успешно решает проблему планирования. Но когда я использовал более крупный набор данных (700 установщиков и 1220 заказов), я получил

Причина: java.lang.IllegalStateException: фаза локального поиска началась с неинициализированного Решения. Сначала инициализируйте Решение. Например, сначала запустите этап эвристики построения.

но прямо перед исключением,

16: 10: 40,378 ИНФОРМАЦИЯ [DefaultConstructionHeuristicPhase] [http-listener-1 (4)] Эвристическая фаза построения (0) завершена: общее количество шагов (194), затраченное время (30693), лучший результат (-1 hard / -688803 soft).

Я использую <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType> в своей конфигурации.

Я неправильно это использую?


person Pejal Hebat    schedule 23.02.2015    source источник


Ответы (1)


Возможно, диапазон значений для переменной планирования пуст. Это более вероятно, особенно с поставщиком диапазона значений от объекта. Не стесняйтесь подавать jira, чтобы сообщение об ошибке улучшилось в таком случае.

Задача диагностики: закомментируйте фазу локального решателя, запустите решатель (чтобы он выполнял только эвристику построения), а затем выполните итерацию по объектам планирования и распечатайте значение для каждого значения планирования. Проверьте, есть ли там нули.

Об этом свидетельствует тот факт, что у вас 194 шага, а не 200 шагов в вашем канале. (Если остальные 6 объектов планирования являются неподвижными, это не вызовет это исключение (подробнее), так что проблема не в этом.)

person Geoffrey De Smet    schedule 24.02.2015
comment
Спасибо @geoffrey. Я перечислил объекты планирования, и некоторые из значений планирования равны нулю. В настоящее время я пытаюсь выделить все объекты планирования, чтобы ни один из них не был нулевым, но кажется, что я могу использовать только FIRST_FIT и FIRST_FIT_DECREASING для ConstructionHeuristicType. Есть ли обходной путь, при котором я могу вручную выделить объекты планирования до начала этапа ConstructionHeuristic? - person Pejal Hebat; 27.02.2015
comment
Что я сделал, так это увеличил HardConstraintScore из-за отсутствия предыдущего состояния с -1 до -3, и все объекты планирования получили / имеют значение. - person Pejal Hebat; 27.02.2015
comment
Все это кажется невозможным, потому что CH всегда будет присваивать значение, если только nullabe = true (в этом случае LS это не побеспокоит). У вас есть нуль в вашем диапазоне значений? - person Geoffrey De Smet; 27.02.2015