Cgl 0.60.2

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ClpEventHandler.hpp
Go to the documentation of this file.
1 /* $Id: ClpEventHandler.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
2 // Copyright (C) 2004, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5
6 #ifndef ClpEventHandler_H
7 #define ClpEventHandler_H
8
9 #include "ClpSimplex.hpp"
27 class ClpEventHandler {
28
29 public:
34 enum Event {
35 endOfIteration = 100, // used to set secondary status
36 endOfFactorization, // after gutsOfSolution etc
37 endOfValuesPass,
38 node, // for Cbc
39 treeStatus, // for Cbc
40 solution, // for Cbc
41 theta, // hit in parametrics
42 pivotRow, // used to choose pivot row
43 presolveStart, // ClpSolve presolve start
44 presolveSize, // sees if ClpSolve presolve too big or too small
45 presolveInfeasible, // ClpSolve presolve infeasible
46 presolveBeforeSolve, // ClpSolve presolve before solve
47 presolveAfterFirstSolve, // ClpSolve presolve after solve
48 presolveAfterSolve, // ClpSolve presolve after solve
49 presolveEnd, // ClpSolve presolve end
50 goodFactorization, // before gutsOfSolution
51 complicatedPivotIn, // in modifyCoefficients
52 noCandidateInPrimal, // tentative end
53 looksEndInPrimal, // About to declare victory (or defeat)
54 endInPrimal, // Victory (or defeat)
55 beforeStatusOfProblemInPrimal,
56 startOfStatusOfProblemInPrimal,
57 complicatedPivotOut, // in modifyCoefficients
58 noCandidateInDual, // tentative end
59 looksEndInDual, // About to declare victory (or defeat)
60 endInDual, // Victory (or defeat)
61 beforeStatusOfProblemInDual,
62 startOfStatusOfProblemInDual,
63 startOfIterationInDual,
64 updateDualsInDual,
65 beforeDeleteRim,
66 endOfCreateRim,
67 slightlyInfeasible,
68 modifyMatrixInMiniPresolve,
69 moreMiniPresolve,
70 modifyMatrixInMiniPostsolve,
71 beforeChooseIncoming,
72 afterChooseIncoming,
73 beforeCreateNonLinear,
74 afterCreateNonLinear,
75 startOfCrossover, // in Idiot
76 noTheta // At end (because no pivot)
77 };
88 virtual int event(Event whichEvent);
92 virtual int eventWithInfo(Event whichEvent, void *info);
94
99 ClpEventHandler(ClpSimplex *model = NULL);
101 virtual ~ClpEventHandler();
102 // Copy
103 ClpEventHandler(const ClpEventHandler &);
104 // Assignment
105 ClpEventHandler &operator=(const ClpEventHandler &);
107 virtual ClpEventHandler *clone() const;
108
110
115 void setSimplex(ClpSimplex *model);
117 inline ClpSimplex *simplex() const
118 {
119 return model_;
120 }
122
123 protected:
127 ClpSimplex *model_;
130 };
138 class ClpDisasterHandler {
139
140 public:
144 virtual void intoSimplex() = 0;
147 virtual bool check() const = 0;
149 virtual void saveInfo() = 0;
151 virtual int typeOfDisaster();
153
158 ClpDisasterHandler(ClpSimplex *model = NULL);
160 virtual ~ClpDisasterHandler();
161 // Copy
162 ClpDisasterHandler(const ClpDisasterHandler &);
163 // Assignment
164 ClpDisasterHandler &operator=(const ClpDisasterHandler &);
166 virtual ClpDisasterHandler *clone() const = 0;
167
169
174 void setSimplex(ClpSimplex *model);
176 inline ClpSimplex *simplex() const
177 {
178 return model_;
179 }
181
182 protected:
186 ClpSimplex *model_;
189 };
190 #endif
191
192 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
193 */
ClpEventHandler::ClpEventHandler
ClpEventHandler(ClpSimplex *model=NULL)
Default constructor.
ClpEventHandler::Event
Event
enums for what sort of event.
Definition: ClpEventHandler.hpp:34
ClpEventHandler::beforeDeleteRim
Definition: ClpEventHandler.hpp:65
ClpSimplex.hpp
ClpEventHandler::presolveStart
Definition: ClpEventHandler.hpp:43
ClpEventHandler::moreMiniPresolve
Definition: ClpEventHandler.hpp:69
ClpEventHandler::operator=
ClpEventHandler & operator=(const ClpEventHandler &)
ClpEventHandler::endInDual
Definition: ClpEventHandler.hpp:60
ClpEventHandler::presolveAfterFirstSolve
Definition: ClpEventHandler.hpp:47
ClpEventHandler::endOfIteration
Definition: ClpEventHandler.hpp:35
ClpDisasterHandler
Base class for Clp disaster handling.
Definition: ClpEventHandler.hpp:138
ClpEventHandler::clone
virtual ClpEventHandler * clone() const
Clone.
ClpEventHandler::looksEndInPrimal
Definition: ClpEventHandler.hpp:53
ClpEventHandler::noTheta
Definition: ClpEventHandler.hpp:76
ClpDisasterHandler::~ClpDisasterHandler
virtual ~ClpDisasterHandler()
Destructor.
ClpDisasterHandler::typeOfDisaster
virtual int typeOfDisaster()
Type of disaster 0 can fix, 1 abort.
ClpEventHandler::presolveEnd
Definition: ClpEventHandler.hpp:49
ClpDisasterHandler::ClpDisasterHandler
ClpDisasterHandler(ClpSimplex *model=NULL)
Default constructor.
ClpEventHandler::updateDualsInDual
Definition: ClpEventHandler.hpp:64
ClpEventHandler::beforeCreateNonLinear
Definition: ClpEventHandler.hpp:73
ClpEventHandler::model_
ClpSimplex * model_
Pointer to simplex.
Definition: ClpEventHandler.hpp:128
ClpEventHandler::treeStatus
Definition: ClpEventHandler.hpp:39
ClpEventHandler::noCandidateInDual
Definition: ClpEventHandler.hpp:58
ClpEventHandler::event
virtual int event(Event whichEvent)
This can do whatever it likes.
ClpEventHandler::modifyMatrixInMiniPostsolve
Definition: ClpEventHandler.hpp:70
ClpEventHandler::afterCreateNonLinear
Definition: ClpEventHandler.hpp:74
ClpEventHandler::complicatedPivotIn
Definition: ClpEventHandler.hpp:51
ClpEventHandler::modifyMatrixInMiniPresolve
Definition: ClpEventHandler.hpp:68
ClpEventHandler::startOfCrossover
Definition: ClpEventHandler.hpp:75
ClpSimplex
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:106
ClpEventHandler::presolveAfterSolve
Definition: ClpEventHandler.hpp:48
ClpEventHandler::startOfStatusOfProblemInPrimal
Definition: ClpEventHandler.hpp:56
ClpEventHandler::beforeStatusOfProblemInDual
Definition: ClpEventHandler.hpp:61
ClpEventHandler::solution
Definition: ClpEventHandler.hpp:40
ClpEventHandler::beforeStatusOfProblemInPrimal
Definition: ClpEventHandler.hpp:55
ClpDisasterHandler::setSimplex
void setSimplex(ClpSimplex *model)
set model.
ClpEventHandler::afterChooseIncoming
Definition: ClpEventHandler.hpp:72
ClpDisasterHandler::check
virtual bool check() const =0
Checks if disaster.
ClpEventHandler::startOfIterationInDual
Definition: ClpEventHandler.hpp:63
ClpEventHandler::endInPrimal
Definition: ClpEventHandler.hpp:54
ClpEventHandler::slightlyInfeasible
Definition: ClpEventHandler.hpp:67
ClpEventHandler::~ClpEventHandler
virtual ~ClpEventHandler()
Destructor.
ClpDisasterHandler::saveInfo
virtual void saveInfo()=0
saves information for next attempt
ClpEventHandler::complicatedPivotOut
Definition: ClpEventHandler.hpp:57
ClpEventHandler::endOfFactorization
Definition: ClpEventHandler.hpp:36
ClpEventHandler
Base class for Clp event handling.
Definition: ClpEventHandler.hpp:27
ClpEventHandler::presolveBeforeSolve
Definition: ClpEventHandler.hpp:46
ClpEventHandler::setSimplex
void setSimplex(ClpSimplex *model)
set model.
ClpDisasterHandler::simplex
ClpSimplex * simplex() const
Get model.
Definition: ClpEventHandler.hpp:176
ClpEventHandler::simplex
ClpSimplex * simplex() const
Get model.
Definition: ClpEventHandler.hpp:117
ClpEventHandler::presolveInfeasible
Definition: ClpEventHandler.hpp:45
ClpEventHandler::looksEndInDual
Definition: ClpEventHandler.hpp:59
ClpEventHandler::node
Definition: ClpEventHandler.hpp:38
ClpDisasterHandler::operator=
ClpDisasterHandler & operator=(const ClpDisasterHandler &)
ClpEventHandler::presolveSize
Definition: ClpEventHandler.hpp:44
ClpEventHandler::pivotRow
Definition: ClpEventHandler.hpp:42
ClpEventHandler::endOfCreateRim
Definition: ClpEventHandler.hpp:66
ClpEventHandler::noCandidateInPrimal
Definition: ClpEventHandler.hpp:52
ClpEventHandler::startOfStatusOfProblemInDual
Definition: ClpEventHandler.hpp:62
ClpEventHandler::endOfValuesPass
Definition: ClpEventHandler.hpp:37
ClpDisasterHandler::intoSimplex
virtual void intoSimplex()=0
Into simplex.
ClpDisasterHandler::clone
virtual ClpDisasterHandler * clone() const =0
Clone.
ClpEventHandler::eventWithInfo
virtual int eventWithInfo(Event whichEvent, void *info)
This can do whatever it likes.
ClpEventHandler::goodFactorization
Definition: ClpEventHandler.hpp:50
ClpEventHandler::beforeChooseIncoming
Definition: ClpEventHandler.hpp:71
ClpDisasterHandler::model_
ClpSimplex * model_
Pointer to simplex.
Definition: ClpEventHandler.hpp:187
ClpEventHandler::theta
Definition: ClpEventHandler.hpp:41