Data between the executable and the framework is transmitted over input and output streams. Over these connections the requests, results and additional data concerning the optimization progress are sent.
The data exchange is done defining the optimizer protocol, an ASCII format using a number of keywords. Requests from the optimizer have a LISP like syntax and are summarized in Table 4.5.
Name | Description |
evaluate | Request a new evaluation |
Example: (evaluation ((par1 0.01) (par2 1e-12) ... ) ((id 7))) | |
gradient | Request an evaluation of a finite difference used for the calculation of the gradient. |
Example: like evaluation | |
reduction | Print the relative reduction of the least-squares of the residuum in the current optimization step. |
Example: (reduction 0.17) | |
statistics | Print statistics described in Section F.3. |
Example: (statistics (model (df 3) ......... | |
jacobian | Print the Jacobian matrix. This output is for debugging purpose only. |
Example: (jacobian (0.23 0.023 ...) ...) | |
result | Return the result of the optimization. The first integer value is the status and indicates if the optimization was finished successfully or failed. |
Example: (result 2 ((par1 0.01) ... )) |
The results of the evaluations are returned to the optimizer in the following syntax.
value ... request_id
The result consists of one or more values of the evaluation function and the integer request identification. In case of the nonlinear constrained optimizer, the values of the model function consist of the target function, the equality constraints, and the inequality constraints in the same order as in the description file.
For the least-squares optimizer the evaluation function consists of the values of the residual vector. The size of this vector must be declared in the experiment file.