Minotaur 0.4.1
Docs for developers
LinFeasPump.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//
12#ifndef LINFEASPUMP_H
13#define LINFEASPUMP_H
14
15#include "FeasibilityPump.h"
16#include "Types.h"
17
18namespace Minotaur {
19 class Engine;
20 class LinearFunction;
21 class LinearHandler;
22 class Problem;
23 class QGHandler;
24 typedef Engine* EnginePtr;
25 typedef LinearFunction* LinearFunctionPtr;
26 typedef LinearHandler* LinHandlerPtr;
27 typedef QGHandler* QGHandlerPtr;
28
30 struct LinFeasStats {
31 double bestObjValue;
33 };
34
46
47 public:
48
62
65
67 void solve(NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool);
68
70 void writeStats(std::ostream &out) const;
71
72 protected:
73
75 const static std::string me_;
76
78 double* gradientObj_;
79
82
85
88
92
95
98
101
104
105 // base class method.
107
114 void implementFP_(const double* x, SolutionPoolPtr s_pool);
115
126 double getSolGap_(double f_nlp, double f_feas);
127
137 bool prepareLP_(SolutionPool *sp);
138
153 void separatingCut_(double f_nlp, SolutionPoolPtr s_pool);
154
163 bool shouldFP_();
164
165 };
166
168}
169#endif
170
171// local variables:
172// mode: c++
173// eval: (c-set-style "gnu")
174// eval: (setq indent-tabs-mode nil)
175// end:
Declare the class FeasibilityPump derived from base class Heuristic.
Declare important 'types' used in Minotaur.
The Constraint class is used to manage a constraint.
Definition: Constraint.h:61
Definition: Engine.h:34
Definition: Environment.h:28
Feasibility Pump for MINLPs.
Definition: FeasibilityPump.h:41
Linear Feasibility Pump for MINLPs.
Definition: LinFeasPump.h:45
RelaxationPtr r_
Relaxation Pointer.
Definition: LinFeasPump.h:100
~LinFeasPump()
Default destructor.
Definition: LinFeasPump.cpp:71
QGHandlerPtr qh_
QG Handler.
Definition: LinFeasPump.h:97
void writeStats(std::ostream &out) const
Write statistics to the logger.
Definition: LinFeasPump.cpp:357
bool shouldFP_()
Function to decide whether to use Linear Feasibility Pump.
Definition: LinFeasPump.cpp:306
static const std::string me_
Message name for the heuristic.
Definition: LinFeasPump.h:75
LinFeasPump(EnvPtr env, ProblemPtr p, EnginePtr e1, EnginePtr e2)
Default constructor.
Definition: LinFeasPump.cpp:46
LinearFunctionPtr olfClone_
clone of linear objective function
Definition: LinFeasPump.h:94
LinHandlerPtr lh_
Linear Handler pointer.
Definition: LinFeasPump.h:81
LinFeasStats * statsLFP_
Statistics.
Definition: LinFeasPump.h:103
EnginePtr lpE_
LP Engine to be used to solving linear relaxation.
Definition: LinFeasPump.h:84
void implementFP_(const double *x, SolutionPoolPtr s_pool)
Fucntion to implement the linear feasibility pump.
Definition: LinFeasPump.cpp:123
void solve(NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)
Call to the heuristic.
Definition: LinFeasPump.cpp:341
bool prepareLP_(SolutionPool *sp)
A function to prepare the linear relaxation.
Definition: LinFeasPump.cpp:241
double getSolGap_(double f_nlp, double f_feas)
Calculate the gap between the NLP relaxation solution and integer feasible solution.
Definition: LinFeasPump.cpp:235
void constructObj_(ProblemPtr prob, ConstSolutionPtr sol)
Function to construct/update the objective function.
Definition: LinFeasPump.cpp:80
void separatingCut_(double f_nlp, SolutionPoolPtr s_pool)
This function makes a cut by including the objective as constraint.
Definition: LinFeasPump.cpp:275
VariablePtr objVar_
Definition: LinFeasPump.h:91
double * gradientObj_
gradient of the objective function
Definition: LinFeasPump.h:78
ConstraintPtr objConstraint_
objective improvement constraint pointer
Definition: LinFeasPump.h:87
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: LinearHandler.h:60
Definition: Node.h:54
Definition: Problem.h:74
Handler for convex constraints, based on quesada-grossmann algorithm.
Definition: QGHandler.h:45
Definition: Relaxation.h:53
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
statistics for Linear Feasibility Pump
Definition: LinFeasPump.h:30
UInt numLPs
Objective value for best feasible sol.
Definition: LinFeasPump.h:32

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