Class OptimizationResultWriter

Class Documentation

class OptimizationResultWriter

The OptimizationResultWriter class receives results during an optimizer run. A new instance is to be created for each run.

TODO: change into interface; add OptimizationResultWriterHDF5

Public Functions

OptimizationResultWriter(const H5::H5File &file, std::string rootPath)

Write to pre-opened HDF5 file (will be re-opened)

Parameters:
  • file

  • rootPath

OptimizationResultWriter(const std::string &filename, bool overwrite, std::string rootPath)

Open HDF5 file and write there.

Parameters:
  • filename – Name of the result file

  • overwrite – Overwrite output file if already exists

  • rootPath

OptimizationResultWriter &operator=(const OptimizationResultWriter &other) = delete
OptimizationResultWriter(OptimizationResultWriter const &other)
virtual ~OptimizationResultWriter()
virtual void logObjectiveFunctionEvaluation(gsl::span<const double> parameters, double objectiveFunctionValue, gsl::span<const double> objectiveFunctionGradient, int numIterations, int numFunctionCalls, double timeElapsedInSeconds)

Function to be called after each objective function f(x) or gradient f’(x) evaluation.

Parameters:
  • parameters – Function parameters x

  • objectiveFunctionValue – f(x)

  • objectiveFunctionGradient – f’(x) or NULL

  • numFunctionCalls – Number of times the objective function has been called (f(x) and f’(x) are counted individually (?))

  • timeElapsedInSeconds – CPU time for the last objective function evaluation (wall time)

virtual void logOptimizerIteration(int numIterations, gsl::span<const double> parameters, double objectiveFunctionValue, gsl::span<const double> gradient, double wallSeconds, double cpuSeconds)

Function to be called after each optimizer iteration. (For parameters, see above or IpOpt intermediate function)

Parameters:
  • numIterations

  • theta

  • objectiveFunctionValue

  • gradient

  • timeElapsedInSeconds

  • alg_mod

  • inf_pr

  • inf_du

  • mu

  • d_norm

  • regularization_size

  • alpha_du

  • alpha_pr

  • ls_trials

void setLoggingEachIteration(bool logGradient)
void setLoggingEachFunctionEvaluation(bool logGradient, bool logParameters)
virtual void starting(gsl::span<const double> initialParameters)

Log optimizer start.

Parameters:

initialParameters

virtual void saveOptimizerResults(double finalNegLogLikelihood, gsl::span<const double> optimalParameters, double wallSec, double cpuSec, int exitStatus) const

Function to be called when local optimization is finished.

Parameters:
  • finalNegLogLikelihood – Final cost f(x)

  • optimalParameters – Final parameters x

  • masterTime – Wall time for this optimization

  • exitStatus – Exit status (cause of optimizer termination)

H5::H5File const &getH5File() const
virtual std::string const &getRootPath() const
void setRootPath(std::string const &path)

Set root path in HDF5 file and create the respective group.

Parameters:

path

Public Members

bool logParametersEachFunctionEvaluation = true
bool logGradientEachFunctionEvaluation = true
bool logGradientEachIteration = true

Protected Functions

virtual void flushResultWriter() const

Write buffered output to file.