Clp 1.17.5
Loading...
Searching...
No Matches
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"
28
29public:
34 enum Event {
35 endOfIteration = 100, // used to set secondary status
36 endOfFactorization, // after gutsOfSolution etc
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)
57 complicatedPivotOut, // in modifyCoefficients
58 noCandidateInDual, // tentative end
59 looksEndInDual, // About to declare victory (or defeat)
60 endInDual, // Victory (or defeat)
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
102 // Copy
104 // Assignment
107 virtual ClpEventHandler *clone() const;
108
110
115 void setSimplex(ClpSimplex *model);
117 inline ClpSimplex *simplex() const
118 {
119 return model_;
120 }
122
123protected:
130};
139
140public:
145 virtual void intoSimplex() = 0;
147 virtual bool check() const = 0;
149 virtual void saveInfo() = 0;
151 virtual int typeOfDisaster();
153
161 // Copy
163 // Assignment
166 virtual ClpDisasterHandler *clone() const = 0;
167
169
174 void setSimplex(ClpSimplex *model);
176 inline ClpSimplex *simplex() const
177 {
178 return model_;
179 }
181
182protected:
189};
190#endif
191
192/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
193*/
Base class for Clp disaster handling.
virtual ClpDisasterHandler * clone() const =0
Clone.
virtual ~ClpDisasterHandler()
Destructor.
virtual void intoSimplex()=0
Into simplex.
ClpDisasterHandler(const ClpDisasterHandler &)
ClpDisasterHandler(ClpSimplex *model=NULL)
Default constructor.
ClpDisasterHandler & operator=(const ClpDisasterHandler &)
virtual bool check() const =0
Checks if disaster.
ClpSimplex * model_
Pointer to simplex.
void setSimplex(ClpSimplex *model)
set model.
virtual void saveInfo()=0
saves information for next attempt
ClpSimplex * simplex() const
Get model.
virtual int typeOfDisaster()
Type of disaster 0 can fix, 1 abort.
Base class for Clp event handling.
virtual int event(Event whichEvent)
This can do whatever it likes.
virtual ClpEventHandler * clone() const
Clone.
ClpSimplex * model_
Pointer to simplex.
virtual int eventWithInfo(Event whichEvent, void *info)
This can do whatever it likes.
void setSimplex(ClpSimplex *model)
set model.
ClpSimplex * simplex() const
Get model.
ClpEventHandler & operator=(const ClpEventHandler &)
virtual ~ClpEventHandler()
Destructor.
ClpEventHandler(ClpSimplex *model=NULL)
Default constructor.
Event
enums for what sort of event.
ClpEventHandler(const ClpEventHandler &)
This solves LPs using the simplex method.