OptaPlanner 備忘録

XStream の input ファイルが reference を XPATH で書いている場合

<com.example.MySolution>
  <id>1</id>
  <locationList>
    <com.example.model.Location>
      <id>0</id>
      <name>xxxx</name>
    </com.rekeep.domain.model.Location>
  </locationList>
  <officeList>
    <com.example.model.Office>
      <id>0</id>
      <location reference="../../../locationList/com.example.model.Location" />
    </com.example.model.Office>
    ...
com.thoughtworks.xstream.converters.ConversionException: Invalid reference

にヒットする。

		XStreamSolutionFileIO<EmployeeRoutingSolution> xStreamSolutionFileIO = new XStreamSolutionFileIO<>(MySolution.class);
		xStreamSolutionFileIO.getXStream().setMode(XStream.XPATH_RELATIVE_REFERENCES);
		File inputFile = new File("src/test/resources/input/test_input.txt");
		MySolution inputSolution = xStreamSolutionFileIO.read(inputFile);

のように mode を指定する。

solution の スコア計算だけする

保存しておく

		File outputFile = new File("src/test/resources/output/my_test_OUTPUT1.txt");
		xStreamSolutionFileIO.write(bestSolution, outputFile);

読み出してから

		ScoreDirector<MyRoutingSolution> scoreDirector = solver.getScoreDirectorFactory().buildScoreDirector();
		scoreDirector.setWorkingSolution(inputSolution);
		Score score = scoreDirector.calculateScore();

inputSolution を編集して、再計算することもできる