CONOPT
Loading...
Searching...
No Matches

Functions

void LeastSq2ModelData.buildModel ()
 adds variables and constraints to the model
 
double LeastSq2ModelData.evaluateNonlinearTerm (double[] x, int rowno, boolean ignerr, int thread)
 callback method for evaluating the nonlinear terms in a given row
 
void LeastSq2ModelData.evaluateNonlinearJacobian (double[] x, double[] jac, int rowno, int[] jacnum, boolean ignerr, int thread)
 callback method for evaluating the jacobian for the nonlinear terms in a given row
 
void LeastSq2ModelData.evaluateSDLagrangian (double x[], double u[], int[] hessianrow, int[] hessiancol, double[] hessianval)
 Computes and returns the numerical values of the Lagrangian of the Hessian.
 

Detailed Description

This model is similar to leastsq. The key difference is that we supply a callback routine that can compute 2nd derivatives of the model. However, we only include part of the 2nd derivatives corresponding to the direct objective terms, res(i)**2. The terms from b(i,j)*x(j)**2 are ignored in the 2nd derivatives. CONOPT will not notice the incorrect derivatives but it may converge more slowly.

We solve the following nonlinear least squares model:

\[ \min \sum_i res_{i}^2 \!! \sum_j ( a_{ij}x_j + b_{ij}x_j^2 ) + res_i = obs_i \]

where \(a\), \(b\), and \(obs\) are known data, and \(res\) and \(x\) are the variables of the model.

For more information about the individual callbacks, please have a look at the source code.

Function Documentation

◆ buildModel()

void LeastSq2ModelData.buildModel ( )
inline

adds variables and constraints to the model

Definition at line 116 of file leastsq2.java.

◆ evaluateNonlinearTerm()

double LeastSq2ModelData.evaluateNonlinearTerm ( double[] x,
int rowno,
boolean ignerr,
int thread )
inline

callback method for evaluating the nonlinear terms in a given row

Parameters
xthe solution vector that needs to be evaluated.
rownothe number for the row in which the nonlinear term exists.
ignerra boolean to indicate whether the current point is safe or unsafe.
threadthe index of the thread from which this method is being called from.
Returns
the value of the nonlinear terms.

Notes: an error in the evaluation is reported by calling errorInEvaluation()

Definition at line 191 of file leastsq2.java.

◆ evaluateNonlinearJacobian()

void LeastSq2ModelData.evaluateNonlinearJacobian ( double[] x,
double[] jac,
int rowno,
int[] jacnum,
boolean ignerr,
int thread )
inline

callback method for evaluating the jacobian for the nonlinear terms in a given row

Parameters
xthe solution vector that needs to be evaluated.
jacan array to store the Jacobian at the given point and row. This is of length numVar().
rownothe number for the row in which the nonlinear term exists.
jacnumvector with a list of column numbers for the nonlinear nonzero Jacobian elements in the row.
ignerra boolean to indicate whether the current point is safe or unsafe.
threadthe index of the thread from which this method is being called from.

Note: an error in the evaluation is reported by calling errorInEvaluation()

Definition at line 217 of file leastsq2.java.

◆ evaluateSDLagrangian()

void LeastSq2ModelData.evaluateSDLagrangian ( double x[],
double u[],
int[] hessianrow,
int[] hessiancol,
double[] hessianval )
inline

Computes and returns the numerical values of the Lagrangian of the Hessian.

Parameters
xthe solution vector that needs to be evaluated.
uthe vector of weights on the individual constraints.
hessianrowvector of row numbers of the lower triangular part of the hessian.
hessiancolvector of column numbers of the lower triangular part of the hessian.
hessianvalan array to store the Hessian computed at the given point and row. This is of length numHessianNonzeros().

Note: an error in the evaluation is reported by calling errorInEvaluation()

Definition at line 238 of file leastsq2.java.