2016-01-14 4 views
2

Я пытаюсь сравнить алгоритм планирования в реальном времени, но не могу найти, как это сделать, поддерживается ли это в Optaplanner?Бенчмарк алгоритм планирования в реальном времени с использованием Optaplanner

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

В качестве альтернативы я могу запускать алгоритмы реального времени, используя мою собственную фреймворк, но для этого потребовалось бы вручную определить все эвристики Optaplanner, которые я хочу запустить (что довольно сложно при использовании настройки матрицы). Есть ли способ создать экземпляр решателей (в Java) на основе определения xml эталона? Это позволило бы мне запустить мой собственный тест в реальном времени, все еще используя определение Optaplanner.

+0

В режиме реального времени мы можем предположить, что вы имеете в виду, что вы стреляете 'ProblemFactChange' в это? –

+0

Я фактически не реализовал его с помощью 'ProblemFactChange' (но мог бы сделать это). После изменения проблемы я останавливаю алгоритм и начинаю его с определения новой проблемы, включая самое лучшее расписание. Поэтому, по сути, это теплый перезапуск. – rinde

+0

Похоже, что вы должны использовать 'ProblemFactChange', поскольку это потенциально более эффективно и быстро. Любая причина, почему вы этого не сделали? –

ответ

2

Базовая конфигурация, которая также запускает ProblemFactChange событий (= планирование в реальном времени), пока не поддерживается, vote for this jira. Как бы вы хотели, чтобы контрольная конфигурация выглядела?

Взломать повторное использование решателей из эталонной конфигурации, отлитый PlannerBenchmark в PlannerBenchmarkRunner и использовать getPlannerBenchmarkResult().getSolverBenchmarkResultList(), но сдастся на кучу оркестровки (включая отчет). Вместо этого, если вы преуспеете в переопределении SubSingleBenchmarkResult, вы не потеряете эту оркестровку (но ваши хаки будут еще глубже).

Независимо от того, что вы в конечном итоге делаете, делите, как бы выглядела бы эталонная конфигурация, поскольку это даст нам вдохновение, когда мы реализуем ее для будущей версии OptaPlanner.

+1

Я только что попробовал первый хак, который вы описали, и он, похоже, работает: 'final SolverConfig configFromBenchmark = .. // используя код выше', затем создавая пустую фабрику:' final SolverFactory factory = SolverFactory.createEmpty(); ' , добавив config: 'factory.getSolverConfig(). inherit (configFromBenchmark);' и создавая экземпляр решателя с использованием 'factory.buildSolver();' – rinde