Designer

This solver determines the optimal experimental design for a given measurement model. In a first step, we sample the prior distribution of the parameters \(\vartheta^{(i)}\sim p(\vartheta)\) for \(i=1,\dots,N_{\vartheta}\). Given the samples, we evaluate the model \(F(\vartheta^{(i)},s)\) and save the results for the candidate locations of the design parameters \(F(\vartheta^{(i)},s)\). In the last step, the likelihood \(p(y|\vartheta,s)\) is sampled for each of the parameters. Using the created samples \(y^{(i,j)}\sim p(y|\vartheta^{(i)},s)\) for \(i=1,\dots,N_y\) we approximate the utility using numerical integration

\[\hat U(s)=\sum\limits_{i=1}^{N_{\vartheta}}\sum\limits_{j=1}^{N_y}w_{ij}\left[\ln p(y^{(i,j)}|\vartheta^{(i)},s)-\ln\left(\sum\limits_{k=1}^{N_{\vartheta}} w_{k} p(y^{(i,j)}|\vartheta^{(k)},s) \right) \right]\]

and perform the optimization over the space of design space is performed in order to determine the optimal design.

Usage

e["Solver"]["Type"] = "Designer"

Results

These are the results produced by this solver:

Utility
  • Usage: e[“Results”][“Utility”] = List of real number

  • Description: Evaluation of utility.

Optimal Design
  • Usage: e[“Results”][“Optimal Design”] = real number

  • Description: Coordinates of the optimal design.

Configuration

These are settings required by this module.

Executions Per Generation
  • Usage: e[“Solver”][“Executions Per Generation”] = unsigned integer

  • Description: Specifies the number of model executions per generation. By default this setting is 0, meaning that all executions will be performed in the first generation. For values greater 0, executions will be split into batches and split int generations for intermediate output.

Sigma
  • Usage: e[“Solver”][“Sigma”] = real number

  • Description: Standard deviation for measurement.

Termination Criteria

These are the customizable criteria that indicates whether the solver should continue or finish execution. Korali will stop when at least one of these conditions are met. The criteria is expressed in C++ since it is compiled and evaluated as seen here in the engine.

Max Model Evaluations
  • Usage: e[“Solver”][“Max Model Evaluations”] = unsigned integer

  • Description: Specifies the maximum allowed evaluations of the computational model.

  • Criteria: _maxModelEvaluations <= _modelEvaluationCount

Max Generations
  • Usage: e[“Solver”][“Max Generations”] = unsigned integer

  • Description: Determines how many solver generations to run before stopping execution. Execution can be resumed at a later moment.

  • Criteria: _k->_currentGeneration > _maxGenerations

Default Configuration

These following configuration will be assigned by default. Any settings defined by the user will override the given settings specified in these defaults.

{
"Executions Per Generation": 0,
"Model Evaluation Count": 0,
"Normal Generator": {
    "Mean": 0.0,
    "Standard Deviation": 1.0,
    "Type": "Univariate/Normal"
    },
"Sigma": 0,
"Termination Criteria": {
    "Max Generations": 10000000000,
    "Max Model Evaluations": 1000000000
    },
"Variable Count": 0
}