2016-07-01 6 views
0

Ich brauche Hilfe beim Benchmarking mit OptaPlanner. Es gibt zwei Probleme, auf die ich stoße. Die erste ist die Ergebnisse der Benchmarking der bereitgestellten Beispiele. Ich sehe, dass das Vehicle-Routing-Beispiel zwei Apps hat. Einer von ihnen ist "VehicleRoutingBenchmarkApp". Ich habe diese Anwendung ausgeführt und dachte, dass die index.html generiert würde, aber es war nicht. Ich weiß nicht, wie ich das machen soll.Wie funktioniert man? Ausführen/implementieren Benchmark für optaplanner?

Das zweite Problem ist die Implementierung. Ich experimentiere nur, also habe ich das Code-Snippet wie in der VehicleRoutingApp main() beschrieben hinzugefügt, damit ich sehen kann, was passieren wird.

Dokumentation Link: https://docs.jboss.org/drools/release/6.0.0.CR3/optaplanner-docs/html/benchmarkingAndTweaking.html

System.out.println("-------------- benchmark stuff --------------"); 
     PlannerBenchmarkFactory plannerBenchmarkFactory = PlannerBenchmarkFactory.createFromXmlResource(
       "org/optaplanner/examples/vehiclerouting/benchmark/vehicleRoutingBenchmarkConfig.xml"); 
     PlannerBenchmark plannerBenchmark = plannerBenchmarkFactory.buildPlannerBenchmark(); 
     plannerBenchmark.benchmark(); 

Das Ergebnis war ein konstanter Strom von ausgegebenen Protokolle. Es ist schwierig zu verfolgen, was es vermittelt wird. Wie bekomme ich all das übersetzt in eine nette GUI, wie ich glaube index.html tun soll? Danke im Voraus.

Die tracestack Ich erhalte ist die folgende:

Exception in thread "main" java.lang.IllegalStateException: The directory dataDir (C:\Intellij\Workspace\optaplanner-developer\data\vehiclerouting) does not exist. 
Either the working directory should be set to the directory that contains the data directory (which is not the data directory itself), or the system property org.optaplanner.examples.dataDir should be set properly. 
The data directory is different in a git clone (optaplanner/optaplanner-examples/data) and in a release zip (examples/sources/data). 
In an IDE (IntelliJ, Eclipse, NetBeans), open the "Run configuration" to change "Working directory" (or add the system property in "VM options"). 
    at org.optaplanner.examples.common.persistence.AbstractSolutionDao.<init>(AbstractSolutionDao.java:46) 
    at org.optaplanner.examples.common.persistence.XStreamSolutionDao.<init>(XStreamSolutionDao.java:32) 
    at org.optaplanner.examples.vehiclerouting.persistence.VehicleRoutingDao.<init>(VehicleRoutingDao.java:25) 
    at org.optaplanner.examples.vehiclerouting.persistence.VehicleRoutingImporter.<init>(VehicleRoutingImporter.java:57) 
    at org.optaplanner.examples.vehiclerouting.persistence.VehicleRoutingFileIO.<init>(VehicleRoutingFileIO.java:28) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at java.lang.Class.newInstance(Class.java:442) 
    at org.optaplanner.core.config.util.ConfigUtils.newInstance(ConfigUtils.java:46) 
    at org.optaplanner.benchmark.config.ProblemBenchmarksConfig.buildSolutionFileIO(ProblemBenchmarksConfig.java:149) 
    at org.optaplanner.benchmark.config.ProblemBenchmarksConfig.buildProblemBenchmarkList(ProblemBenchmarksConfig.java:111) 
    at org.optaplanner.benchmark.config.SolverBenchmarkConfig.buildSolverBenchmark(SolverBenchmarkConfig.java:88) 
    at org.optaplanner.benchmark.config.PlannerBenchmarkConfig.buildPlannerBenchmark(PlannerBenchmarkConfig.java:210) 
    at org.optaplanner.benchmark.impl.XStreamXmlPlannerBenchmarkFactory.buildPlannerBenchmark(XStreamXmlPlannerBenchmarkFactory.java:156) 
    at org.optaplanner.examples.common.app.CommonBenchmarkApp.buildAndBenchmark(CommonBenchmarkApp.java:68) 
    at org.optaplanner.examples.vehiclerouting.app.VehicleRoutingBenchmarkApp.main(VehicleRoutingBenchmarkApp.java:24) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
+1

'VehicleRoutingBenchmarkApp' aus der Box arbeiten müssen. Stellen Sie sicher, dass das Arbeitsverzeichnis auf 'optaplanner-examples' gesetzt ist (Standard in IntelliJ, aber nicht in Eclipse). Kopieren Sie hier den Stacktrace, falls dies nicht der Fall ist. –

Antwort

1

Für diejenigen, die versuchen optaplanner zu lernen und hat die gleiche Frage, die Lösung in Ihrer referenzierten benchmarkConfig.xml Datei. Sie sollten eine XML-Datei mit einem Root-Tag <plannerBenchmark> erstellen. Darin können Sie ein weiteres Tag namens <benchmarkDiretory> hinzufügen. Hier können Sie angeben, wo der Bericht erstellt werden soll. Stellen Sie sicher, dass Sie <inputSolutionFile> so einstellen, dass sie auf die richtigen Datensätze zeigt, die entweder .xml oder .vrp sein können. Der Rest funktioniert wie Magie.

aussehen sollte etwas ähnlich der folgenden:

<plannerBenchmark> 
    <benchmarkDirectory>local/data/report/vehiclerouting</benchmarkDirectory> 
    ..... 
    <inputSolutionFile>data/vehiclerouting/unsolved/TestCase_1.xml</inputSolutionFile> 
    ..... 
</plannerBenchmark>