2016-05-25 19 views
1

私は自分のプロジェクトでベンチマーク設定を実装しようとしています。何をしていても、何らかのエラーが発生しているようです。ドキュメンテーションからいくつかの読んだ後、私はSolutionIOインターフェイスを実装して、入力を読み込んで解決策にする必要があることを発見しました。ベンチマークのためのSolutionIOインターフェイスの実装

これはソルバーせずに私の設定です:

<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> 

私は取得していますエラーが(記事の最後を参照)<problemIOClass>タグです。

これは私のCustomBenchmarkIO(カスタム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); 
} 

そして、ここで私はそのインターフェイスを実装するクラスを持っている:私は、クラスやインタフェースを使用してみましたが

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) { 

} 

} 

が、私それでも同じエラーが発生します。ここで

完全なエラーログです:

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 

私は実装のすべての可能な方法を知らないと私は、試していないかわからないので、私はこの質問を投稿しています基準。

答えて

1

SolutionFileIOというoptaplannerからインターフェイスを実装する必要があります。独自のインターフェイスを定義する必要はありません。最近は瓶の中にありますoptaplanner-persistence-common

+0

私が言ったように、私はまだ同じエラーが発生します。私の設定やCustomBenchmarkIOClassに何かがありますか? –

+0

例外: 'field:problemIOClass'です。それはconfig内の ' ...'でなければなりません。そうであれば、使用しているバージョンのドキュメントをチェックしてください。 –

+0

それはそれを修正しました。ありがとうございました! –

関連する問題