Я пытаюсь использовать модуль сравнительного анализа OptaPlanner. Мой файл конфигурации эталонного теста отклоняется из-за следующей ошибки:
The <solver/> element belongs to a different namespace (https://www.optaplanner.org/xsd/benchmark) than expected (https://www.optaplanner.org/xsd/solver).
Я взял основы своей конфигурации из пример в документах и не изменил ни одной из ссылок xsd/xsi и т. д. В примере показаны теги в файле . Моя IDE не выдает ошибок форматирования xml.
Я соединил файл только с базовым разделом, где я определяю общие классы моделей/определения оценок, и это приводит к той же проблеме.
<?xml version = "1.0" encoding = "UTF-8"?>
<plannerBenchmark xmlns = "https://www.optaplanner.org/xsd/benchmark" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "https://www.optaplanner.org/xsd/benchmark https://www.optaplanner.org/xsd/benchmark/benchmark.xsd">
<benchmarkDirectory>benchmarks</benchmarkDirectory>
<warmUpSecondsSpentLimit>30</warmUpSecondsSpentLimit>
<inheritedSolverBenchmark>
<solver>
<solutionClass>my.package.SchedulingSolution</solutionClass>
<entityClass>my.package.ISchedulable</entityClass>
<entityClass>my.package.Booking</entityClass>
<scoreDirectorFactory><constraintProviderClass>my.package.SchedulingConstraintProvider</constraintProviderClass></scoreDirectorFactory>
</solver>
</inheritedSolverBenchmark>
Я вызываю его, используя var benchmarkFactory = PlannerBenchmarkFactory.createFromSolverConfigXmlResource("config-benchmark.xml");
в методе main
.
Я делаю что-то явно неправильно здесь?
Я думаю, что вы передаете benchmark-config.xml
неправильный метод; createFromSolverConfigXmlResource
ожидает solver-config.xml
. Он создает базовый тест из существующей конфигурации решателя.
Фактически, конфигурация решателя является подмножеством конфигурации эталонного теста, но у них есть отдельное пространство имен XML.
Пожалуйста, взгляните на метод createFromXmlResource
, который ожидает benchmark-config.xml
.
Я постараюсь улучшить сообщение об отказоустойчивости, чтобы сделать его действительно очевидным. Бьюсь об заклад, вы не единственный, кто столкнулся с этим.
Хорошо подмечено. Я не заметил, что использовал неправильный метод PlannerBenchmarkFactory. Это отсортировано!