anchor.diff:  The benchmark configuration currently expects an `<inputSolutionFile>` element, so a separate file, for each dataset.
   There are 2 ways to deal with this if your dataset is in a relational database or another type of repository:
   
  -* Extract the datasets from the database and serialize them to a local file (for example as XML with `XStreamSolutionFileIO` if XML isn't too verbose). Then use those files an `<inputSolutionFile>` elements.
  -* For each dataset, create a txt file that holds the unique id of the dataset. Write <<customSolutionFileIO,a custom `SolutionFileIO`>> that reads that identifier, connects to the database and extract the problem identified by that id. Configure those txt files as `<inputSolutionFile>` elements.
  +* Extract the datasets from the database and serialize them to a local file (for example as XML with `XStreamSolutionFileIO` if XML isn't too verbose).
  +Then use those files an `<inputSolutionFile>` elements.
  +* For each dataset, create a txt file that holds the unique id of the dataset.
  +Write <<customSolutionFileIO,a custom `SolutionFileIO`>> that reads that identifier, connects to the database and extract the problem identified by that id. Configure those txt files as `<inputSolutionFile>` elements.
   
   
   [NOTE]
  
positive.code: 
  To lower verbosity, the common parts of multiple `<solverBenchmark>` elements are extracted to the `<inheritedSolverBenchmark>` element.
  Every property can still be overwritten per `<solverBenchmark>` element.
  Note that inherited solver phases such as `<constructionHeuristic>` or `<localSearch>` are not overwritten but instead are added to the tail of the solver phases list.
  
  
  [[solutionFileIO]]
  
negative.code: [[findTheBestSolverConfiguration]]
  == Find The Best `Solver` Configuration
  
  Planner supports several optimization algorithms, so you're probably wondering which is the best one?
  Although some optimization algorithms generally perform better than others, it really depends on your problem domain.
  Most solver phases have parameters which can be tweaked.
  Those parameters can influence the results a lot, even though most solver phases work pretty well out-of-the-box.
  
  Luckily, Planner includes a benchmarker, which allows you to play out different solver phases with different settings
  against each other in development, so you can use the best configuration for your planning problem in production.
  
  
  image::Chapter-Benchmarking_and_tweaking/benchmarkOverview.png[align="center"]
  