ROC++  v1.2
Automatic Robust Optimization in C++
ConstraintIF Class Referenceabstract

Constraint interface class. More...

#include <Constraint.hpp>

Inheritance diagram for ConstraintIF:

Public Types

typedef dvMapType::const_iterator varsIterator
 Constant iterator in decision variable map. More...
 

Public Member Functions

 ConstraintIF (bool definesUncertaintySet, bool isNAC=false)
 Constructor of the constraint interface class. More...
 
virtual ~ConstraintIF ()
 Destructor of the constraint interface class. More...
 
virtual varsIterator varsBegin () const =0
 Return a constant iterator pointing to the beginning of the decision variable map. More...
 
virtual varsIterator varsEnd () const =0
 Return a constant iterator pointing to the end of the decision variable map. More...
 
virtual ROCPPConstraintIF_Ptr mapVars (const map< string, ROCPPExpr_Ptr > &mapFromVarToExpression) const =0
 Map the decision variables in this constraint to new variables. More...
 
virtual ROCPPConstraintIF_Ptr mapUncs (const map< string, ROCPPExpr_Ptr > &mapFromUncToExpression) const =0
 Map the uncertain parameters in this constraint to new uncertain parameters. More...
 
virtual ROCPPConstraintIF_Ptr replaceTermWithVar (const multimap< string, ROCPPVarIF_Ptr > &term, ROCPPVarIF_Ptr var) const =0
 Replace the given term in this expression with the given decision variable. More...
 
virtual ROCPPConstraintIF_Ptr replaceBilinearTerm (map< pair< string, string >, ROCPPVarIF_Ptr > &allTerm, uint &count) const =0
 Replace the bilinear term in this objecet with the given decision variable. More...
 
virtual ROCPPConstraintIF_Ptr mapVars (const map< string, ROCPPVarIF_Ptr > &mapFromOldToNewVars) const =0
 Map the decision variables in this constraint to some expressions. More...
 
virtual ROCPPConstraintIF_Ptr mapUnc (const map< string, ROCPPUnc_Ptr > &mapFromOldToNewUnc) const =0
 Map the uncertain parameters in this constraint to some expressions. More...
 
virtual void add_vars_involved_in_prod (dvContainer &dvs) const =0
 Add the decisions variables involved in a product in this term to the given container dvs. More...
 
virtual void add_int_vars (dvContainer &dvs) const =0
 Add the integer variables in this term to the given container. More...
 
virtual uint getNumTimesTermAppears (const multimap< string, ROCPPVarIF_Ptr > &term) const =0
 Get the number of times the term given in the multimap appears in this constraint. More...
 
virtual void getAllProductsOf2Variables (map< pair< string, string >, uint > &freqMap, map< pair< string, string >, multimap< string, ROCPPVarIF_Ptr > > &termMap) const =0
 Get the all products of two variables in this constraint. More...
 
virtual ROCPPconstdvContainer_Ptr getDVContainer () const =0
 Get the decision variable container of this constraint. More...
 
virtual ROCPPconstuncContainer_Ptr getUncContainer () const =0
 Get the uncertain parameter container of this constraint. More...
 
virtual uint getNumContVars () const =0
 Get the number of real-valued decision variables in this constraint. More...
 
virtual uint getNumIntVars () const =0
 Get the number of integer decision variables in this constraint. More...
 
virtual uint getNumBoolVars () const =0
 Get the number of boolean variables in this constraint. More...
 
virtual uint getNumAdaptiveContVars () const =0
 Get the number of adaptive real-valued decision variables in this constraint. More...
 
virtual uint getNumAdaptiveVars () const =0
 Get the number of adaptive decision variables in this constraint. More...
 
virtual uint getTimeStage () const =0
 Get the maximum time-stage of any decision variable in the constraint. More...
 
virtual size_t getNumUncertainties () const =0
 Get the number of uncertaint parameters in the constraint. More...
 
virtual bool hasNonlinearities () const =0
 Return true if and only if there is a product between two decision variables in this constraint. More...
 
virtual bool hasProdsUncertainties () const =0
 Return true if and only if the constraint involves a product of uncertain parameters. More...
 
virtual bool hasProdsContVars () const =0
 Return true if and only if there is a product between two real-valued decision variables in this constraint. More...
 
virtual bool isWellDefined () const =0
 Return true if and only if this object is not empty. More...
 
bool definesUncertaintySet () const
 Return true if and only if this constraint defines the uncertainty set. More...
 
bool isDeterministic () const
 Return true if and only if this constraint does not involve any uncertain parameters. More...
 
virtual bool isUseful (double epsilon=1.e-10) const
 Return false if and only if the left hand side is constant and the left and right hand side constants are equal, within epsilon (this constraint can be deleted) More...
 
bool isNAC () const
 Return true if and only if the constraint is a non-anticipativity constraint (useful for problems with decision-dependent information discovery) More...
 
virtual bool hasNoDVs () const =0
 Return true if and only if the constraint has no decision variables. More...
 
virtual bool isClassicConstraint () const
 Return true if and only if the constraint is a classic (equality or inequality) constraint. More...
 
virtual bool isSOSConstraint () const
 Return true if and only if the constraint is SOS. More...
 
virtual bool isIfThenConstraint () const
 Return true if and only if the constraint is a logical if then constraint (useful in CPLEX solver) More...
 
virtual bool AnyVarIsInvolved (dvContainer &dvs) const =0
 Find if any decision variable in the container dvs exists in this object. More...
 
virtual bool hasNormTerm () const =0
 Return true if and only if the constraint has a norm term. More...
 
void setParams (bool defUncertaintyset, bool isNAC)
 Set the paramaters of this constraint. More...
 
virtual ROCPPConstraintIF_Ptr Clone () const =0
 Set the right hand side of this constraint. More...
 
virtual void WriteToStream (ofstream &ofs, uint cnt) const =0
 Write the constraint to a stream. More...
 

Protected Attributes

bool m_definesUncertaintySet
 Indicate whether this constraint defines uncertainty set or not. More...
 
bool m_isNAC
 Indicate whether this constraint is a non-anticipativity constraint or not. More...
 

Detailed Description

Constraint interface class.

Member Typedef Documentation

◆ varsIterator

typedef dvMapType::const_iterator ConstraintIF::varsIterator

Constant iterator in decision variable map.

Constructor & Destructor Documentation

◆ ConstraintIF()

ConstraintIF::ConstraintIF ( bool  definesUncertaintySet,
bool  isNAC = false 
)

Constructor of the constraint interface class.

Parameters
definesUncertaintySetboolean variable, indicates if this constraint defines the uncertainty set or not
isNACboolean variable, indicates if this constraint is a non-anticipativity constraint or not

◆ ~ConstraintIF()

virtual ConstraintIF::~ConstraintIF ( )
inlinevirtual

Destructor of the constraint interface class.

Member Function Documentation

◆ add_int_vars()

virtual void ConstraintIF::add_int_vars ( dvContainer dvs) const
pure virtual

Add the integer variables in this term to the given container.

Implemented in ClassicConstraintIF.

◆ add_vars_involved_in_prod()

virtual void ConstraintIF::add_vars_involved_in_prod ( dvContainer dvs) const
pure virtual

Add the decisions variables involved in a product in this term to the given container dvs.

Implemented in ClassicConstraintIF.

◆ AnyVarIsInvolved()

virtual bool ConstraintIF::AnyVarIsInvolved ( dvContainer dvs) const
pure virtual

Find if any decision variable in the container dvs exists in this object.

Note
Calls dvContainer::AnyVarIsInvolved()

Implemented in ClassicConstraintIF.

◆ Clone()

virtual ROCPPConstraintIF_Ptr ConstraintIF::Clone ( ) const
pure virtual

Set the right hand side of this constraint.

Note
Only valid in classic constraint Return a copy of this constraint

Implemented in ClassicConstraintIF.

◆ definesUncertaintySet()

bool ConstraintIF::definesUncertaintySet ( ) const
inline

Return true if and only if this constraint defines the uncertainty set.

◆ getAllProductsOf2Variables()

virtual void ConstraintIF::getAllProductsOf2Variables ( map< pair< string, string >, uint > &  freqMap,
map< pair< string, string >, multimap< string, ROCPPVarIF_Ptr > > &  termMap 
) const
pure virtual

Get the all products of two variables in this constraint.

Implemented in ClassicConstraintIF.

◆ getDVContainer()

virtual ROCPPconstdvContainer_Ptr ConstraintIF::getDVContainer ( ) const
pure virtual

Get the decision variable container of this constraint.

Implemented in ClassicConstraintIF.

◆ getNumAdaptiveContVars()

virtual uint ConstraintIF::getNumAdaptiveContVars ( ) const
pure virtual

Get the number of adaptive real-valued decision variables in this constraint.

Implemented in ClassicConstraintIF.

◆ getNumAdaptiveVars()

virtual uint ConstraintIF::getNumAdaptiveVars ( ) const
pure virtual

Get the number of adaptive decision variables in this constraint.

Implemented in ClassicConstraintIF.

◆ getNumBoolVars()

virtual uint ConstraintIF::getNumBoolVars ( ) const
pure virtual

Get the number of boolean variables in this constraint.

Implemented in ClassicConstraintIF.

◆ getNumContVars()

virtual uint ConstraintIF::getNumContVars ( ) const
pure virtual

Get the number of real-valued decision variables in this constraint.

Implemented in ClassicConstraintIF.

◆ getNumIntVars()

virtual uint ConstraintIF::getNumIntVars ( ) const
pure virtual

Get the number of integer decision variables in this constraint.

Implemented in ClassicConstraintIF.

◆ getNumTimesTermAppears()

virtual uint ConstraintIF::getNumTimesTermAppears ( const multimap< string, ROCPPVarIF_Ptr > &  term) const
pure virtual

Get the number of times the term given in the multimap appears in this constraint.

Parameters
termmultimap from the name of the decision variable to the desicion variable used to define this term
Note
The same decision variable may appear many times in a term (indicating that we have a product of the same variable)

Implemented in ClassicConstraintIF.

◆ getNumUncertainties()

virtual size_t ConstraintIF::getNumUncertainties ( ) const
pure virtual

Get the number of uncertaint parameters in the constraint.

Implemented in ClassicConstraintIF.

◆ getTimeStage()

virtual uint ConstraintIF::getTimeStage ( ) const
pure virtual

Get the maximum time-stage of any decision variable in the constraint.

Implemented in ClassicConstraintIF.

◆ getUncContainer()

virtual ROCPPconstuncContainer_Ptr ConstraintIF::getUncContainer ( ) const
pure virtual

Get the uncertain parameter container of this constraint.

Implemented in ClassicConstraintIF.

◆ hasNoDVs()

virtual bool ConstraintIF::hasNoDVs ( ) const
pure virtual

Return true if and only if the constraint has no decision variables.

Implemented in ClassicConstraintIF.

◆ hasNonlinearities()

virtual bool ConstraintIF::hasNonlinearities ( ) const
pure virtual

Return true if and only if there is a product between two decision variables in this constraint.

Implemented in ClassicConstraintIF.

◆ hasNormTerm()

virtual bool ConstraintIF::hasNormTerm ( ) const
pure virtual

Return true if and only if the constraint has a norm term.

Implemented in ClassicConstraintIF.

◆ hasProdsContVars()

virtual bool ConstraintIF::hasProdsContVars ( ) const
pure virtual

Return true if and only if there is a product between two real-valued decision variables in this constraint.

Implemented in ClassicConstraintIF.

◆ hasProdsUncertainties()

virtual bool ConstraintIF::hasProdsUncertainties ( ) const
pure virtual

Return true if and only if the constraint involves a product of uncertain parameters.

Implemented in ClassicConstraintIF.

◆ isClassicConstraint()

virtual bool ConstraintIF::isClassicConstraint ( ) const
inlinevirtual

Return true if and only if the constraint is a classic (equality or inequality) constraint.

Reimplemented in ClassicConstraintIF.

◆ isDeterministic()

bool ConstraintIF::isDeterministic ( ) const
inline

Return true if and only if this constraint does not involve any uncertain parameters.

◆ isIfThenConstraint()

virtual bool ConstraintIF::isIfThenConstraint ( ) const
inlinevirtual

Return true if and only if the constraint is a logical if then constraint (useful in CPLEX solver)

◆ isNAC()

bool ConstraintIF::isNAC ( ) const
inline

Return true if and only if the constraint is a non-anticipativity constraint (useful for problems with decision-dependent information discovery)

◆ isSOSConstraint()

virtual bool ConstraintIF::isSOSConstraint ( ) const
inlinevirtual

Return true if and only if the constraint is SOS.

◆ isUseful()

virtual bool ConstraintIF::isUseful ( double  epsilon = 1.e-10) const
inlinevirtual

Return false if and only if the left hand side is constant and the left and right hand side constants are equal, within epsilon (this constraint can be deleted)

Reimplemented in EqConstraint.

◆ isWellDefined()

virtual bool ConstraintIF::isWellDefined ( ) const
pure virtual

Return true if and only if this object is not empty.

Implemented in ClassicConstraintIF.

◆ mapUnc()

virtual ROCPPConstraintIF_Ptr ConstraintIF::mapUnc ( const map< string, ROCPPUnc_Ptr > &  mapFromOldToNewUnc) const
pure virtual

Map the uncertain parameters in this constraint to some expressions.

Implemented in ClassicConstraintIF.

◆ mapUncs()

virtual ROCPPConstraintIF_Ptr ConstraintIF::mapUncs ( const map< string, ROCPPExpr_Ptr > &  mapFromUncToExpression) const
pure virtual

Map the uncertain parameters in this constraint to new uncertain parameters.

Implemented in ClassicConstraintIF.

◆ mapVars() [1/2]

virtual ROCPPConstraintIF_Ptr ConstraintIF::mapVars ( const map< string, ROCPPExpr_Ptr > &  mapFromVarToExpression) const
pure virtual

Map the decision variables in this constraint to new variables.

Implemented in ClassicConstraintIF.

◆ mapVars() [2/2]

virtual ROCPPConstraintIF_Ptr ConstraintIF::mapVars ( const map< string, ROCPPVarIF_Ptr > &  mapFromOldToNewVars) const
pure virtual

Map the decision variables in this constraint to some expressions.

Implemented in ClassicConstraintIF.

◆ replaceBilinearTerm()

virtual ROCPPConstraintIF_Ptr ConstraintIF::replaceBilinearTerm ( map< pair< string, string >, ROCPPVarIF_Ptr > &  allTerm,
uint count 
) const
pure virtual

Replace the bilinear term in this objecet with the given decision variable.

Implemented in ClassicConstraintIF.

◆ replaceTermWithVar()

virtual ROCPPConstraintIF_Ptr ConstraintIF::replaceTermWithVar ( const multimap< string, ROCPPVarIF_Ptr > &  term,
ROCPPVarIF_Ptr  var 
) const
pure virtual

Replace the given term in this expression with the given decision variable.

Implemented in ClassicConstraintIF.

◆ setParams()

void ConstraintIF::setParams ( bool  defUncertaintyset,
bool  isNAC 
)
inline

Set the paramaters of this constraint.

Parameters
defUncertaintysetparameter to indicate if this constraint defines the uncertainty set or not
isNACparameter to indicate if this constraint is a non-anticipativity constraint or not

◆ varsBegin()

virtual varsIterator ConstraintIF::varsBegin ( ) const
pure virtual

Return a constant iterator pointing to the beginning of the decision variable map.

Implemented in ClassicConstraintIF.

◆ varsEnd()

virtual varsIterator ConstraintIF::varsEnd ( ) const
pure virtual

Return a constant iterator pointing to the end of the decision variable map.

Implemented in ClassicConstraintIF.

◆ WriteToStream()

virtual void ConstraintIF::WriteToStream ( ofstream &  ofs,
uint  cnt 
) const
pure virtual

Write the constraint to a stream.

Parameters
ofsoutput file stream
cntnumber (counter) of the constraint

Implemented in ClassicConstraintIF.

Member Data Documentation

◆ m_definesUncertaintySet

bool ConstraintIF::m_definesUncertaintySet
protected

Indicate whether this constraint defines uncertainty set or not.

◆ m_isNAC

bool ConstraintIF::m_isNAC
protected

Indicate whether this constraint is a non-anticipativity constraint or not.