#include <matlabprogram.h>
Inheritance diagram for MatlabProgram:
Public Member Functions | |
MatlabProgram (const ArrayOfMatrices &x0, const ArrayOfMatrices &lb, const ArrayOfMatrices &ub, const Matrix &constraintlb, const Matrix &constraintub, const char *objFunc, const char *gradFunc, const char *constraintFunc, const char *jacobianFunc, const char *hessianFunc, const char *iterFunc, const mxArray *auxData, ArrayOfMatrices &xsol, bool useQuasiNewton) | |
virtual | ~MatlabProgram () |
char * | geterrormsg () const |
virtual bool | get_nlp_info (int &numVariables, int &numConstraints, int &sizeOfJ, int &sizeOfH, IndexStyleEnum &indexStyle) |
virtual bool | get_bounds_info (int numVariables, double *lbptr, double *ubptr, int numConstraints, double *clbptr, double *cubptr) |
overload this method to return the information about the bound on the variables and constraints. | |
virtual bool | get_starting_point (int numVariables, bool initializeVars, double *variables, bool initializez, double *zl, double *zu, int numConstraints, bool initializeLambda, double *lambda) |
overload this method to return the starting point. | |
virtual bool | eval_f (int numVariables, const double *variables, bool ignoreThis, double &objective) |
overload this method to return the value of the objective function | |
virtual bool | eval_grad_f (int numVariables, const double *variables, bool ignoreThis, double *gradient) |
overload this method to return the vector of the gradient of the objective w.r.t. | |
virtual bool | eval_g (int numVariables, const double *variables, bool ignoreThis, int numConstraints, double *constraints) |
overload this method to return the vector of constraint values | |
virtual bool | eval_jac_g (int numVariables, const double *variables, bool ignoreThis, int numConstraints, int sizeOfJ, int *rows, int *cols, double *Jacobian) |
overload this method to return the jacobian of the constraints. | |
virtual bool | eval_h (int numVariables, const double *variables, bool ignoreThis, double sigma, int numConstraints, const double *multipliers, bool ignoreThisToo, int sizeOfH, int *rows, int *cols, double *Hessian) |
overload this method to return the hessian of the lagrangian. | |
virtual void | finalize_solution (SolverReturn status, int numVariables, const double *variables, const double *zl, const double *zu, int numConstraints, const double *constraints, const double *lambda, double objective, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq) |
virtual bool | intermediate_callback (AlgorithmMode mode, int iteration, double objective, double inf_pr, double inf_du, double mu, double d_norm, double regularization_ize, double alpha_du, double alpha_pr, int ls_trials, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq) |
Protected Member Functions | |
MatlabProgram (const MatlabProgram &source) | |
MatlabProgram & | operator= (const MatlabProgram &source) |
Protected Attributes | |
const ArrayOfMatrices & | lb |
const ArrayOfMatrices & | ub |
const Matrix & | constraintlb |
const Matrix & | constraintub |
const mxArray * | auxData |
ArrayOfMatrices & | xsol |
ArrayOfMatrices * | x |
Array< double > * | lambda |
mxArray ** | prhs |
mxArray * | lambdarhs |
bool | useQuasiNewton |
SparseMatrixStructure * | JacobianStructure |
SparseMatrixStructure * | HessianStructure |
const char * | objFunc |
const char * | gradFunc |
const char * | constraintFunc |
const char * | jacobianFunc |
const char * | hessianFunc |
const char * | iterFunc |
Private Member Functions | |
double | computeObjective (const ArrayOfMatrices &x) |
void | computeGradient (const ArrayOfMatrices &x, ArrayOfMatrices &grad) |
void | computeConstraints (const ArrayOfMatrices &x, Array< double > &g) |
void | computeJacobian (const ArrayOfMatrices &x, double *Jacobian) |
void | computeHessian (const ArrayOfMatrices &x, const Array< double > &lambda, double sigma, double *Hessian) |
mxArray * | callMatlabJacobianRoutine (const ArrayOfMatrices &x, bool returnStructureOnly=true) |
mxArray * | callMatlabHessianRoutine (const ArrayOfMatrices &x, const Array< double > &lambda, bool returnStructureOnly=true, double sigma=0) |
Definition at line 28 of file matlabprogram.h.
MatlabProgram::MatlabProgram | ( | const ArrayOfMatrices & | x0, | |
const ArrayOfMatrices & | lb, | |||
const ArrayOfMatrices & | ub, | |||
const Matrix & | constraintlb, | |||
const Matrix & | constraintub, | |||
const char * | objFunc, | |||
const char * | gradFunc, | |||
const char * | constraintFunc, | |||
const char * | jacobianFunc, | |||
const char * | hessianFunc, | |||
const char * | iterFunc, | |||
const mxArray * | auxData, | |||
ArrayOfMatrices & | xsol, | |||
bool | useQuasiNewton | |||
) |
virtual MatlabProgram::~MatlabProgram | ( | ) | [virtual] |
MatlabProgram::MatlabProgram | ( | const MatlabProgram & | source | ) | [protected] |
char* MatlabProgram::geterrormsg | ( | ) | const |
virtual bool MatlabProgram::get_nlp_info | ( | int & | numVariables, | |
int & | numConstraints, | |||
int & | sizeOfJ, | |||
int & | sizeOfH, | |||
IndexStyleEnum & | indexStyle | |||
) | [virtual] |
virtual bool MatlabProgram::get_bounds_info | ( | int | numVariables, | |
double * | lbptr, | |||
double * | ubptr, | |||
int | numConstraints, | |||
double * | clbptr, | |||
double * | cubptr | |||
) | [virtual] |
overload this method to return the information about the bound on the variables and constraints.
The value that indicates that a bound does not exist is specified in the parameters nlp_lower_bound_inf and nlp_upper_bound_inf. By default, nlp_lower_bound_inf is -1e19 and nlp_upper_bound_inf is 1e19. (see TNLPAdapter)
Implements Ipopt::TNLP.
virtual bool MatlabProgram::get_starting_point | ( | int | numVariables, | |
bool | initializeVars, | |||
double * | variables, | |||
bool | initializez, | |||
double * | zl, | |||
double * | zu, | |||
int | numConstraints, | |||
bool | initializeLambda, | |||
double * | lambda | |||
) | [virtual] |
overload this method to return the starting point.
The bools init_x and init_lambda are both inputs and outputs. As inputs, they indicate whether or not the algorithm wants you to initialize x and lambda respectively. If, for some reason, the algorithm wants you to initialize these and you cannot, set the respective bool to false.
Implements Ipopt::TNLP.
virtual bool MatlabProgram::eval_f | ( | int | numVariables, | |
const double * | variables, | |||
bool | ignoreThis, | |||
double & | objective | |||
) | [virtual] |
virtual bool MatlabProgram::eval_grad_f | ( | int | numVariables, | |
const double * | variables, | |||
bool | ignoreThis, | |||
double * | gradient | |||
) | [virtual] |
overload this method to return the vector of the gradient of the objective w.r.t.
x
Implements Ipopt::TNLP.
virtual bool MatlabProgram::eval_g | ( | int | numVariables, | |
const double * | variables, | |||
bool | ignoreThis, | |||
int | numConstraints, | |||
double * | constraints | |||
) | [virtual] |
virtual bool MatlabProgram::eval_jac_g | ( | int | numVariables, | |
const double * | variables, | |||
bool | ignoreThis, | |||
int | numConstraints, | |||
int | sizeOfJ, | |||
int * | rows, | |||
int * | cols, | |||
double * | Jacobian | |||
) | [virtual] |
overload this method to return the jacobian of the constraints.
The vectors iRow and jCol only need to be set once. The first call is used to set the structure only (iRow and jCol will be non-NULL, and values will be NULL) For subsequent calls, iRow and jCol will be NULL.
Implements Ipopt::TNLP.
virtual bool MatlabProgram::eval_h | ( | int | numVariables, | |
const double * | variables, | |||
bool | ignoreThis, | |||
double | sigma, | |||
int | numConstraints, | |||
const double * | multipliers, | |||
bool | ignoreThisToo, | |||
int | sizeOfH, | |||
int * | rows, | |||
int * | cols, | |||
double * | Hessian | |||
) | [virtual] |
overload this method to return the hessian of the lagrangian.
The vectors iRow and jCol only need to be set once (during the first call). The first call is used to set the structure only (iRow and jCol will be non-NULL, and values will be NULL) For subsequent calls, iRow and jCol will be NULL. This matrix is symmetric - specify the lower diagonal only. A default implementation is provided, in case the user wants to se quasi-Newton approximations to estimate the second derivatives and doesn't not neet to implement this method.
Reimplemented from Ipopt::TNLP.
virtual void MatlabProgram::finalize_solution | ( | SolverReturn | status, | |
int | numVariables, | |||
const double * | variables, | |||
const double * | zl, | |||
const double * | zu, | |||
int | numConstraints, | |||
const double * | constraints, | |||
const double * | lambda, | |||
double | objective, | |||
const IpoptData * | ip_data, | |||
IpoptCalculatedQuantities * | ip_cq | |||
) | [virtual] |
virtual bool MatlabProgram::intermediate_callback | ( | AlgorithmMode | mode, | |
int | iteration, | |||
double | objective, | |||
double | inf_pr, | |||
double | inf_du, | |||
double | mu, | |||
double | d_norm, | |||
double | regularization_ize, | |||
double | alpha_du, | |||
double | alpha_pr, | |||
int | ls_trials, | |||
const IpoptData * | ip_data, | |||
IpoptCalculatedQuantities * | ip_cq | |||
) | [virtual] |
MatlabProgram& MatlabProgram::operator= | ( | const MatlabProgram & | source | ) | [inline, protected] |
Definition at line 156 of file matlabprogram.h.
double MatlabProgram::computeObjective | ( | const ArrayOfMatrices & | x | ) | [private] |
void MatlabProgram::computeGradient | ( | const ArrayOfMatrices & | x, | |
ArrayOfMatrices & | grad | |||
) | [private] |
void MatlabProgram::computeConstraints | ( | const ArrayOfMatrices & | x, | |
Array< double > & | g | |||
) | [private] |
void MatlabProgram::computeJacobian | ( | const ArrayOfMatrices & | x, | |
double * | Jacobian | |||
) | [private] |
void MatlabProgram::computeHessian | ( | const ArrayOfMatrices & | x, | |
const Array< double > & | lambda, | |||
double | sigma, | |||
double * | Hessian | |||
) | [private] |
mxArray* MatlabProgram::callMatlabJacobianRoutine | ( | const ArrayOfMatrices & | x, | |
bool | returnStructureOnly = true | |||
) | [private] |
mxArray* MatlabProgram::callMatlabHessianRoutine | ( | const ArrayOfMatrices & | x, | |
const Array< double > & | lambda, | |||
bool | returnStructureOnly = true , |
|||
double | sigma = 0 | |||
) | [private] |
const ArrayOfMatrices& MatlabProgram::lb [protected] |
Definition at line 117 of file matlabprogram.h.
const ArrayOfMatrices& MatlabProgram::ub [protected] |
Definition at line 118 of file matlabprogram.h.
const Matrix& MatlabProgram::constraintlb [protected] |
Definition at line 119 of file matlabprogram.h.
const Matrix& MatlabProgram::constraintub [protected] |
Definition at line 120 of file matlabprogram.h.
const mxArray* MatlabProgram::auxData [protected] |
Definition at line 121 of file matlabprogram.h.
ArrayOfMatrices& MatlabProgram::xsol [protected] |
Definition at line 123 of file matlabprogram.h.
ArrayOfMatrices* MatlabProgram::x [protected] |
Definition at line 124 of file matlabprogram.h.
Array<double>* MatlabProgram::lambda [protected] |
Definition at line 127 of file matlabprogram.h.
mxArray** MatlabProgram::prhs [protected] |
Definition at line 133 of file matlabprogram.h.
mxArray* MatlabProgram::lambdarhs [protected] |
Definition at line 134 of file matlabprogram.h.
bool MatlabProgram::useQuasiNewton [protected] |
Definition at line 137 of file matlabprogram.h.
SparseMatrixStructure* MatlabProgram::JacobianStructure [protected] |
Definition at line 142 of file matlabprogram.h.
SparseMatrixStructure* MatlabProgram::HessianStructure [protected] |
Definition at line 143 of file matlabprogram.h.
const char* MatlabProgram::objFunc [protected] |
Definition at line 146 of file matlabprogram.h.
const char* MatlabProgram::gradFunc [protected] |
Definition at line 147 of file matlabprogram.h.
const char* MatlabProgram::constraintFunc [protected] |
Definition at line 148 of file matlabprogram.h.
const char* MatlabProgram::jacobianFunc [protected] |
Definition at line 149 of file matlabprogram.h.
const char* MatlabProgram::hessianFunc [protected] |
Definition at line 150 of file matlabprogram.h.
const char* MatlabProgram::iterFunc [protected] |
Definition at line 151 of file matlabprogram.h.