Ich versuche, eine Benchmark-Konfiguration in meinem Projekt zu implementieren, und was auch immer ich tue, es scheint mir ein Fehler zu passieren. Nach einigen Lesevorgängen in der Dokumentation entdeckte ich, dass ich eine SolutionIO
Schnittstelle implementieren musste, um die Eingabe zu lesen und in eine Lösung zu überführen.Implementierung einer SolutionIO-Schnittstelle für das Benchmarking
Dies ist meine Konfiguration ohne Solver:
<benchmarkDirectory>local/data/nurserostering/folder</benchmarkDirectory>
<inheritedSolverBenchmark>
<problemBenchmarks>
----> <problemIOClass>org.optaplanner.examples.nurserostering.persistence.CustomBenchmarkIO</problemIOClass> <-----
<inputSolutionFile>data/nurserostering/import/importTest/Input0.xml</inputSolutionFile>
</problemBenchmarks>
Der Fehler ich bin immer auf dem <problemIOClass>
Tag ist (Ende der Post sehen).
Das ist mein CustomBenchmarkIO (Custom SolutionIO):
package org.optaplanner.examples.nurserostering.persistence;
import java.io.File;
import org.optaplanner.core.api.domain.solution.Solution;
public interface CustomProblemIOInterface {
String getFileExtension();
Solution read(File inputSolutionFile);
void write(Solution solution, File outputSolutionFile);
}
Und hier habe ich eine Klasse, die diese Schnittstelle implementiert:
package org.optaplanner.examples.nurserostering.persistence;
import java.io.File;
import org.optaplanner.core.api.domain.solution.Solution;
import org.optaplanner.persistence.common.api.domain.solution.SolutionFileIO;
public class CustomBenchmarkIOClass implements CustomProblemIOInterface{
public String getInputFileExtension() {
return null;
}
public String getOutputFileExtension() {
// TODO Auto-generated method stub
return null;
}
public Solution read(File inputSolutionFile) {
return null;
}
public void write(Object solution, File outputSolutionFile) {
}
}
habe ich versucht, die Klasse und die Schnittstelle, aber ich bekomme immer noch den gleichen Fehler. Hier
ist das vollständige Fehlerprotokoll:
Exception in thread "main" java.lang.IllegalArgumentException: Unmarshalling of benchmarkConfigResource (org/optaplanner/examples/nurserostering/benchmark/monetBenchmarkConfig.xml) fails.
at org.optaplanner.benchmark.impl.XStreamXmlPlannerBenchmarkFactory.configure(XStreamXmlPlannerBenchmarkFactory.java:105)
at org.optaplanner.benchmark.api.PlannerBenchmarkFactory.createFromXmlResource(PlannerBenchmarkFactory.java:46)
at org.optaplanner.examples.common.app.CommonBenchmarkApp$ArgOption.buildPlannerBenchmarkFactory(CommonBenchmarkApp.java:105)
at org.optaplanner.examples.common.app.CommonBenchmarkApp.buildAndBenchmark(CommonBenchmarkApp.java:66)
at org.optaplanner.examples.nurserostering.app.NurseRosteringBenchmarkApp.main(NurseRosteringBenchmarkApp.java:24)
Caused by: com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field org.optaplanner.benchmark.config.ProblemBenchmarksConfig.problemIOClass
---- Debugging information ----
field : problemIOClass
class : org.optaplanner.benchmark.config.ProblemBenchmarksConfig
required-type : org.optaplanner.benchmark.config.ProblemBenchmarksConfig
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number : 6
class[1] : org.optaplanner.benchmark.config.SolverBenchmarkConfig
class[2] : org.optaplanner.benchmark.config.PlannerBenchmarkConfig
version : 1.4.7
-------------------------------
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:495)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:351)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1185)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1169)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1040)
at org.optaplanner.benchmark.impl.XStreamXmlPlannerBenchmarkFactory.configure(XStreamXmlPlannerBenchmarkFactory.java:133)
at org.optaplanner.benchmark.impl.XStreamXmlPlannerBenchmarkFactory.configure(XStreamXmlPlannerBenchmarkFactory.java:123)
at org.optaplanner.benchmark.impl.XStreamXmlPlannerBenchmarkFactory.configure(XStreamXmlPlannerBenchmarkFactory.java:103)
... 4 more
Ich poste diese Frage, weil ich nicht weiß, was ich noch nicht ausprobiert, da ich nicht weiß, alle Möglichkeiten einer Umsetzung Benchmark.
Ich habe getan, wie Sie sagten, aber ich bekomme immer noch den gleichen Fehler. Könnte es etwas in meiner Konfiguration oder in meiner CustomBenchmarkIOClass geben? –
Diese Ausnahme sagt: 'Feld: problemIOClass'. das sollte ' ...' in der config (oder etwas in der Art, überprüfen Sie die Dokumente der von Ihnen verwendeten Version). –
Das hat es behoben. Vielen Dank! –