1 /*===========================================================================* 2 * This file is part of the Discrete Conic Optimization (DisCO) Solver. * 3 * * 4 * DisCO is distributed under the Eclipse Public License as part of the * 5 * COIN-OR repository (http://www.coin-or.org). * 6 * * 7 * Authors: * 8 * Aykut Bulut, Lehigh University * 9 * Yan Xu, Lehigh University * 10 * Ted Ralphs, Lehigh University * 11 * * 12 * Copyright (C) 2001-2018, Lehigh University, Aykut Bulut, Yan Xu, and * 13 * Ted Ralphs. * 14 * All Rights Reserved. * 15 *===========================================================================*/ 16 17 18 #ifndef DcoMessage_hpp_ 19 #define DcoMessage_hpp_ 20 21 #include <Dco.hpp> 22 23 24 #if defined(_MSC_VER) 25 // Turn off compiler warning about long names 26 # pragma warning(disable:4786) 27 #endif 28 29 /** This deals with Dco messages. */ 30 #include "CoinMessageHandler.hpp" 31 32 33 //todo(aykut) order these messages properly before publishing in github. 34 enum DISCO_Message { 35 DISCO_CUTOFF_INC, 36 DISCO_CUT_STATS_FINAL, 37 DISCO_CUT_STATS_NODE, 38 DISCO_CUT_GENERATED, 39 DISCO_GAP_NO, 40 DISCO_GAP_YES, 41 DISCO_ROOT_PROCESS, 42 DISCO_ROOT_TIME, 43 // solution process information 44 DISCO_NODE_LOG_HEADER, 45 DISCO_NODE_LOG, 46 DISCO_NODE_LOG_NO_SOL, 47 // reading mps files 48 DISCO_READ_NOINTS, 49 DISCO_READ_NOCONES, 50 DISCO_READ_MPSERROR, 51 DISCO_READ_MPSCBFFILEONLY, 52 DISCO_READ_CONEERROR, 53 DISCO_READ_ROTATEDCONESIZE, 54 DISCO_READ_CONESTATS1, 55 DISCO_READ_CONESTATS2, 56 DISCO_PROBLEM_INFO, 57 // tree node 58 DISCO_NODE_BRANCHONINT, 59 DISCO_NODE_UNEXPECTEDSTATUS, 60 DISCO_NODE_FATHOM_PARENTQ, 61 DISCO_NODE_FATHOM, 62 DISCO_NODE_BCP_DECISION, 63 DISCO_NODE_BRANCH, 64 DISCO_NODE_ENCODED, 65 DISCO_NODE_DECODED, 66 // constraint generation 67 DISCO_INVALID_CUT_FREQUENCY, 68 DISCO_INEFFECTIVE_CUT, 69 DISCO_CUTS_ADDED, 70 // relaxation solver messages 71 DISCO_SOLVER_UNKNOWN_STATUS, 72 DISCO_SOLVER_FAILED, 73 DISCO_SOLVER_STATUS, 74 DISCO_SOLVER_INFEASIBLE, 75 DISCO_FAILED_WARM_START, 76 DISCO_SOLVER_ITERATIONS, 77 // heuristics 78 DISCO_HEUR_BEFORE_ROOT, 79 DISCO_HEUR_STATS_FINAL, 80 DISCO_HEUR_STATS_NODE, 81 DISCO_INVALID_HEUR_FREQUENCY, 82 DISCO_HEUR_SOL_FOUND, 83 DISCO_HEUR_NOSOL_FOUND, 84 // branch strategies 85 DISCO_PSEUDO_REPORT, 86 DISCO_PSEUDO_DUP, 87 DISCO_PSEUDO_UUP, 88 DISCO_STRONG_REPORT, 89 // grumpy messages 90 DISCO_GRUMPY_MESSAGE_LONG, 91 DISCO_GRUMPY_MESSAGE_MED, 92 DISCO_GRUMPY_MESSAGE_SHORT, 93 // Parallelization related messages 94 DISCO_UNEXPECTED_ENCODE_STATUS, 95 DISCO_UNEXPECTED_DECODE_STATUS, 96 // more general messages 97 DISCO_INFEAS_REPORT, 98 DISCO_SOL_INT_FEAS_REPORT, 99 DISCO_SOL_CONE_FEAS_REPORT, 100 DISCO_SOL_FOUND, 101 // welcome message 102 DISCO_WELCOME, 103 // out of memory 104 DISCO_OUT_OF_MEMORY, 105 DISCO_NOT_IMPLEMENTED, 106 DISCO_UNKNOWN_CONETYPE, 107 DISCO_UNKNOWN_BRANCHSTRATEGY, 108 DISCO_UNKNOWN_CUTSTRATEGY, 109 DISCO_SHOULD_NOT_HAPPEN, 110 /// 111 DISCO_DUMMY_END 112 }; 113 114 //todo(aykut) for now bit masking for debug level after 128 115 // does not work sice the bit masking is done with a char, 8 bits, 116 // having masking done with an int would make things wonderfull since 117 // DisCO has many levels of debug messages. Contact Coinutils guys 118 // to see how feasible is this. 119 enum DISCO_Debug_Level { 120 DISCO_DLOG_BRANCH = 8, 121 DISCO_DLOG_CUT = 16, 122 DISCO_DLOG_PROCESS = 32, 123 DISCO_DLOG_PRESOLVE = 64, 124 DISCO_DLOG_MPI = 32, 125 DISCO_DLOG_GRUMPY = 32, // 256 126 DISCO_DLOG_HEURISTIC = 32 // 512 127 128 }; 129 130 enum DISCO_Grumpy_Msg_Type { 131 DISCO_GRUMPY_BRANCHED = 0, 132 DISCO_GRUMPY_CANDIDATE, 133 DISCO_GRUMPY_HEURISTIC, 134 DISCO_GRUMPY_INTEGER, 135 DISCO_GRUMPY_FATHOMED, 136 DISCO_GRUMPY_PREGNANT, 137 DISCO_GRUMPY_INFEASIBLE 138 }; 139 140 141 //############################################################################# 142 143 class DcoMessage : public CoinMessages { 144 public: 145 /**@name Constructors etc */ 146 //@{ 147 /** Constructor */ 148 DcoMessage(Language language=us_en); 149 //@} 150 }; 151 152 //############################################################################# 153 #endif 154