Bonmin::TMINLP2TNLP Class Reference

This is an adapter class that converts a TMINLP to a TNLP to be solved by Ipopt. More...

#include <BonTMINLP2TNLP.hpp>

Inheritance diagram for Bonmin::TMINLP2TNLP:

Inheritance graph
[legend]
Collaboration diagram for Bonmin::TMINLP2TNLP:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void outputDiffs (const std::string &probName, const std::string *varNames)
 Procedure to ouptut relevant informations to reproduce a sub-problem.
virtual bool hasUpperBoundingObjective ()
 Say if has a specific function to compute upper bounds.
Constructors/Destructors
 TMINLP2TNLP (const SmartPtr< TMINLP > tminlp)
 TMINLP2TNLP (const TMINLP2TNLP &)
 Copy Constructor.
virtual TMINLP2TNLPclone () const
 virtual copy .
virtual ~TMINLP2TNLP ()
 Default destructor.
Methods to modify the MINLP and form the NLP
Index num_variables () const
 Get the number of variables.
Index num_constraints () const
 Get the number of constraints.
Index nnz_h_lag ()
 Get the nomber of nz in hessian.
const TMINLP::VariableTypevar_types ()
 Get the variable types.
const Number * x_l ()
 Get the current values for the lower bounds.
const Number * x_u ()
 Get the current values for the upper bounds.
const Number * orig_x_l () const
 Get the original values for the lower bounds.
const Number * orig_x_u () const
 Get the original values for the upper bounds.
const Number * g_l ()
 Get the current values for constraints lower bounds.
const Number * g_u ()
 Get the current values for constraints upper bounds.
const Number * x_init () const
 get the starting primal point
const Number * x_init_user () const
 get the user provided starting primal point
const Number * duals_init () const
 get the starting dual point
const Number * x_sol () const
 get the solution values
const Number * g_sol () const
 get the g solution (activities)
const Number * duals_sol () const
 get the dual values
SolverReturn optimization_status () const
 Get Optimization status.
Number obj_value () const
 Get the objective value.
void set_obj_value (Number value)
 Manually set objective value.
void force_fractionnal_sol ()
 force solution to be fractionnal.
void SetVariablesBounds (Index n, const Number *x_l, const Number *x_u)
 Change the bounds on the variables.
void SetVariablesLowerBounds (Index n, const Number *x_l)
 Change the lower bound on the variables.
void SetVariablesUpperBounds (Index n, const Number *x_u)
 Change the upper bound on the variable.
void SetVariableBounds (Index var_no, Number x_l, Number x_u)
 Change the bounds on the variable.
void SetVariableLowerBound (Index var_no, Number x_l)
 Change the lower bound on the variable.
void SetVariableUpperBound (Index var_no, Number x_u)
 Change the upper bound on the variable.
void SetStartingPoint (Index n, const Number *x_init)
 Change the starting point.
void resetStartingPoint ()
 reset the starting point to original one.
void setxInit (Index ind, const Number val)
 Set component ind of the starting point.
void setxInit (Index n, const Number *x_init)
 set the starting point to x_init
void setDualInit (Index ind, const Number val)
 Set component ind of the dual starting point.
void setDualsInit (Index n, const Number *duals_init)
 set the dual starting point to duals_init
void Set_x_sol (Index n, const Number *x_sol)
 Set the contiuous solution.
void SetVariableType (Index n, TMINLP::VariableType type)
 Change the type of the variable.
methods to gather information about the NLP
virtual bool get_nlp_info (Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, TNLP::IndexStyleEnum &index_style)
 This call is just passed onto the TMINLP object.
virtual bool get_bounds_info (Index n, Number *x_l, Number *x_u, Index m, Number *g_l, Number *g_u)
 The caller is allowed to modify the bounds, so this method returns the internal bounds information.
virtual bool get_constraints_linearity (Index m, LinearityType *const_types)
 Returns the constraint linearity.
virtual bool hasLinearObjective ()
 returns true if objective is linear.
virtual bool get_starting_point (Index n, bool init_x, Number *x, bool init_z, Number *z_L, Number *z_U, Index m, bool init_lambda, Number *lambda)
 Method called by Ipopt to get the starting point.
virtual bool get_scaling_parameters (Number &obj_scaling, bool &use_x_scaling, Index n, Number *x_scaling, bool &use_g_scaling, Index m, Number *g_scaling)
 Method that returns scaling parameters.
virtual bool get_warm_start_iterate (IteratesVector &warm_start_iterate)
 Methat that returns an Ipopt IteratesVector that has the starting point for all internal varibles.
virtual bool eval_f (Index n, const Number *x, bool new_x, Number &obj_value)
 Returns the value of the objective function in x.
virtual bool eval_grad_f (Index n, const Number *x, bool new_x, Number *grad_f)
 Returns the vector of the gradient of the objective w.r.t.
virtual bool eval_g (Index n, const Number *x, bool new_x, Index m, Number *g)
 Returns the vector of constraint values in x.
virtual bool eval_jac_g (Index n, const Number *x, bool new_x, Index m, Index nele_jac, Index *iRow, Index *jCol, Number *values)
 Returns the jacobian of the constraints.
virtual bool eval_gi (Index n, const Number *x, bool new_x, Index i, Number &gi)
 compute the value of a single constraint
virtual bool eval_grad_gi (Index n, const Number *x, bool new_x, Index i, Index &nele_grad_gi, Index *jCol, Number *values)
 compute the structure or values of the gradient for one constraint
virtual bool eval_h (Index n, const Number *x, bool new_x, Number obj_factor, Index m, const Number *lambda, bool new_lambda, Index nele_hess, Index *iRow, Index *jCol, Number *values)
 Return the hessian of the lagrangian.
Solution Methods
virtual void finalize_solution (SolverReturn status, Index n, const Number *x, const Number *z_L, const Number *z_U, Index m, const Number *g, const Number *lambda, Number obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
 This method is called when the algorithm is complete so the TNLP can store/write the solution.
virtual bool intermediate_callback (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)
 Intermediate Callback method for the user.
Methods for setting and getting the warm starter
void SetWarmStarter (SmartPtr< IpoptInteriorWarmStarter > warm_starter)
SmartPtr< IpoptInteriorWarmStarterGetWarmStarter ()
Methods for setting and getting the warm starter
double evaluateUpperBoundingFunction (const double *x)
 Evaluate the upper bounding function at given point and store the result.
double check_solution (OsiObject **objects=0, int nObjects=-1)
 Round and check the current solution, return norm inf of constraint violation.
Cuts management.
virtual void addCuts (unsigned int numberCuts, const OsiRowCut **cuts)
 Add some linear cuts to the problem formulation (not implemented yet in base class).
virtual void addCuts (const OsiCuts &cuts)
 Add some cuts to the problem formulaiton (handles Quadratics).
virtual void removeCuts (unsigned int number, const int *toRemove)
 Remove some cuts to the formulation.

Protected Member Functions

Index nnz_h_lag () const
 Access number of entries in tminlp_ hessian.
Index nnz_jac_g () const
 Access number of entries in tminlp_ hessian.
TNLP::IndexStyleEnum index_style () const
 Acces index_style.

Protected Attributes

These should be modified in derived class to always maintain there corecteness.
They are directly queried by OsiTMINLPInterface without virtual function for speed.

vector< TMINLP::VariableTypevar_types_
 Types of the variable (TMINLP::CONTINUOUS, TMINLP::INTEGER, TMINLP::BINARY).
vector< Number > x_l_
 Current lower bounds on variables.
vector< Number > x_u_
 Current upper bounds on variables.
vector< Number > orig_x_l_
 Original lower bounds on variables.
vector< Number > orig_x_u_
 Original upper bounds on variables.
vector< Number > g_l_
 Lower bounds on constraints values.
vector< Number > g_u_
 Upper bounds on constraints values.
vector< Number > x_init_
 Initial primal point.
Number * duals_init_
 Initial values for all dual multipliers (constraints then lower bounds then upper bounds).
vector< Number > x_init_user_
 User-provideed initial prmal point.
vector< Number > x_sol_
 Optimal solution.
vector< Number > g_sol_
 Activities of constraint g( x_sol_).
vector< Number > duals_sol_
 Dual multipliers of constraints and bounds.

Private Member Functions

void throw_exception_on_bad_variable_bound (Index i)
 Private method that throws an exception if the variable bounds are not consistent with the variable type.
void gutsOfDelete ()
void gutsOfCopy (const TMINLP2TNLP &source)
 Copies all the arrays.
Default Compiler Generated Methods
(Hidden to avoid implicit creation/calling). These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called.

 TMINLP2TNLP ()
 Default Constructor.
TMINLP2TNLPoperator= (const TMINLP2TNLP &)
 Overloaded Equals Operator.

Private Attributes

SmartPtr< TMINLPtminlp_
 pointer to the tminlp that is being adapted
Internal copies of data allowing caller to modify the MINLP
Index nnz_jac_g_
 Number of non-zeroes in the constraints jacobian.
Index nnz_h_lag_
 Number of non-zeroes in the lagrangian hessian.
TNLP::IndexStyleEnum index_style_
 index style (fortran or C)
SolverReturn return_status_
 Return status of the optimization process.
Number obj_value_
 Value of the optimal solution found by Ipopt.
Warmstart object and related data
SmartPtr< IpoptInteriorWarmStartercurr_warm_starter_
 Pointer to object that holds warmstart information.
Number nlp_lower_bound_inf_
 Value for a lower bound that denotes -infinity.
Number nlp_upper_bound_inf_
 Value for a upper bound that denotes infinity.
bool warm_start_entire_iterate_
 Option from Ipopt - we currently use it to see if we want to use some clever warm start or just the last iterate from the previous run.
bool need_new_warm_starter_
 Do we need a new warm starter object.

Detailed Description

This is an adapter class that converts a TMINLP to a TNLP to be solved by Ipopt.

It allows an external caller to modify the bounds of variables, allowing the treatment of binary and integer variables as relaxed, or fixed

Definition at line 32 of file BonTMINLP2TNLP.hpp.


Constructor & Destructor Documentation

Bonmin::TMINLP2TNLP::TMINLP2TNLP ( const SmartPtr< TMINLP tminlp  ) 

Definition at line 28 of file BonTMINLP2TNLP.cpp.

References duals_init_, g_l_, g_u_, index_style_, m, n, nlp_lower_bound_inf_, nlp_upper_bound_inf_, nnz_h_lag_, nnz_jac_g_, orig_x_l_, orig_x_u_, tminlp_, var_types_, warm_start_entire_iterate_, x_init_, x_init_user_, x_l_, and x_u_.

Bonmin::TMINLP2TNLP::TMINLP2TNLP ( const TMINLP2TNLP  ) 

Copy Constructor.

Warning:
source and copy point to the same tminlp_.

Definition at line 115 of file BonTMINLP2TNLP.cpp.

References gutsOfCopy().

Bonmin::TMINLP2TNLP::~TMINLP2TNLP (  )  [virtual]

Default destructor.

Definition at line 168 of file BonTMINLP2TNLP.cpp.

References gutsOfDelete().

Bonmin::TMINLP2TNLP::TMINLP2TNLP (  )  [private]

Default Constructor.

Referenced by clone().


Member Function Documentation

virtual TMINLP2TNLP* Bonmin::TMINLP2TNLP::clone (  )  const [inline, virtual]

virtual copy .

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 50 of file BonTMINLP2TNLP.hpp.

References TMINLP2TNLP().

Index Bonmin::TMINLP2TNLP::num_variables (  )  const [inline]

Get the number of variables.

Definition at line 61 of file BonTMINLP2TNLP.hpp.

References x_l_, and x_u_.

Referenced by check_solution(), evaluateUpperBoundingFunction(), finalize_solution(), force_fractionnal_sol(), get_bounds_info(), get_nlp_info(), get_starting_point(), get_warm_start_iterate(), gutsOfCopy(), outputDiffs(), Bonmin::TMINLP2TNLPQuadCuts::set_linear_objective(), Set_x_sol(), setDualInit(), setDualsInit(), SetStartingPoint(), SetVariableBounds(), SetVariableLowerBound(), SetVariablesBounds(), SetVariablesLowerBounds(), SetVariablesUpperBounds(), SetVariableType(), SetVariableUpperBound(), setxInit(), and Bonmin::TMINLP2TNLPQuadCuts::TMINLP2TNLPQuadCuts().

Index Bonmin::TMINLP2TNLP::num_constraints (  )  const [inline]

Get the number of constraints.

Definition at line 68 of file BonTMINLP2TNLP.hpp.

References g_l_, and g_u_.

Referenced by check_solution(), Bonmin::TMINLP2TNLPQuadCuts::eval_gi(), Bonmin::TMINLP2TNLPQuadCuts::eval_grad_gi(), finalize_solution(), get_bounds_info(), get_nlp_info(), Bonmin::TMINLP2TNLPQuadCuts::get_scaling_parameters(), get_starting_point(), gutsOfCopy(), outputDiffs(), Bonmin::TMINLP2TNLPQuadCuts::removeCuts(), setDualInit(), setDualsInit(), and Bonmin::TMINLP2TNLPQuadCuts::TMINLP2TNLPQuadCuts().

Index Bonmin::TMINLP2TNLP::nnz_h_lag (  )  [inline]

Get the nomber of nz in hessian.

Definition at line 74 of file BonTMINLP2TNLP.hpp.

References nnz_h_lag_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_h(), and Bonmin::TMINLP2TNLPQuadCuts::TMINLP2TNLPQuadCuts().

const TMINLP::VariableType* Bonmin::TMINLP2TNLP::var_types (  )  [inline]

Get the variable types.

Definition at line 79 of file BonTMINLP2TNLP.hpp.

References var_types_.

Referenced by Bonmin::CutStrengthener::HandleOneCut(), and Bonmin::RoundingFPump::round().

const Number* Bonmin::TMINLP2TNLP::x_l (  )  [inline]

Get the current values for the lower bounds.

Definition at line 85 of file BonTMINLP2TNLP.hpp.

References x_l_.

Referenced by Bonmin::CutStrengthener::ComputeCuts(), Bonmin::isNlpFeasible(), outputDiffs(), Bonmin::RoundingFPump::round(), Bonmin::HeuristicDiveVectorLength::selectVariableToBranch(), Bonmin::HeuristicDiveMIPVectorLength::selectVariableToBranch(), Bonmin::HeuristicDiveMIPFractional::selectVariableToBranch(), and Bonmin::HeuristicDiveFractional::selectVariableToBranch().

const Number* Bonmin::TMINLP2TNLP::x_u (  )  [inline]

Get the current values for the upper bounds.

Definition at line 90 of file BonTMINLP2TNLP.hpp.

References x_u_.

Referenced by Bonmin::CutStrengthener::ComputeCuts(), Bonmin::isNlpFeasible(), outputDiffs(), Bonmin::RoundingFPump::round(), Bonmin::HeuristicDiveVectorLength::selectVariableToBranch(), Bonmin::HeuristicDiveMIPVectorLength::selectVariableToBranch(), Bonmin::HeuristicDiveMIPFractional::selectVariableToBranch(), and Bonmin::HeuristicDiveFractional::selectVariableToBranch().

const Number* Bonmin::TMINLP2TNLP::orig_x_l (  )  const [inline]

Get the original values for the lower bounds.

Definition at line 96 of file BonTMINLP2TNLP.hpp.

References orig_x_l_.

Referenced by Bonmin::CutStrengthener::ComputeCuts(), and outputDiffs().

const Number* Bonmin::TMINLP2TNLP::orig_x_u (  )  const [inline]

Get the original values for the upper bounds.

Definition at line 101 of file BonTMINLP2TNLP.hpp.

References orig_x_u_.

Referenced by Bonmin::CutStrengthener::ComputeCuts(), and outputDiffs().

const Number* Bonmin::TMINLP2TNLP::g_l (  )  [inline]

Get the current values for constraints lower bounds.

Definition at line 107 of file BonTMINLP2TNLP.hpp.

References g_l_.

Referenced by Bonmin::adjustPrimalTolerance(), Bonmin::isNlpFeasible(), Bonmin::TMINLP2TNLPQuadCuts::removeCuts(), and Bonmin::RoundingFPump::round().

const Number* Bonmin::TMINLP2TNLP::g_u (  )  [inline]

Get the current values for constraints upper bounds.

Definition at line 112 of file BonTMINLP2TNLP.hpp.

References g_u_.

Referenced by Bonmin::adjustPrimalTolerance(), Bonmin::isNlpFeasible(), Bonmin::TMINLP2TNLPQuadCuts::removeCuts(), and Bonmin::RoundingFPump::round().

const Number* Bonmin::TMINLP2TNLP::x_init (  )  const [inline]

get the starting primal point

Definition at line 118 of file BonTMINLP2TNLP.hpp.

References x_init_.

Referenced by outputDiffs().

const Number* Bonmin::TMINLP2TNLP::x_init_user (  )  const [inline]

get the user provided starting primal point

Definition at line 124 of file BonTMINLP2TNLP.hpp.

References x_init_user_.

const Number* Bonmin::TMINLP2TNLP::duals_init (  )  const [inline]

get the starting dual point

Definition at line 130 of file BonTMINLP2TNLP.hpp.

References duals_init_.

Referenced by outputDiffs().

const Number* Bonmin::TMINLP2TNLP::x_sol (  )  const [inline]

get the solution values

Definition at line 136 of file BonTMINLP2TNLP.hpp.

References x_sol_.

Referenced by Bonmin::RoundingFPump::gutsOfConstructor(), Bonmin::isNlpFeasible(), Bonmin::CurvBranchingSolver::markHotStart(), Bonmin::HeuristicDiveVectorLength::setInternalVariables(), and Bonmin::HeuristicDiveMIPVectorLength::setInternalVariables().

const Number* Bonmin::TMINLP2TNLP::g_sol (  )  const [inline]

get the g solution (activities)

Definition at line 142 of file BonTMINLP2TNLP.hpp.

References g_sol_.

Referenced by Bonmin::adjustPrimalTolerance(), and Bonmin::isNlpFeasible().

const Number* Bonmin::TMINLP2TNLP::duals_sol (  )  const [inline]

get the dual values

Definition at line 148 of file BonTMINLP2TNLP.hpp.

References duals_sol_.

Referenced by Bonmin::CurvBranchingSolver::markHotStart().

SolverReturn Bonmin::TMINLP2TNLP::optimization_status (  )  const [inline]

Get Optimization status.

Definition at line 154 of file BonTMINLP2TNLP.hpp.

References return_status_.

Number Bonmin::TMINLP2TNLP::obj_value (  )  const [inline]

Get the objective value.

Definition at line 160 of file BonTMINLP2TNLP.hpp.

References obj_value_.

Referenced by Bonmin::CurvBranchingSolver::markHotStart().

void Bonmin::TMINLP2TNLP::set_obj_value ( Number  value  )  [inline]

Manually set objective value.

Definition at line 166 of file BonTMINLP2TNLP.hpp.

References obj_value_.

Referenced by Bonmin::LpBranchingSolver::solveFromHotStart(), and Bonmin::CurvBranchingSolver::solveFromHotStart().

void Bonmin::TMINLP2TNLP::force_fractionnal_sol (  ) 

force solution to be fractionnal.

Definition at line 608 of file BonTMINLP2TNLP.cpp.

References Bonmin::TMINLP::BINARY, Bonmin::TMINLP::INTEGER, num_variables(), var_types_, x_l_, x_sol_, and x_u_.

void Bonmin::TMINLP2TNLP::SetVariablesBounds ( Index  n,
const Number *  x_l,
const Number *  x_u 
)

Change the bounds on the variables.

Definition at line 239 of file BonTMINLP2TNLP.cpp.

References num_variables(), x_l_, and x_u_.

void Bonmin::TMINLP2TNLP::SetVariablesLowerBounds ( Index  n,
const Number *  x_l 
)

Change the lower bound on the variables.

Definition at line 248 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_l_.

void Bonmin::TMINLP2TNLP::SetVariablesUpperBounds ( Index  n,
const Number *  x_u 
)

Change the upper bound on the variable.

Definition at line 255 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_u_.

void Bonmin::TMINLP2TNLP::SetVariableBounds ( Index  var_no,
Number  x_l,
Number  x_u 
)

Change the bounds on the variable.

Definition at line 262 of file BonTMINLP2TNLP.cpp.

References num_variables(), x_l_, and x_u_.

void Bonmin::TMINLP2TNLP::SetVariableLowerBound ( Index  var_no,
Number  x_l 
)

Change the lower bound on the variable.

Definition at line 269 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_l_.

void Bonmin::TMINLP2TNLP::SetVariableUpperBound ( Index  var_no,
Number  x_u 
)

Change the upper bound on the variable.

Definition at line 275 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_u_.

void Bonmin::TMINLP2TNLP::SetStartingPoint ( Index  n,
const Number *  x_init 
)

Change the starting point.

Definition at line 281 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_init_.

void Bonmin::TMINLP2TNLP::resetStartingPoint (  ) 

reset the starting point to original one.

Definition at line 287 of file BonTMINLP2TNLP.cpp.

References curr_warm_starter_, x_init_, and x_init_user_.

Referenced by Bonmin::OsiTMINLPInterface::resolveForRobustness().

void Bonmin::TMINLP2TNLP::setxInit ( Index  ind,
const Number  val 
)

Set component ind of the starting point.

Definition at line 293 of file BonTMINLP2TNLP.cpp.

References x_init_.

void Bonmin::TMINLP2TNLP::setxInit ( Index  n,
const Number *  x_init 
)

set the starting point to x_init

Definition at line 298 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_init_.

void Bonmin::TMINLP2TNLP::setDualInit ( Index  ind,
const Number  val 
)

Set component ind of the dual starting point.

Definition at line 304 of file BonTMINLP2TNLP.cpp.

References duals_init_, num_constraints(), num_variables(), and x_init_.

void Bonmin::TMINLP2TNLP::setDualsInit ( Index  n,
const Number *  duals_init 
)

set the dual starting point to duals_init

Definition at line 312 of file BonTMINLP2TNLP.cpp.

References duals_init_, num_constraints(), num_variables(), and x_init_.

void Bonmin::TMINLP2TNLP::Set_x_sol ( Index  n,
const Number *  x_sol 
)

Set the contiuous solution.

Definition at line 325 of file BonTMINLP2TNLP.cpp.

References num_variables(), and x_sol_.

Referenced by gutsOfCopy(), and Bonmin::LpBranchingSolver::solveFromHotStart().

void Bonmin::TMINLP2TNLP::SetVariableType ( Index  n,
TMINLP::VariableType  type 
)

Change the type of the variable.

Definition at line 336 of file BonTMINLP2TNLP.cpp.

References num_variables(), and var_types_.

void Bonmin::TMINLP2TNLP::outputDiffs ( const std::string &  probName,
const std::string *  varNames 
)

Procedure to ouptut relevant informations to reproduce a sub-problem.

Compare the current problem to the problem to solve and writes files with bounds which have changed and current starting point.

Definition at line 541 of file BonTMINLP2TNLP.cpp.

References duals_init(), num_constraints(), num_variables(), orig_x_l(), orig_x_u(), x_init(), x_l(), and x_u().

bool Bonmin::TMINLP2TNLP::get_nlp_info ( Index &  n,
Index &  m,
Index &  nnz_jac_g,
Index &  nnz_h_lag,
TNLP::IndexStyleEnum &  index_style 
) [virtual]

This call is just passed onto the TMINLP object.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 342 of file BonTMINLP2TNLP.cpp.

References index_style_, nnz_h_lag_, nnz_jac_g_, num_constraints(), and num_variables().

Referenced by Bonmin::adjustPrimalTolerance(), Bonmin::OuterApprox::extractLinearRelaxation(), Bonmin::TMINLP2TNLPQuadCuts::get_nlp_info(), Bonmin::RoundingFPump::gutsOfConstructor(), Bonmin::isNlpFeasible(), Bonmin::HeuristicDiveVectorLength::selectVariableToBranch(), Bonmin::HeuristicDiveMIPVectorLength::selectVariableToBranch(), Bonmin::HeuristicDiveVectorLength::setInternalVariables(), Bonmin::HeuristicDiveMIPVectorLength::setInternalVariables(), Bonmin::HeuristicFPump::solution(), Bonmin::HeuristicDiveMIP::solution(), Bonmin::HeuristicDive::solution(), and Bonmin::HeuristicLocalBranching::validate().

bool Bonmin::TMINLP2TNLP::get_bounds_info ( Index  n,
Number *  x_l,
Number *  x_u,
Index  m,
Number *  g_l,
Number *  g_u 
) [virtual]

The caller is allowed to modify the bounds, so this method returns the internal bounds information.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 353 of file BonTMINLP2TNLP.cpp.

References g_l_, g_u_, num_constraints(), num_variables(), x_l_, and x_u_.

Referenced by Bonmin::OuterApprox::extractLinearRelaxation(), and Bonmin::TMINLP2TNLPQuadCuts::get_bounds_info().

virtual bool Bonmin::TMINLP2TNLP::get_constraints_linearity ( Index  m,
LinearityType *  const_types 
) [inline, virtual]

Returns the constraint linearity.

array should be alocated with length at least n. (default implementation just return false and does not fill the array).

Definition at line 243 of file BonTMINLP2TNLP.hpp.

References tminlp_.

Referenced by Bonmin::OuterApprox::extractLinearRelaxation().

virtual bool Bonmin::TMINLP2TNLP::hasLinearObjective (  )  [inline, virtual]

returns true if objective is linear.

Definition at line 249 of file BonTMINLP2TNLP.hpp.

References tminlp_.

Referenced by Bonmin::OuterApprox::extractLinearRelaxation().

bool Bonmin::TMINLP2TNLP::get_starting_point ( Index  n,
bool  init_x,
Number *  x,
bool  init_z,
Number *  z_L,
Number *  z_U,
Index  m,
bool  init_lambda,
Number *  lambda 
) [virtual]

Method called by Ipopt to get 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.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 367 of file BonTMINLP2TNLP.cpp.

References duals_init_, need_new_warm_starter_, num_constraints(), num_variables(), and x_init_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::get_starting_point(), and Bonmin::RoundingFPump::gutsOfConstructor().

bool Bonmin::TMINLP2TNLP::get_scaling_parameters ( Number &  obj_scaling,
bool &  use_x_scaling,
Index  n,
Number *  x_scaling,
bool &  use_g_scaling,
Index  m,
Number *  g_scaling 
) [virtual]

Method that returns scaling parameters.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 621 of file BonTMINLP2TNLP.cpp.

References tminlp_.

bool Bonmin::TMINLP2TNLP::get_warm_start_iterate ( IteratesVector &  warm_start_iterate  )  [virtual]

Methat that returns an Ipopt IteratesVector that has the starting point for all internal varibles.

Definition at line 399 of file BonTMINLP2TNLP.cpp.

References curr_warm_starter_, need_new_warm_starter_, num_variables(), x_l_, and x_u_.

bool Bonmin::TMINLP2TNLP::eval_f ( Index  n,
const Number *  x,
bool  new_x,
Number &  obj_value 
) [virtual]

Returns the value of the objective function in x.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 412 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by check_solution(), Bonmin::TMINLP2TNLPQuadCuts::eval_f(), and Bonmin::OuterApprox::extractLinearRelaxation().

bool Bonmin::TMINLP2TNLP::eval_grad_f ( Index  n,
const Number *  x,
bool  new_x,
Number *  grad_f 
) [virtual]

Returns the vector of the gradient of the objective w.r.t.

x

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 418 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_grad_f(), Bonmin::OuterApprox::extractLinearRelaxation(), Bonmin::HeuristicDiveVectorLength::selectVariableToBranch(), and Bonmin::HeuristicDiveMIPVectorLength::selectVariableToBranch().

bool Bonmin::TMINLP2TNLP::eval_g ( Index  n,
const Number *  x,
bool  new_x,
Index  m,
Number *  g 
) [virtual]

Returns the vector of constraint values in x.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 425 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by check_solution(), Bonmin::TMINLP2TNLPQuadCuts::eval_g(), and Bonmin::OuterApprox::extractLinearRelaxation().

bool Bonmin::TMINLP2TNLP::eval_jac_g ( Index  n,
const Number *  x,
bool  new_x,
Index  m,
Index  nele_jac,
Index *  iRow,
Index *  jCol,
Number *  values 
) [virtual]

Returns 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.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 432 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_jac_g(), Bonmin::OuterApprox::extractLinearRelaxation(), Bonmin::RoundingFPump::gutsOfConstructor(), Bonmin::HeuristicDiveVectorLength::setInternalVariables(), and Bonmin::HeuristicDiveMIPVectorLength::setInternalVariables().

bool Bonmin::TMINLP2TNLP::eval_gi ( Index  n,
const Number *  x,
bool  new_x,
Index  i,
Number &  gi 
) [virtual]

compute the value of a single constraint

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 453 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_gi().

bool Bonmin::TMINLP2TNLP::eval_grad_gi ( Index  n,
const Number *  x,
bool  new_x,
Index  i,
Index &  nele_grad_gi,
Index *  jCol,
Number *  values 
) [virtual]

compute the structure or values of the gradient for one constraint

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 459 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_grad_gi().

bool Bonmin::TMINLP2TNLP::eval_h ( Index  n,
const Number *  x,
bool  new_x,
Number  obj_factor,
Index  m,
const Number *  lambda,
bool  new_lambda,
Index  nele_hess,
Index *  iRow,
Index *  jCol,
Number *  values 
) [virtual]

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

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 442 of file BonTMINLP2TNLP.cpp.

References tminlp_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_h(), and Bonmin::TMINLP2TNLPQuadCuts::TMINLP2TNLPQuadCuts().

void Bonmin::TMINLP2TNLP::finalize_solution ( SolverReturn  status,
Index  n,
const Number *  x,
const Number *  z_L,
const Number *  z_U,
Index  m,
const Number *  g,
const Number *  lambda,
Number  obj_value,
const IpoptData *  ip_data,
IpoptCalculatedQuantities *  ip_cq 
) [virtual]

This method is called when the algorithm is complete so the TNLP can store/write the solution.

Definition at line 466 of file BonTMINLP2TNLP.cpp.

References curr_warm_starter_, duals_sol_, g_sol_, num_constraints(), num_variables(), obj_value_, return_status_, and x_sol_.

bool Bonmin::TMINLP2TNLP::intermediate_callback ( 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 
) [virtual]

Intermediate Callback method for the user.

Providing dummy default implementation. For details see IntermediateCallBack in IpNLP.hpp.

Definition at line 501 of file BonTMINLP2TNLP.cpp.

References BonminAbortAll, curr_warm_starter_, need_new_warm_starter_, nlp_lower_bound_inf_, nlp_upper_bound_inf_, warm_start_entire_iterate_, x_l_, and x_u_.

void Bonmin::TMINLP2TNLP::SetWarmStarter ( SmartPtr< IpoptInteriorWarmStarter warm_starter  ) 

Definition at line 638 of file BonTMINLP2TNLP.cpp.

References curr_warm_starter_.

SmartPtr< IpoptInteriorWarmStarter > Bonmin::TMINLP2TNLP::GetWarmStarter (  ) 

Definition at line 643 of file BonTMINLP2TNLP.cpp.

References curr_warm_starter_.

virtual bool Bonmin::TMINLP2TNLP::hasUpperBoundingObjective (  )  [inline, virtual]

Say if has a specific function to compute upper bounds.

Definition at line 354 of file BonTMINLP2TNLP.hpp.

References tminlp_.

double Bonmin::TMINLP2TNLP::evaluateUpperBoundingFunction ( const double *  x  ) 

Evaluate the upper bounding function at given point and store the result.

Definition at line 651 of file BonTMINLP2TNLP.cpp.

References num_variables(), and tminlp_.

virtual void Bonmin::TMINLP2TNLP::addCuts ( unsigned int  numberCuts,
const OsiRowCut **  cuts 
) [inline, virtual]

Add some linear cuts to the problem formulation (not implemented yet in base class).

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 366 of file BonTMINLP2TNLP.hpp.

virtual void Bonmin::TMINLP2TNLP::addCuts ( const OsiCuts &  cuts  )  [inline, virtual]

Add some cuts to the problem formulaiton (handles Quadratics).

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 372 of file BonTMINLP2TNLP.hpp.

virtual void Bonmin::TMINLP2TNLP::removeCuts ( unsigned int  number,
const int *  toRemove 
) [inline, virtual]

Remove some cuts to the formulation.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 377 of file BonTMINLP2TNLP.hpp.

double Bonmin::TMINLP2TNLP::check_solution ( OsiObject **  objects = 0,
int  nObjects = -1 
)

Round and check the current solution, return norm inf of constraint violation.

Definition at line 658 of file BonTMINLP2TNLP.cpp.

References Bonmin::TMINLP::BINARY, eval_f(), eval_g(), g_l_, g_sol_, g_u_, Bonmin::TMINLP::INTEGER, num_constraints(), num_variables(), obj_value_, var_types_, and x_sol_.

Index Bonmin::TMINLP2TNLP::nnz_h_lag (  )  const [inline, protected]

Access number of entries in tminlp_ hessian.

Definition at line 419 of file BonTMINLP2TNLP.hpp.

References nnz_h_lag_.

Index Bonmin::TMINLP2TNLP::nnz_jac_g (  )  const [inline, protected]

Access number of entries in tminlp_ hessian.

Definition at line 422 of file BonTMINLP2TNLP.hpp.

References nnz_jac_g_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::eval_jac_g(), and Bonmin::TMINLP2TNLPQuadCuts::TMINLP2TNLPQuadCuts().

TNLP::IndexStyleEnum Bonmin::TMINLP2TNLP::index_style (  )  const [inline, protected]

Acces index_style.

Definition at line 426 of file BonTMINLP2TNLP.hpp.

References index_style_.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), Bonmin::TMINLP2TNLPQuadCuts::eval_grad_gi(), Bonmin::TMINLP2TNLPQuadCuts::eval_jac_g(), and Bonmin::TMINLP2TNLPQuadCuts::TMINLP2TNLPQuadCuts().

TMINLP2TNLP & Bonmin::TMINLP2TNLP::operator= ( const TMINLP2TNLP  )  [private]

Overloaded Equals Operator.

Reimplemented in Bonmin::TMINLP2TNLPQuadCuts.

Definition at line 147 of file BonTMINLP2TNLP.cpp.

References curr_warm_starter_, gutsOfCopy(), gutsOfDelete(), index_style_, need_new_warm_starter_, nlp_lower_bound_inf_, nlp_upper_bound_inf_, nnz_h_lag_, nnz_jac_g_, obj_value_, return_status_, tminlp_, and warm_start_entire_iterate_.

void Bonmin::TMINLP2TNLP::throw_exception_on_bad_variable_bound ( Index  i  )  [private]

Private method that throws an exception if the variable bounds are not consistent with the variable type.

void Bonmin::TMINLP2TNLP::gutsOfDelete (  )  [private]

Definition at line 174 of file BonTMINLP2TNLP.cpp.

Referenced by operator=(), and ~TMINLP2TNLP().

void Bonmin::TMINLP2TNLP::gutsOfCopy ( const TMINLP2TNLP source  )  [private]

Copies all the arrays.

Warning:
this and other should be two instances of the same problem

AW: I am trying to mimic a copy construction for Cbc use with great care not safe.

Definition at line 183 of file BonTMINLP2TNLP.cpp.

References duals_init_, duals_sol_, g_l_, g_sol_, g_u_, m, n, num_constraints(), num_variables(), orig_x_l_, orig_x_u_, Set_x_sol(), var_types_, x_init_, x_init_user_, x_l_, x_sol_, and x_u_.

Referenced by operator=(), and TMINLP2TNLP().


Member Data Documentation

vector<TMINLP::VariableType> Bonmin::TMINLP2TNLP::var_types_ [protected]

Types of the variable (TMINLP::CONTINUOUS, TMINLP::INTEGER, TMINLP::BINARY).

Definition at line 391 of file BonTMINLP2TNLP.hpp.

Referenced by check_solution(), force_fractionnal_sol(), gutsOfCopy(), SetVariableType(), TMINLP2TNLP(), and var_types().

vector<Number> Bonmin::TMINLP2TNLP::x_l_ [protected]

Current lower bounds on variables.

Definition at line 393 of file BonTMINLP2TNLP.hpp.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), force_fractionnal_sol(), get_bounds_info(), get_warm_start_iterate(), gutsOfCopy(), intermediate_callback(), num_variables(), SetVariableBounds(), SetVariableLowerBound(), SetVariablesBounds(), SetVariablesLowerBounds(), TMINLP2TNLP(), and x_l().

vector<Number> Bonmin::TMINLP2TNLP::x_u_ [protected]

Current upper bounds on variables.

Definition at line 395 of file BonTMINLP2TNLP.hpp.

Referenced by force_fractionnal_sol(), get_bounds_info(), get_warm_start_iterate(), gutsOfCopy(), intermediate_callback(), num_variables(), SetVariableBounds(), SetVariablesBounds(), SetVariablesUpperBounds(), SetVariableUpperBound(), TMINLP2TNLP(), and x_u().

vector<Number> Bonmin::TMINLP2TNLP::orig_x_l_ [protected]

Original lower bounds on variables.

Definition at line 397 of file BonTMINLP2TNLP.hpp.

Referenced by gutsOfCopy(), orig_x_l(), and TMINLP2TNLP().

vector<Number> Bonmin::TMINLP2TNLP::orig_x_u_ [protected]

Original upper bounds on variables.

Definition at line 399 of file BonTMINLP2TNLP.hpp.

Referenced by gutsOfCopy(), orig_x_u(), and TMINLP2TNLP().

vector<Number> Bonmin::TMINLP2TNLP::g_l_ [protected]

Lower bounds on constraints values.

Definition at line 401 of file BonTMINLP2TNLP.hpp.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), check_solution(), g_l(), get_bounds_info(), gutsOfCopy(), num_constraints(), Bonmin::TMINLP2TNLPQuadCuts::removeCuts(), and TMINLP2TNLP().

vector<Number> Bonmin::TMINLP2TNLP::g_u_ [protected]

Upper bounds on constraints values.

Definition at line 403 of file BonTMINLP2TNLP.hpp.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), check_solution(), g_u(), get_bounds_info(), gutsOfCopy(), num_constraints(), Bonmin::TMINLP2TNLPQuadCuts::removeCuts(), and TMINLP2TNLP().

vector<Number> Bonmin::TMINLP2TNLP::x_init_ [protected]

Initial primal point.

Definition at line 405 of file BonTMINLP2TNLP.hpp.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), get_starting_point(), gutsOfCopy(), resetStartingPoint(), setDualInit(), setDualsInit(), SetStartingPoint(), setxInit(), TMINLP2TNLP(), and x_init().

Number* Bonmin::TMINLP2TNLP::duals_init_ [protected]

Initial values for all dual multipliers (constraints then lower bounds then upper bounds).

Definition at line 407 of file BonTMINLP2TNLP.hpp.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), duals_init(), get_starting_point(), gutsOfCopy(), setDualInit(), setDualsInit(), and TMINLP2TNLP().

vector<Number> Bonmin::TMINLP2TNLP::x_init_user_ [protected]

User-provideed initial prmal point.

Definition at line 409 of file BonTMINLP2TNLP.hpp.

Referenced by gutsOfCopy(), resetStartingPoint(), TMINLP2TNLP(), and x_init_user().

vector<Number> Bonmin::TMINLP2TNLP::x_sol_ [protected]

Optimal solution.

Definition at line 411 of file BonTMINLP2TNLP.hpp.

Referenced by check_solution(), finalize_solution(), force_fractionnal_sol(), gutsOfCopy(), Set_x_sol(), and x_sol().

vector<Number> Bonmin::TMINLP2TNLP::g_sol_ [protected]

Activities of constraint g( x_sol_).

Definition at line 413 of file BonTMINLP2TNLP.hpp.

Referenced by check_solution(), finalize_solution(), g_sol(), and gutsOfCopy().

vector<Number> Bonmin::TMINLP2TNLP::duals_sol_ [protected]

Dual multipliers of constraints and bounds.

Definition at line 415 of file BonTMINLP2TNLP.hpp.

Referenced by Bonmin::TMINLP2TNLPQuadCuts::addCuts(), Bonmin::TMINLP2TNLPQuadCuts::addRowCuts(), duals_sol(), finalize_solution(), and gutsOfCopy().

SmartPtr<TMINLP> Bonmin::TMINLP2TNLP::tminlp_ [private]

pointer to the tminlp that is being adapted

Definition at line 445 of file BonTMINLP2TNLP.hpp.

Referenced by eval_f(), eval_g(), eval_gi(), eval_grad_f(), eval_grad_gi(), eval_h(), eval_jac_g(), evaluateUpperBoundingFunction(), get_constraints_linearity(), get_scaling_parameters(), hasLinearObjective(), hasUpperBoundingObjective(), operator=(), and TMINLP2TNLP().

Index Bonmin::TMINLP2TNLP::nnz_jac_g_ [private]

Number of non-zeroes in the constraints jacobian.

Definition at line 450 of file BonTMINLP2TNLP.hpp.

Referenced by get_nlp_info(), nnz_jac_g(), operator=(), and TMINLP2TNLP().

Index Bonmin::TMINLP2TNLP::nnz_h_lag_ [private]

Number of non-zeroes in the lagrangian hessian.

Definition at line 452 of file BonTMINLP2TNLP.hpp.

Referenced by get_nlp_info(), nnz_h_lag(), operator=(), and TMINLP2TNLP().

TNLP::IndexStyleEnum Bonmin::TMINLP2TNLP::index_style_ [private]

index style (fortran or C)

Definition at line 454 of file BonTMINLP2TNLP.hpp.

Referenced by get_nlp_info(), index_style(), operator=(), and TMINLP2TNLP().

SolverReturn Bonmin::TMINLP2TNLP::return_status_ [private]

Return status of the optimization process.

Definition at line 457 of file BonTMINLP2TNLP.hpp.

Referenced by finalize_solution(), operator=(), and optimization_status().

Number Bonmin::TMINLP2TNLP::obj_value_ [private]

Value of the optimal solution found by Ipopt.

Definition at line 459 of file BonTMINLP2TNLP.hpp.

Referenced by check_solution(), finalize_solution(), obj_value(), operator=(), and set_obj_value().

SmartPtr<IpoptInteriorWarmStarter> Bonmin::TMINLP2TNLP::curr_warm_starter_ [private]

Pointer to object that holds warmstart information.

Definition at line 465 of file BonTMINLP2TNLP.hpp.

Referenced by finalize_solution(), get_warm_start_iterate(), GetWarmStarter(), intermediate_callback(), operator=(), resetStartingPoint(), and SetWarmStarter().

Number Bonmin::TMINLP2TNLP::nlp_lower_bound_inf_ [private]

Value for a lower bound that denotes -infinity.

Definition at line 467 of file BonTMINLP2TNLP.hpp.

Referenced by intermediate_callback(), operator=(), and TMINLP2TNLP().

Number Bonmin::TMINLP2TNLP::nlp_upper_bound_inf_ [private]

Value for a upper bound that denotes infinity.

Definition at line 469 of file BonTMINLP2TNLP.hpp.

Referenced by intermediate_callback(), operator=(), and TMINLP2TNLP().

bool Bonmin::TMINLP2TNLP::warm_start_entire_iterate_ [private]

Option from Ipopt - we currently use it to see if we want to use some clever warm start or just the last iterate from the previous run.

Definition at line 473 of file BonTMINLP2TNLP.hpp.

Referenced by intermediate_callback(), operator=(), and TMINLP2TNLP().

bool Bonmin::TMINLP2TNLP::need_new_warm_starter_ [private]

Do we need a new warm starter object.

Definition at line 475 of file BonTMINLP2TNLP.hpp.

Referenced by get_starting_point(), get_warm_start_iterate(), intermediate_callback(), and operator=().


The documentation for this class was generated from the following files:
Generated on Thu Aug 5 03:12:28 2010 by  doxygen 1.4.7