Go to the documentation of this file.
9 #ifndef __IPTNLPADAPTER_HPP__
10 #define __IPTNLPADAPTER_HPP__
21 class ExpansionMatrix;
22 class ExpansionMatrixSpace;
24 class TDependencyDetector;
52 const std::string& prefix);
146 Number regularization_size,
184 Index deriv_test_start_index);
228 const Index* x_not_fixed_map,
232 std::list<Index>& c_deps);
Index num_linear_variables_
Number of linear variables.
bool CheckDerivatives(DerivativeTestEnum deriv_test, Index deriv_test_start_index)
Method for performing the derivative test.
Number tol_
Overall convergence tolerance.
bool update_local_lambda(const Vector &y_c, const Vector &y_d)
Number nlp_lower_bound_inf_
Value for a lower bound that denotes -infinity.
virtual bool Eval_d(const Vector &x, Vector &d)
SmartPtr< ExpansionMatrix > P_d_g_
bool internal_eval_g(bool new_x)
Class to organize all the data required by the algorithm.
HessianApproximationType
enumeration for the Hessian information type.
SmartPtr< TNLP > tnlp_
Pointer to the TNLP class (class specific to Number* vectors and harwell triplet matrices)
Index * findiff_jac_postriplet_
Position of entry in original triplet matrix.
Index n_full_g_
full dimension of g (c + d)
virtual bool Eval_grad_f(const Vector &x, Vector &g_f)
Number Number * x_U
Upper bounds on variables.
virtual bool IntermediateCallBack(AlgorithmMode mode, Index iter, Number obj_value, Number inf_pr, Number inf_du, Number mu, Number d_norm, Number regularization_size, Number alpha_du, Number alpha_pr, Index ls_trials, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
This method is called once per iteration, after the iteration summary output has been printed.
virtual bool ProcessOptions(const OptionsList &options, const std::string &prefix)
Overload if you want the chance to process options or parameters that may be specific to the NLP.
SmartPtr< ExpansionMatrix > P_c_g_
Number findiff_perturbation_
Size of the perturbation for the derivative approximation.
Number * c_rhs_
the values for the full jacobian of g
Number * x_L
Lower bounds on variables.
bool DetermineDependentConstraints(Index n_x_var, const Index *x_not_fixed_map, const Number *x_l, const Number *x_u, const Number *g_l, const Number *g_u, Index n_c, const Index *c_map, std::list< Index > &c_deps)
virtual void FinalizeSolution(SolverReturn status, const Vector &x, const Vector &z_L, const Vector &z_U, const Vector &c, const Vector &d, const Vector &y_c, const Vector &y_d, Number obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
This method is called at the very end of the optimization.
Index findiff_jac_nnz_
Number of unique nonzeros in constraint Jacobian.
Class for all IPOPT specific calculated quantities.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
DerivativeTestEnum derivative_test_
Enum indicating whether and which derivative test should be performed at starting point.
FixedVariableTreatmentEnum
Enum for treatment of fixed variables option.
double Number
Type of all numbers.
virtual bool GetSpaces(SmartPtr< const VectorSpace > &x_space, SmartPtr< const VectorSpace > &c_space, SmartPtr< const VectorSpace > &d_space, SmartPtr< const VectorSpace > &x_l_space, SmartPtr< const MatrixSpace > &px_l_space, SmartPtr< const VectorSpace > &x_u_space, SmartPtr< const MatrixSpace > &px_u_space, SmartPtr< const VectorSpace > &d_l_space, SmartPtr< const MatrixSpace > &pd_l_space, SmartPtr< const VectorSpace > &d_u_space, SmartPtr< const MatrixSpace > &pd_u_space, SmartPtr< const MatrixSpace > &Jac_c_space, SmartPtr< const MatrixSpace > &Jac_d_space, SmartPtr< const SymMatrixSpace > &Hess_lagrangian_space)
Method for creating the derived vector / matrix types (Do not delete these, the ).
Number derivative_test_perturbation_
Size of the perturbation for the derivative test.
SmartPtr< ExpansionMatrix > P_x_x_L_
Expansion from fixed x_L (ipopt) to full x.
void ResortX(const Vector &x, Number *x_orig)
Sort the primal variables, and add the fixed values in x.
SmartPtr< ExpansionMatrixSpace > P_x_x_L_space_
virtual bool GetBoundsInformation(const Matrix &Px_L, Vector &x_L, const Matrix &Px_U, Vector &x_U, const Matrix &Pd_L, Vector &d_L, const Matrix &Pd_U, Vector &d_U)
Method for obtaining the bounds information.
SmartPtr< ExpansionMatrixSpace > P_c_g_space_
Expansion from c only (ipopt) to full ampl c.
void ResortBnds(const Vector &x_L, Number *x_L_orig, const Vector &x_U, Number *x_U_orig)
virtual bool Eval_c(const Vector &x, Vector &c)
Index nz_full_jac_g_
number of non-zeros in full-size Jacobian of g
Index n_x_fixed_
Number of fixed variables.
Number * x
Input: Starting point Output: Optimal solution.
FixedVariableTreatmentEnum fixed_variable_treatment_
Flag indicating how fixed variables should be handled.
bool dependency_detection_with_rhs_
Flag indicating if rhs should be considered during dependency detection.
Number * findiff_x_u_
Copy of the upper bounds.
SmartPtr< const VectorSpace > d_space_
Number bound_relax_factor_
Index nz_h_
number of non-zeros in the non-fixed-size Hessian
bool internal_eval_jac_g(bool new_x)
int Index
Type of all indices of vectors, matrices etc.
SmartPtr< const MatrixSpace > pd_u_space_
HessianApproximationType hessian_approximation_
Flag indicating what Hessian information is to be used.
Template class for Smart Pointers.
Number * full_g_
copy of lambda (yc & yd)
virtual bool GetWarmStartIterate(IteratesVector &warm_start_iterate)
Method for obtaining an entire iterate as a warmstart point.
virtual bool Eval_jac_c(const Vector &x, Matrix &jac_c)
Number * findiff_x_l_
Copy of the lower bounds.
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
virtual void GetScalingParameters(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, Number &obj_scaling, SmartPtr< Vector > &x_scaling, SmartPtr< Vector > &c_scaling, SmartPtr< Vector > &d_scaling) const
Routines to get the scaling parameters.
virtual bool Eval_jac_d(const Vector &x, Matrix &jac_d)
Number point_perturbation_radius_
Maximal perturbation of the initial point.
SmartPtr< const VectorSpace > x_space_
SmartPtr< const MatrixSpace > px_l_space_
Index nz_jac_c_
non-zeros of the jacobian of c
SmartPtr< const VectorSpace > x_l_space_
SmartPtr< ExpansionMatrixSpace > P_x_x_U_space_
Index * x_fixed_map_
Position of fixed variables.
SmartPtr< const SymMatrixSpace > Hess_lagrangian_space_
Index derivative_test_first_index_
Index of first quantity to be checked.
This class Adapts the TNLP interface so it looks like an NLP interface.
Number * jac_g_
copy of g (c & d)
SmartPtr< const VectorSpace > d_l_space_
bool update_local_x(const Vector &x)
bool derivative_test_print_all_
Flag indicating if all test values should be printed, or only those violating the threshold.
virtual bool Eval_h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, SymMatrix &h)
SmartPtr< ExpansionMatrixSpace > P_x_full_x_space_
SmartPtr< const MatrixSpace > Jac_d_space_
void operator=(const TNLPAdapter &)
Overloaded Equals Operator.
SmartPtr< const VectorSpace > c_space_
SmartPtr< TDependencyDetector > dependency_detector_
Object that can be used to detect linearly dependent rows in the equality constraint Jacobian.
virtual void GetQuasiNewtonApproximationSpaces(SmartPtr< VectorSpace > &approx_space, SmartPtr< Matrix > &P_approx)
Method returning information on quasi-Newton approximation.
TaggedObject::Tag y_c_tag_for_iterates_
This is the base class for all derived symmetric matrix types.
DerivativeTestEnum
Enum for specifying which derivative test is to be performed.
SmartPtr< const VectorSpace > x_u_space_
Index nz_jac_c_no_extra_
non-zeros of the jacobian of c without added constraints for fixed variables.
Number derivative_test_tol_
Relative threshold for marking deviation from finite difference test.
JacobianApproxEnum jacobian_approximation_
Flag indicating how Jacobian is computed.
Number * full_lambda_
copy of the full x vector (fixed & non-fixed)
SmartPtr< const VectorSpace > d_u_space_
IndexStyleEnum
overload this method to return the number of variables and constraints, and the number of non-zeros i...
virtual ~TNLPAdapter()
Default destructor.
TaggedObject::Tag x_tag_for_iterates_
unsigned int Tag
Type for the Tag values.
SmartPtr< const MatrixSpace > Jac_c_space_
void ResortG(const Vector &c, const Vector &d, Number *g_orig)
SmartPtr< const MatrixSpace > pd_l_space_
Index * findiff_jac_ia_
Start position for nonzero indices in ja for each column of Jacobian.
void initialize_findiff_jac(const Index *iRow, const Index *jCol)
Initialize sparsity structure for finite difference Jacobian.
SmartPtr< TNLP > tnlp() const
Accessor method for the underlying TNLP.
Index nz_jac_d_
non-zeros of the jacobian of d
SolverReturn
enum for the return from the optimize algorithm (obviously we need to add more)
TNLPAdapter(const SmartPtr< TNLP > tnlp, const SmartPtr< const Journalist > jnlst=NULL)
Default constructor.
SmartPtr< ExpansionMatrixSpace > P_d_g_space_
Expansion from d only (ipopt) to full ampl d.
JacobianApproxEnum
Enum for specifying technique for computing Jacobian.
This class stores a list of user set options.
DECLARE_STD_EXCEPTION(INVALID_TNLP)
TaggedObject::Tag y_d_tag_for_iterates_
TNLP::IndexStyleEnum index_style_
Numbering style of variables and constraints.
Number nlp_upper_bound_inf_
Value for a upper bound that denotes infinity.
virtual bool GetStartingPoint(SmartPtr< Vector > x, bool need_x, SmartPtr< Vector > y_c, bool need_y_c, SmartPtr< Vector > y_d, bool need_y_d, SmartPtr< Vector > z_L, bool need_z_L, SmartPtr< Vector > z_U, bool need_z_U)
Method for obtaining the starting point for all the iterates.
Index * findiff_jac_ja_
Ordered by columns, for each column the row indices in Jacobian.
SmartPtr< const MatrixSpace > px_u_space_
SmartPtr< const Journalist > jnlst_
Journalist.
Index n_full_x_
full dimension of x (fixed + non-fixed)
SmartPtr< ExpansionMatrix > P_x_full_x_
Expansion from fixed x (ipopt) to full x.
TaggedObject::Tag x_tag_for_jac_g_
TaggedObject::Tag x_tag_for_g_
AlgorithmMode
enum to indicate the mode in which the algorithm is
virtual bool Eval_f(const Vector &x, Number &f)
Number Number * x_scaling
Index nz_full_h_
number of non-zeros in full-size Hessian
Specialized CompoundVector class specifically for the algorithm iterates.
SmartPtr< ExpansionMatrix > P_x_x_U_
Expansion from fixed x_U (ipopt) to full x.