Clp trunk
|
00001 /* $Id$ */ 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, 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 }; 00061 virtual int event(Event whichEvent); 00063 00064 00069 ClpEventHandler(ClpSimplex * model = NULL); 00071 virtual ~ClpEventHandler(); 00072 // Copy 00073 ClpEventHandler(const ClpEventHandler&); 00074 // Assignment 00075 ClpEventHandler& operator=(const ClpEventHandler&); 00077 virtual ClpEventHandler * clone() const; 00078 00080 00085 void setSimplex(ClpSimplex * model); 00087 inline ClpSimplex * simplex() const { 00088 return model_; 00089 } 00091 00092 00093 protected: 00097 00098 ClpSimplex * model_; 00100 }; 00108 class ClpDisasterHandler { 00109 00110 public: 00114 00115 virtual void intoSimplex() = 0; 00117 virtual bool check() const = 0; 00119 virtual void saveInfo() = 0; 00121 virtual int typeOfDisaster(); 00123 00124 00129 ClpDisasterHandler(ClpSimplex * model = NULL); 00131 virtual ~ClpDisasterHandler(); 00132 // Copy 00133 ClpDisasterHandler(const ClpDisasterHandler&); 00134 // Assignment 00135 ClpDisasterHandler& operator=(const ClpDisasterHandler&); 00137 virtual ClpDisasterHandler * clone() const = 0; 00138 00140 00145 void setSimplex(ClpSimplex * model); 00147 inline ClpSimplex * simplex() const { 00148 return model_; 00149 } 00151 00152 00153 protected: 00157 00158 ClpSimplex * model_; 00160 }; 00161 #endif