Minotaur 0.4.1
Docs for developers
PerspList.h
Go to the documentation of this file.
1//
2// Minotaur -- It's only 1/2 bull
3//
4// (C)opyright 2008 - 2025 The Minotaur Team.
5//
6
7
14#ifndef MINOTAURPERSPLIST_H
15#define MINOTAURPERSPLIST_H
16
17#include <map>
18#include <fstream>
19using std::ofstream;
20#include <string>
21using std::string;
22
23#include "Relaxation.h"
24#include "Constraint.h"
25#include "Variable.h"
26#include "Types.h"
27#include "Environment.h"
28
29namespace Minotaur {
30
32 {
33 UInt totalcons; // Total number of constraints checked.
34 UInt totalpersp; // Total number of perspective constraints obtained.
35 };
36
37 class PerspList;
38 typedef PerspList* PerspListPtr;
39 typedef const PerspList* ConstPerspListPtr;
41 typedef PerspListStats const * ConstPerspListStatsPtr;
42
43 typedef std::map<VariablePtr, std::pair<ConstConstraintPtr, ConstConstraintPtr> > VarUbLb;
44 typedef VarUbLb* VarUbLbPtr;
45 typedef std::pair<ConstConstraintPtr, ConstVariablePtr> ConsVar;
46 //typedef std::map<ConstConstraintPtr, VarUbLbPtr> PerspCons;
47 typedef std::map<ConsVar, VarUbLbPtr> PerspCons;
48 typedef PerspCons* PerspConsPtr;
49 typedef const PerspCons* ConstPerspConsPtr;
50
55 class PerspList {
56 public:
58 PerspList();
59
62
64 ~PerspList();
65
67 bool evalConstraint(ConstConstraintPtr cons, VarUbLbPtr boundcons,
68 VariablePtr& binvar);
69
74
77 bool checkVarTypes(const FunctionPtr f, ConstVariablePtr& binvar);
78
80 bool checkVarsBounds(const FunctionPtr f, ConstVariablePtr binvar,
81 VarUbLbPtr boundcons);
82
85 VarUbLbPtr varbounds);
86
88 void addConstraint(ConstConstraintPtr cons, VarUbLbPtr boundcons,
89 VariablePtr binvar);
90
92 void generateList();
93
96 bool initialBinary(ConstVariablePtr var, VarSetPtr binaries);
97
99 UInt getNumPersp() const {return list_->size();};
100
102 UInt getNumConsChecked() const {return stats_->totalcons;};
103
105 ConstPerspListStatsPtr getStats() const {return stats_;};
106
108 ConstPerspConsPtr getPerspCons() const {return list_;};
109
111 void printPersp(ConstConstraintPtr cons, VarUbLbPtr boundcons,
112 ConstVariablePtr binvar);
113
114 private:
116 EnvPtr env_;
118 RelaxationPtr rel_;
120 PerspConsPtr list_;
122 PerspListStatsPtr stats_;
124 ofstream output_;
126 string outfile_;
127 }; // end of class PerspList.
128
129
130} // end of namespace.
131
132
133
134#endif // MINOTAURPERSPLIST_H
135
136
137
138
Get information about a constraint in a given Problem.
Define the Environment class.
Declare the class Relaxation for storing and manipulating relaxations.
Declare important 'types' used in Minotaur.
Define the Variable class.
The Constraint class is used to manage a constraint.
Definition: Constraint.h:61
Definition: Environment.h:28
Definition: Function.h:37
Definition: PerspList.h:55
ConstPerspConsPtr getPerspCons() const
Get a pointer to the vector that constains perspective constraints.
Definition: PerspList.h:108
bool checkVarTypes(const FunctionPtr f, ConstVariablePtr &binvar)
Definition: PerspList.cpp:330
ConstPerspListStatsPtr getStats() const
Get the statistics aboud perspective identification.
Definition: PerspList.h:105
bool initialBinary(ConstVariablePtr var, VarSetPtr binaries)
Definition: PerspList.cpp:389
~PerspList()
Destructor.
Definition: PerspList.cpp:449
void generateList()
Generate list of perspective constraints.
Definition: PerspList.cpp:59
void addConstraint(ConstConstraintPtr cons, VarUbLbPtr boundcons, VariablePtr binvar)
Add a constraint to the lists.
Definition: PerspList.cpp:93
UInt getNumPersp() const
Get total number of perspective constraints.
Definition: PerspList.h:99
bool checkVarsBounds(const FunctionPtr f, ConstVariablePtr binvar, VarUbLbPtr boundcons)
Checks if the variables are bounded by only one binary variable.
Definition: PerspList.cpp:191
bool evalConstraint(ConstConstraintPtr cons, VarUbLbPtr boundcons, VariablePtr &binvar)
Checks if a constraint is a Perspective constraint.
Definition: PerspList.cpp:99
bool separable(ConstConstraintPtr cons, ConstVariablePtr binvar)
Definition: PerspList.cpp:171
PerspList()
Default constructor.
Definition: PerspList.cpp:34
UInt getNumConsChecked() const
Get total number of constraints checked.
Definition: PerspList.h:102
void printPersp(ConstConstraintPtr cons, VarUbLbPtr boundcons, ConstVariablePtr binvar)
Print out the perspective structure.
Definition: PerspList.cpp:458
bool checkVarBounds(ConstVariablePtr var, ConstVariablePtr binvar, VarUbLbPtr varbounds)
Checks if a given variable is bounded by binary variable.
Definition: PerspList.cpp:215
Definition: Relaxation.h:53
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
Definition: PerspList.h:32

Minotaur source code documented by Doxygen 1.9.4 on Thu Apr 24 2025