Cbc trunk
|
00001 /* 00002 Copyright (C) 2007, Lou Hafer, International Business Machines Corporation 00003 and others. All Rights Reserved. 00004 00005 This code is licensed under the terms of the Eclipse Public License (EPL). 00006 00007 $Id$ 00008 */ 00009 /* 00010 This file is part of cbc-generic. 00011 */ 00012 00013 #ifndef CbcOsiParam_H 00014 #define CbcOsiParam_H 00015 00016 /* \file CbcGenOsiParam.hpp 00017 \brief Declarations for parameters that act on a OsiSolverInterface object. 00018 */ 00019 00020 /* 00021 $Id: CbcGenOsiParam.hpp 1173 2009-06-04 09:44:10Z forrest $ 00022 */ 00023 00031 class CbcOsiParam : public CoinParam { 00032 00033 public: 00034 00037 00046 typedef enum { CBCOSI_FIRSTPARAM = CbcCbcParam::CBCCBC_LASTPARAM + 1, 00047 00048 ALGORITHM, ALLSLACK, AUTOSCALE, BARRIER, BARRIERSCALE, 00049 BASISIN, BASISOUT, BIASLU, CHOLESKY, CRASH, CROSSOVER, 00050 DUALBOUND, DUALPIVOT, DUALSIMPLEX, DUALTOLERANCE, FAKEBOUND, 00051 GAMMA, IDIOT, KEEPNAMES, KKT, MAXITERATION, MAXHOTITS, NETLIB_BARRIER, 00052 NETLIB_DUAL, NETLIB_PRIMAL, NETWORK, OBJSCALE, PERTURBATION, 00053 PERTVALUE, PFI, PLUSMINUS, PRESOLVE, PRESOLVEOPTIONS, PRESOLVEPASS, 00054 PRIMALPIVOT, PRIMALSIMPLEX, PRIMALTOLERANCE, REALLY_SCALE, 00055 RESTORE, REVERSE, RHSSCALE, SAVE, SCALING, SLPVALUE, SOLVERLOGLEVEL, 00056 SPARSEFACTOR, SPECIALOPTIONS, SPRINT, TIGHTEN, 00057 00058 CBCOSI_LASTPARAM 00059 00060 } CbcOsiParamCode ; 00061 00063 00072 CbcOsiParam() ; 00073 00080 CbcOsiParam(CbcOsiParamCode code, std::string name, std::string help, 00081 double lower, double upper, double dflt = 0.0, 00082 bool display = true) ; 00083 00088 CbcOsiParam(CbcOsiParamCode code, std::string name, std::string help, 00089 int lower, int upper, int dflt = 0, 00090 bool display = true) ; 00091 00101 CbcOsiParam(CbcOsiParamCode code, std::string name, std::string help, 00102 std::string firstValue, int dflt, bool display = true) ; 00103 00110 CbcOsiParam(CbcOsiParamCode code, std::string name, std::string help, 00111 std::string dflt, bool display = true) ; 00112 00115 CbcOsiParam(CbcOsiParamCode code, std::string name, std::string help, 00116 bool display = true) ; 00117 00120 CbcOsiParam(const CbcOsiParam &orig) ; 00121 00124 CbcOsiParam *clone() ; 00125 00128 CbcOsiParam &operator=(const CbcOsiParam &rhs) ; 00129 00132 ~CbcOsiParam() ; 00133 00135 00138 00141 inline CbcOsiParamCode paramCode() const { 00142 return (paramCode_) ; 00143 } 00144 00147 inline void setParamCode(CbcOsiParamCode code) { 00148 paramCode_ = code ; 00149 } 00150 00153 inline OsiSolverInterface *obj() const { 00154 return (obj_) ; 00155 } 00156 00159 inline void setObj(OsiSolverInterface *obj) { 00160 obj_ = obj ; 00161 } 00162 00164 00165 00166 private: 00167 00170 00172 CbcOsiParamCode paramCode_ ; 00173 00175 OsiSolverInterface *obj_ ; 00176 00178 00179 } ; 00180 00181 00182 00183 /* 00184 Declare the utility functions. 00185 */ 00186 00187 namespace CbcOsiParamUtils { 00188 void addCbcOsiParams(int &numParams, CoinParamVec ¶mVec, 00189 OsiSolverInterface *osi) ; 00190 void loadOsiParamObj(const CoinParamVec paramVec, 00191 CbcGenCtlBlk *ctlBlk) ; 00192 void setOsiSolverInterfaceDefaults(OsiSolverInterface *osi) ; 00193 00194 int pushCbcOsiLogLevel(CoinParam *param) ; 00195 int pushCbcOsiInt(CoinParam *param) ; 00196 int pushCbcOsiDbl(CoinParam *param) ; 00197 int pushCbcOsiKwd(CoinParam *param) ; 00198 int pushCbcOsiHint(CoinParam *param) ; 00199 } 00200 00201 00202 #endif 00203