ClpEventHandler.hpp

Go to the documentation of this file.
00001 /* $Id: ClpEventHandler.hpp 1825 2011-11-20 16:02:57Z forrest $ */
00002 // Copyright (C) 2004, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 // This code is licensed under the terms of the Eclipse Public License (EPL).
00005 
00006 #ifndef ClpEventHandler_H
00007 #define ClpEventHandler_H
00008 
00009 #include "ClpSimplex.hpp"
00027 class ClpEventHandler  {
00028 
00029 public:
00034      enum Event {
00035           endOfIteration = 100, // used to set secondary status
00036           endOfFactorization, // after gutsOfSolution etc
00037           endOfValuesPass,
00038           node, // for Cbc
00039           treeStatus, // for Cbc
00040           solution, // for Cbc
00041           theta, // hit in parametrics
00042           pivotRow, // used to choose pivot row
00043           presolveStart, // ClpSolve presolve start
00044           presolveSize, // sees if ClpSolve presolve too big or too small
00045           presolveInfeasible, // ClpSolve presolve infeasible
00046           presolveBeforeSolve, // ClpSolve presolve before solve
00047           presolveAfterFirstSolve, // ClpSolve presolve after solve
00048           presolveAfterSolve, // ClpSolve presolve after solve
00049           presolveEnd, // ClpSolve presolve end
00050           goodFactorization, // before gutsOfSolution
00051           complicatedPivotIn, // in modifyCoefficients
00052           noCandidateInPrimal, // tentative end
00053           looksEndInPrimal, // About to declare victory (or defeat)
00054           endInPrimal, // Victory (or defeat)
00055           beforeStatusOfProblemInPrimal,
00056           startOfStatusOfProblemInPrimal,
00057           complicatedPivotOut, // in modifyCoefficients
00058           noCandidateInDual, // tentative end
00059           looksEndInDual, // About to declare victory (or defeat)
00060           endInDual, // Victory (or defeat)
00061           beforeStatusOfProblemInDual,
00062           startOfStatusOfProblemInDual,
00063           startOfIterationInDual,
00064           updateDualsInDual,
00065           endOfCreateRim,
00066           slightlyInfeasible,
00067           modifyMatrixInMiniPresolve,
00068           moreMiniPresolve,
00069           modifyMatrixInMiniPostsolve,
00070           noTheta // At end (because no pivot)
00071      };
00082      virtual int event(Event whichEvent);
00086      virtual int eventWithInfo(Event whichEvent, void * info) ;
00088 
00089 
00094      ClpEventHandler(ClpSimplex * model = NULL);
00096      virtual ~ClpEventHandler();
00097      // Copy
00098      ClpEventHandler(const ClpEventHandler&);
00099      // Assignment
00100      ClpEventHandler& operator=(const ClpEventHandler&);
00102      virtual ClpEventHandler * clone() const;
00103 
00105 
00110      void setSimplex(ClpSimplex * model);
00112      inline ClpSimplex * simplex() const {
00113           return model_;
00114      }
00116 
00117 
00118 protected:
00122 
00123      ClpSimplex * model_;
00125 };
00133 class ClpDisasterHandler  {
00134 
00135 public:
00139 
00140      virtual void intoSimplex() = 0;
00142      virtual bool check() const = 0;
00144      virtual void saveInfo() = 0;
00146      virtual int typeOfDisaster();
00148 
00149 
00154      ClpDisasterHandler(ClpSimplex * model = NULL);
00156      virtual ~ClpDisasterHandler();
00157      // Copy
00158      ClpDisasterHandler(const ClpDisasterHandler&);
00159      // Assignment
00160      ClpDisasterHandler& operator=(const ClpDisasterHandler&);
00162      virtual ClpDisasterHandler * clone() const = 0;
00163 
00165 
00170      void setSimplex(ClpSimplex * model);
00172      inline ClpSimplex * simplex() const {
00173           return model_;
00174      }
00176 
00177 
00178 protected:
00182 
00183      ClpSimplex * model_;
00185 };
00186 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 4 Jul 2014 for Clp by  doxygen 1.6.1