9 #ifndef __IPNLPSCALING_HPP__
10 #define __IPNLPSCALING_HPP__
24 class ScaledMatrixSpace;
25 class SymScaledMatrixSpace;
46 const std::string& prefix)
197 const std::string& prefix)=0;
333 const std::string& prefix);
This is the abstract base class for problem scaling.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Overloaded initialization method.
virtual SmartPtr< const Matrix > apply_jac_c_scaling(SmartPtr< const Matrix > matrix)
Returns a scaled version of the jacobian for c.
virtual SmartPtr< Vector > apply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)=0
Returns an d-scaled version of the given vector.
virtual bool have_d_scaling()=0
Returns true if the inequality constraints are scaled.
void operator=(const NoNLPScalingObject &)
Overloaded Equals Operator.
virtual SmartPtr< const Vector > apply_vector_scaling_c(const SmartPtr< const Vector > &v)
Returns an c-scaled version of the given vector.
virtual Number unapply_obj_scaling(const Number &f)=0
Returns an obj-unscaled version of the given scalar.
virtual SmartPtr< Vector > apply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)
Returns an d-scaled version of the given vector.
virtual Number unapply_obj_scaling(const Number &f)
Returns an obj-unscaled version of the given scalar.
virtual SmartPtr< Vector > unapply_grad_obj_scaling_NonConst(const SmartPtr< const Vector > &v)
Returns a grad_f unscaled version (d_f * D_x^{-1}) of the given vector.
virtual bool have_c_scaling()
Returns true if the equality constraints are scaled.
virtual SmartPtr< Vector > unapply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)=0
Returns an d-unscaled version of the given vector.
Number obj_scaling_factor_
Additional scaling value for the objective function.
virtual bool have_x_scaling()=0
Returns true if the primal x variables are scaled.
SmartPtr< const Vector > unapply_vector_scaling_d_LU(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-unscaled vector in the d_L or d_U space.
virtual SmartPtr< Vector > unapply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)
Returns an d-unscaled version of the given vector.
virtual ~StandardScalingBase()
Default destructor.
Class implementing the scaling object that doesn't to any scaling.
SmartPtr< const Vector > apply_vector_scaling_x_LU(const Matrix &Px_LU, const SmartPtr< const Vector > &lu, const VectorSpace &x_space)
Returns an x-scaled vector in the x_L or x_U space.
virtual bool have_c_scaling()=0
Returns true if the equality constraints are scaled.
SmartPtr< SymScaledMatrixSpace > scaled_h_space_
Scaled hessian of lagrangian spacea.
void operator=(const NLPScalingObject &)
Overloaded Equals Operator.
SmartPtr< ScaledMatrixSpace > scaled_jac_d_space_
Scaled jacobian of d space.
double Number
Type of all numbers.
SmartPtr< Vector > unapply_vector_scaling_d_LU_NonConst(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-unscaled vector in the d_L or d_U space.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)=0
Implementation of the initialization method that has to be overloaded by for each derived class...
virtual SmartPtr< const Vector > unapply_vector_scaling_d(const SmartPtr< const Vector > &v)=0
Returns an d-unscaled version of the given vector.
virtual ~NLPScalingObject()
Default destructor.
virtual SmartPtr< const Matrix > apply_jac_d_scaling(SmartPtr< const Matrix > matrix)=0
Returns a scaled version of the jacobian for d If the overloaded method does not create a new matrix...
This is a base class for many standard scaling techniques.
virtual ~NoNLPScalingObject()
Default destructor.
SmartPtr< Vector > apply_vector_scaling_x_LU_NonConst(const Matrix &Px_LU, const SmartPtr< const Vector > &lu, const VectorSpace &x_space)
Methods for scaling bounds - these wrap those above.
virtual SmartPtr< const Vector > unapply_vector_scaling_d(const SmartPtr< const Vector > &v)
Returns an d-unscaled version of the given vector.
virtual bool have_d_scaling()
Returns true if the inequality constraints are scaled.
virtual SmartPtr< Vector > apply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)
Returns an x-scaled version of the given vector.
Template class for Smart Pointers.
virtual SmartPtr< const Vector > apply_vector_scaling_c(const SmartPtr< const Vector > &v)=0
Returns an c-scaled version of the given vector.
virtual SmartPtr< const Vector > apply_vector_scaling_d(const SmartPtr< const Vector > &v)=0
Returns an d-scaled version of the given vector.
SmartPtr< Vector > apply_vector_scaling_d_LU_NonConst(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-scaled vector in the d_L or d_U space.
virtual Number apply_obj_scaling(const Number &f)=0
Methods to map scaled and unscaled matrices.
This class stores a list of user set options.
virtual SmartPtr< Vector > apply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)
Returns an c-scaled version of the given vector.
VectorSpace base class, corresponding to the Vector base class.
virtual SmartPtr< Vector > unapply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)
Returns an c-unscaled version of the given vector.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
SmartPtr< const Journalist > jnlst_
SmartPtr< const Vector > apply_vector_scaling_d_LU(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-scaled vector in the d_L or d_U space.
virtual SmartPtr< const Vector > unapply_vector_scaling_c(const SmartPtr< const Vector > &v)=0
Returns an c-unscaled version of the given vector.
virtual SmartPtr< const SymMatrix > apply_hessian_scaling(SmartPtr< const SymMatrix > matrix)=0
Returns a scaled version of the hessian of the lagrangian If the overloaded method does not create a ...
virtual SmartPtr< const Vector > apply_vector_scaling_x(const SmartPtr< const Vector > &v)=0
Returns an x-scaled version of the given vector.
virtual SmartPtr< const SymMatrix > apply_hessian_scaling(SmartPtr< const SymMatrix > matrix)
Returns a scaled version of the hessian of the lagrangian If the overloaded method does not create a ...
const Journalist & Jnlst() const
Accessor method for the journalist.
SmartPtr< ScaledMatrixSpace > scaled_jac_c_space_
Scaled Matrix Spaces.
Number * x_L
Lower bounds on variables.
virtual void DetermineScalingParametersImpl(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U, Number &df, SmartPtr< Vector > &dx, SmartPtr< Vector > &dc, SmartPtr< Vector > &dd)
Overloaded from StandardScalingBase.
virtual void DetermineScalingParametersImpl(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U, Number &df, SmartPtr< Vector > &dx, SmartPtr< Vector > &dc, SmartPtr< Vector > &dd)=0
This is the method that has to be overloaded by a particular scaling method that somehow computes the...
Number Number * x_U
Upper bounds on variables.
virtual SmartPtr< Vector > apply_grad_obj_scaling_NonConst(const SmartPtr< const Vector > &v)
Methods for scaling the gradient of the objective - wraps the virtual methods above.
bool Initialize(const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
Method to initialize the options.
virtual SmartPtr< const Vector > unapply_vector_scaling_x(const SmartPtr< const Vector > &v)=0
Returns an x-unscaled version of the given vector.
virtual SmartPtr< Vector > apply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)=0
Returns an x-scaled version of the given vector.
virtual SmartPtr< const Vector > unapply_vector_scaling_c(const SmartPtr< const Vector > &v)
Returns an c-unscaled version of the given vector.
virtual Number apply_obj_scaling(const Number &f)
Methods to map scaled and unscaled matrices.
virtual SmartPtr< const Matrix > apply_jac_d_scaling(SmartPtr< const Matrix > matrix)
Returns a scaled version of the jacobian for d If the overloaded method does not create a new matrix...
Class responsible for all message output.
virtual SmartPtr< const Vector > unapply_grad_obj_scaling(const SmartPtr< const Vector > &v)
Returns a grad_f unscaled version (d_f * D_x^{-1}) of the given vector.
virtual void DetermineScaling(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, SmartPtr< const MatrixSpace > &new_jac_c_space, SmartPtr< const MatrixSpace > &new_jac_d_space, SmartPtr< const SymMatrixSpace > &new_h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U)=0
This method is called by the IpoptNLP's at a convenient time to compute and/or read scaling factors...
void operator=(const StandardScalingBase &)
Overloaded Equals Operator.
Number df_
Scaling parameters - we only need to keep copies of the objective scaling and the x scaling - the oth...
virtual SmartPtr< Vector > unapply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)
Returns an x-unscaled version of the given vector.
virtual void DetermineScaling(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, SmartPtr< const MatrixSpace > &new_jac_c_space, SmartPtr< const MatrixSpace > &new_jac_d_space, SmartPtr< const SymMatrixSpace > &new_h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U)
This method is called by the IpoptNLP's at a convenient time to compute and/or read scaling factors...
virtual SmartPtr< Vector > unapply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)=0
Returns an x-unscaled version of the given vector.
virtual SmartPtr< const Vector > apply_grad_obj_scaling(const SmartPtr< const Vector > &v)
Returns a grad_f scaled version (d_f * D_x^{-1}) of the given vector.
virtual SmartPtr< const Vector > unapply_vector_scaling_x(const SmartPtr< const Vector > &v)
Returns an x-unscaled version of the given vector.
virtual SmartPtr< const Matrix > apply_jac_c_scaling(SmartPtr< const Matrix > matrix)=0
Returns a scaled version of the jacobian for c.
virtual SmartPtr< Vector > unapply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)=0
Returns an c-unscaled version of the given vector.
virtual SmartPtr< const Vector > apply_vector_scaling_d(const SmartPtr< const Vector > &v)
Returns an d-scaled version of the given vector.
virtual SmartPtr< Vector > apply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)=0
Returns an c-scaled version of the given vector.
virtual bool have_x_scaling()
Returns true if the primal x variables are scaled.
virtual SmartPtr< const Vector > apply_vector_scaling_x(const SmartPtr< const Vector > &v)
Returns an x-scaled version of the given vector.
SmartPtr< Vector > dx_
x scaling