Changes in / [574:003367ffe66e:578:a2e6b1dd487e] in lemon-main
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/cbc.cc
r567 r576 56 56 _osi_solver = 0; 57 57 _cbc_model = 0; 58 messageLevel(MESSAGE_NOTHING); 58 59 } 59 60 60 61 CbcMip::CbcMip(const CbcMip& other) { 61 62 _prob = new CoinModel(*other._prob); 63 _prob->setProblemName("LEMON"); 62 64 _osi_solver = 0; 63 65 _cbc_model = 0; 66 messageLevel(MESSAGE_NOTHING); 64 67 } 65 68 … … 271 274 _cbc_model= new CbcModel(*_osi_solver); 272 275 273 switch (_message_level) { 274 case MESSAGE_NO_OUTPUT: 275 _osi_solver->messageHandler()->setLogLevel(0); 276 _cbc_model->setLogLevel(0); 277 break; 278 case MESSAGE_ERROR_MESSAGE: 279 _osi_solver->messageHandler()->setLogLevel(1); 280 _cbc_model->setLogLevel(1); 281 break; 282 case MESSAGE_NORMAL_OUTPUT: 283 _osi_solver->messageHandler()->setLogLevel(2); 284 _cbc_model->setLogLevel(2); 285 break; 286 case MESSAGE_FULL_OUTPUT: 287 _osi_solver->messageHandler()->setLogLevel(3); 288 _cbc_model->setLogLevel(3); 289 break; 290 } 276 _osi_solver->messageHandler()->setLogLevel(_message_level); 277 _cbc_model->setLogLevel(_message_level); 291 278 292 279 _cbc_model->initialSolve(); … … 454 441 } 455 442 456 void CbcMip::messageLevel(MessageLevel m) { 457 _message_level = m; 443 void CbcMip::_messageLevel(MessageLevel level) { 444 switch (level) { 445 case MESSAGE_NOTHING: 446 _message_level = 0; 447 break; 448 case MESSAGE_ERROR: 449 _message_level = 1; 450 break; 451 case MESSAGE_WARNING: 452 _message_level = 1; 453 break; 454 case MESSAGE_NORMAL: 455 _message_level = 2; 456 break; 457 case MESSAGE_VERBOSE: 458 _message_level = 3; 459 break; 460 } 458 461 } 459 462 -
lemon/cbc.h
r567 r576 116 116 virtual void _clear(); 117 117 118 public: 118 virtual void _messageLevel(MessageLevel level); 119 void _applyMessageLevel(); 119 120 120 ///Enum for \c messageLevel() parameter 121 enum MessageLevel { 122 /// no output (default value) 123 MESSAGE_NO_OUTPUT = 0, 124 /// error messages only 125 MESSAGE_ERROR_MESSAGE = 1, 126 /// normal output 127 MESSAGE_NORMAL_OUTPUT = 2, 128 /// full output (includes informational messages) 129 MESSAGE_FULL_OUTPUT = 3 130 }; 121 int _message_level; 131 122 132 private: 133 134 MessageLevel _message_level; 135 136 public: 137 138 ///Set the verbosity of the messages 139 140 ///Set the verbosity of the messages 141 /// 142 ///\param m is the level of the messages output by the solver routines. 143 void messageLevel(MessageLevel m); 144 123 145 124 146 125 }; -
lemon/clp.cc
r540 r576 25 25 _prob = new ClpSimplex(); 26 26 _init_temporals(); 27 messageLevel(MESSAGE_NO _OUTPUT);27 messageLevel(MESSAGE_NOTHING); 28 28 } 29 29 … … 33 33 cols = other.cols; 34 34 _init_temporals(); 35 messageLevel(MESSAGE_NO _OUTPUT);35 messageLevel(MESSAGE_NOTHING); 36 36 } 37 37 … … 431 431 } 432 432 433 void ClpLp::messageLevel(MessageLevel m) { 434 _prob->setLogLevel(static_cast<int>(m)); 433 void ClpLp::_messageLevel(MessageLevel level) { 434 switch (level) { 435 case MESSAGE_NOTHING: 436 _prob->setLogLevel(0); 437 break; 438 case MESSAGE_ERROR: 439 _prob->setLogLevel(1); 440 break; 441 case MESSAGE_WARNING: 442 _prob->setLogLevel(2); 443 break; 444 case MESSAGE_NORMAL: 445 _prob->setLogLevel(3); 446 break; 447 case MESSAGE_VERBOSE: 448 _prob->setLogLevel(4); 449 break; 450 } 435 451 } 436 452 -
lemon/clp.h
r540 r576 137 137 virtual void _clear(); 138 138 139 virtual void _messageLevel(MessageLevel); 140 139 141 public: 140 142 … … 154 156 int clpCol(Col c) const { return cols(id(c)); } 155 157 156 ///Enum for \c messageLevel() parameter157 enum MessageLevel {158 /// no output (default value)159 MESSAGE_NO_OUTPUT = 0,160 /// print final solution161 MESSAGE_FINAL_SOLUTION = 1,162 /// print factorization163 MESSAGE_FACTORIZATION = 2,164 /// normal output165 MESSAGE_NORMAL_OUTPUT = 3,166 /// verbose output167 MESSAGE_VERBOSE_OUTPUT = 4168 };169 ///Set the verbosity of the messages170 171 ///Set the verbosity of the messages172 ///173 ///\param m is the level of the messages output by the solver routines.174 void messageLevel(MessageLevel m);175 176 158 }; 177 159 -
lemon/cplex.cc
r551 r576 73 73 int status; 74 74 _prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem"); 75 messageLevel(MESSAGE_NOTHING); 75 76 } 76 77 … … 79 80 int status; 80 81 _prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem"); 82 messageLevel(MESSAGE_NOTHING); 81 83 } 82 84 … … 87 89 rows = cplex.rows; 88 90 cols = cplex.cols; 91 messageLevel(MESSAGE_NOTHING); 89 92 } 90 93 … … 437 440 rows.clear(); 438 441 cols.clear(); 442 } 443 444 void CplexBase::_messageLevel(MessageLevel level) { 445 switch (level) { 446 case MESSAGE_NOTHING: 447 _message_enabled = false; 448 break; 449 case MESSAGE_ERROR: 450 case MESSAGE_WARNING: 451 case MESSAGE_NORMAL: 452 case MESSAGE_VERBOSE: 453 _message_enabled = true; 454 break; 455 } 456 } 457 458 void CplexBase::_applyMessageLevel() { 459 CPXsetintparam(cplexEnv(), CPX_PARAM_SCRIND, 460 _message_enabled ? CPX_ON : CPX_OFF); 439 461 } 440 462 … … 508 530 CplexLp::SolveExitStatus CplexLp::_solve() { 509 531 _clear_temporals(); 532 _applyMessageLevel(); 510 533 return convertStatus(CPXlpopt(cplexEnv(), _prob)); 511 534 } … … 513 536 CplexLp::SolveExitStatus CplexLp::solvePrimal() { 514 537 _clear_temporals(); 538 _applyMessageLevel(); 515 539 return convertStatus(CPXprimopt(cplexEnv(), _prob)); 516 540 } … … 518 542 CplexLp::SolveExitStatus CplexLp::solveDual() { 519 543 _clear_temporals(); 544 _applyMessageLevel(); 520 545 return convertStatus(CPXdualopt(cplexEnv(), _prob)); 521 546 } … … 523 548 CplexLp::SolveExitStatus CplexLp::solveBarrier() { 524 549 _clear_temporals(); 550 _applyMessageLevel(); 525 551 return convertStatus(CPXbaropt(cplexEnv(), _prob)); 526 552 } … … 601 627 } 602 628 603 // 7.5-os cplex statusai (Vigyazat: a 9.0-asei masok!)629 // Cplex 7.0 status values 604 630 // This table lists the statuses, returned by the CPXgetstat() 605 631 // routine, for solutions to LP problems or mixed integer problems. If … … 648 674 // User pivot used 649 675 // 650 // Ezeket hova tegyem:676 // Pending return values 651 677 // ??case CPX_ABORT_DUAL_INFEAS 652 678 // ??case CPX_ABORT_CROSSOVER … … 719 745 statusSwitch(cplexEnv(),stat); 720 746 //CPXgetstat(cplexEnv(), _prob); 721 //printf("A primal status: %d, CPX_OPTIMAL=%d \n",stat,CPX_OPTIMAL);722 747 switch (stat) { 723 748 case 0: … … 752 777 } 753 778 754 // 9.0-as cplex verzio statusai779 // Cplex 9.0 status values 755 780 // CPX_STAT_ABORT_DUAL_OBJ_LIM 756 781 // CPX_STAT_ABORT_IT_LIM … … 865 890 CplexMip::SolveExitStatus CplexMip::_solve() { 866 891 int status; 892 _applyMessageLevel(); 867 893 status = CPXmipopt (cplexEnv(), _prob); 868 894 if (status==0) -
lemon/cplex.h
r551 r576 145 145 virtual void _clear(); 146 146 147 virtual void _messageLevel(MessageLevel level); 148 void _applyMessageLevel(); 149 150 bool _message_enabled; 151 147 152 public: 148 153 149 154 /// Returns the used \c CplexEnv instance 150 155 const CplexEnv& env() const { return _env; } 156 157 /// \brief Returns the const cpxenv pointer 151 158 /// 159 /// \note The cpxenv might be destructed with the solver. 152 160 const cpxenv* cplexEnv() const { return _env.cplexEnv(); } 153 161 162 /// \brief Returns the const cpxenv pointer 163 /// 164 /// \note The cpxenv might be destructed with the solver. 165 cpxenv* cplexEnv() { return _env.cplexEnv(); } 166 167 /// Returns the cplex problem object 154 168 cpxlp* cplexLp() { return _prob; } 169 /// Returns the cplex problem object 155 170 const cpxlp* cplexLp() const { return _prob; } 156 171 -
lemon/glpk.cc
r566 r576 32 32 lp = glp_create_prob(); 33 33 glp_create_index(lp); 34 messageLevel(MESSAGE_NOTHING); 34 35 } 35 36 … … 40 41 rows = other.rows; 41 42 cols = other.cols; 43 messageLevel(MESSAGE_NOTHING); 42 44 } 43 45 … … 527 529 } 528 530 531 void GlpkBase::_messageLevel(MessageLevel level) { 532 switch (level) { 533 case MESSAGE_NOTHING: 534 _message_level = GLP_MSG_OFF; 535 break; 536 case MESSAGE_ERROR: 537 _message_level = GLP_MSG_ERR; 538 break; 539 case MESSAGE_WARNING: 540 _message_level = GLP_MSG_ERR; 541 break; 542 case MESSAGE_NORMAL: 543 _message_level = GLP_MSG_ON; 544 break; 545 case MESSAGE_VERBOSE: 546 _message_level = GLP_MSG_ALL; 547 break; 548 } 549 } 550 529 551 GlpkBase::FreeEnvHelper GlpkBase::freeEnvHelper; 530 552 … … 533 555 GlpkLp::GlpkLp() 534 556 : LpBase(), LpSolver(), GlpkBase() { 535 messageLevel(MESSAGE_NO_OUTPUT);536 557 presolver(false); 537 558 } … … 539 560 GlpkLp::GlpkLp(const GlpkLp& other) 540 561 : LpBase(other), LpSolver(other), GlpkBase(other) { 541 messageLevel(MESSAGE_NO_OUTPUT);542 562 presolver(false); 543 563 } … … 563 583 glp_init_smcp(&smcp); 564 584 565 switch (_message_level) { 566 case MESSAGE_NO_OUTPUT: 567 smcp.msg_lev = GLP_MSG_OFF; 568 break; 569 case MESSAGE_ERROR_MESSAGE: 570 smcp.msg_lev = GLP_MSG_ERR; 571 break; 572 case MESSAGE_NORMAL_OUTPUT: 573 smcp.msg_lev = GLP_MSG_ON; 574 break; 575 case MESSAGE_FULL_OUTPUT: 576 smcp.msg_lev = GLP_MSG_ALL; 577 break; 578 } 585 smcp.msg_lev = _message_level; 579 586 smcp.presolve = _presolve; 580 587 … … 605 612 glp_init_smcp(&smcp); 606 613 607 switch (_message_level) { 608 case MESSAGE_NO_OUTPUT: 609 smcp.msg_lev = GLP_MSG_OFF; 610 break; 611 case MESSAGE_ERROR_MESSAGE: 612 smcp.msg_lev = GLP_MSG_ERR; 613 break; 614 case MESSAGE_NORMAL_OUTPUT: 615 smcp.msg_lev = GLP_MSG_ON; 616 break; 617 case MESSAGE_FULL_OUTPUT: 618 smcp.msg_lev = GLP_MSG_ALL; 619 break; 620 } 614 smcp.msg_lev = _message_level; 621 615 smcp.meth = GLP_DUAL; 622 616 smcp.presolve = _presolve; … … 859 853 } 860 854 861 void GlpkLp::messageLevel(MessageLevel m) {862 _message_level = m;863 }864 865 855 // GlpkMip members 866 856 867 857 GlpkMip::GlpkMip() 868 858 : LpBase(), MipSolver(), GlpkBase() { 869 messageLevel(MESSAGE_NO_OUTPUT);870 859 } 871 860 872 861 GlpkMip::GlpkMip(const GlpkMip& other) 873 862 : LpBase(), MipSolver(), GlpkBase(other) { 874 messageLevel(MESSAGE_NO_OUTPUT);875 863 } 876 864 … … 901 889 glp_init_smcp(&smcp); 902 890 903 switch (_message_level) { 904 case MESSAGE_NO_OUTPUT: 905 smcp.msg_lev = GLP_MSG_OFF; 906 break; 907 case MESSAGE_ERROR_MESSAGE: 908 smcp.msg_lev = GLP_MSG_ERR; 909 break; 910 case MESSAGE_NORMAL_OUTPUT: 911 smcp.msg_lev = GLP_MSG_ON; 912 break; 913 case MESSAGE_FULL_OUTPUT: 914 smcp.msg_lev = GLP_MSG_ALL; 915 break; 916 } 891 smcp.msg_lev = _message_level; 917 892 smcp.meth = GLP_DUAL; 918 893 … … 939 914 glp_init_iocp(&iocp); 940 915 941 switch (_message_level) { 942 case MESSAGE_NO_OUTPUT: 943 iocp.msg_lev = GLP_MSG_OFF; 944 break; 945 case MESSAGE_ERROR_MESSAGE: 946 iocp.msg_lev = GLP_MSG_ERR; 947 break; 948 case MESSAGE_NORMAL_OUTPUT: 949 iocp.msg_lev = GLP_MSG_ON; 950 break; 951 case MESSAGE_FULL_OUTPUT: 952 iocp.msg_lev = GLP_MSG_ALL; 953 break; 954 } 916 iocp.msg_lev = _message_level; 955 917 956 918 if (glp_intopt(lp, &iocp) != 0) return UNSOLVED; … … 1003 965 const char* GlpkMip::_solverName() const { return "GlpkMip"; } 1004 966 1005 void GlpkMip::messageLevel(MessageLevel m) {1006 _message_level = m;1007 }1008 1009 967 } //END OF NAMESPACE LEMON -
lemon/glpk.h
r565 r576 100 100 101 101 virtual void _clear(); 102 103 virtual void _messageLevel(MessageLevel level); 102 104 103 105 private: … … 112 114 113 115 static FreeEnvHelper freeEnvHelper; 116 117 protected: 118 119 int _message_level; 114 120 115 121 public: … … 192 198 void presolver(bool presolve); 193 199 194 ///Enum for \c messageLevel() parameter195 enum MessageLevel {196 /// no output (default value)197 MESSAGE_NO_OUTPUT = 0,198 /// error messages only199 MESSAGE_ERROR_MESSAGE = 1,200 /// normal output201 MESSAGE_NORMAL_OUTPUT = 2,202 /// full output (includes informational messages)203 MESSAGE_FULL_OUTPUT = 3204 };205 206 private:207 208 MessageLevel _message_level;209 210 public:211 212 ///Set the verbosity of the messages213 214 ///Set the verbosity of the messages215 ///216 ///\param m is the level of the messages output by the solver routines.217 void messageLevel(MessageLevel m);218 200 }; 219 201 … … 245 227 virtual Value _getSolValue() const; 246 228 247 ///Enum for \c messageLevel() parameter248 enum MessageLevel {249 /// no output (default value)250 MESSAGE_NO_OUTPUT = 0,251 /// error messages only252 MESSAGE_ERROR_MESSAGE = 1,253 /// normal output254 MESSAGE_NORMAL_OUTPUT = 2,255 /// full output (includes informational messages)256 MESSAGE_FULL_OUTPUT = 3257 };258 259 private:260 261 MessageLevel _message_level;262 263 public:264 265 ///Set the verbosity of the messages266 267 ///Set the verbosity of the messages268 ///269 ///\param m is the level of the messages output by the solver routines.270 void messageLevel(MessageLevel m);271 229 }; 272 230 -
lemon/lp_base.h
r540 r576 69 69 MAX 70 70 }; 71 72 ///Enum for \c messageLevel() parameter 73 enum MessageLevel { 74 /// no output (default value) 75 MESSAGE_NOTHING, 76 /// error messages only 77 MESSAGE_ERROR, 78 /// warnings 79 MESSAGE_WARNING, 80 /// normal output 81 MESSAGE_NORMAL, 82 /// verbose output 83 MESSAGE_VERBOSE 84 }; 85 71 86 72 87 ///The floating point type used by the solver … … 974 989 virtual const char* _solverName() const = 0; 975 990 991 virtual void _messageLevel(MessageLevel level) = 0; 992 976 993 //Own protected stuff 977 994 … … 1528 1545 void clear() { _clear(); } 1529 1546 1547 /// Sets the message level of the solver 1548 void messageLevel(MessageLevel level) { _messageLevel(level); } 1549 1530 1550 ///@} 1531 1551 -
lemon/lp_skeleton.cc
r540 r576 85 85 } 86 86 87 void SkeletonSolverBase::_messageLevel(MessageLevel) {} 88 87 89 LpSkeleton::SolveExitStatus LpSkeleton::_solve() { return SOLVED; } 88 90 -
lemon/lp_skeleton.h
r541 r576 141 141 virtual void _clear(); 142 142 143 ///\e 144 virtual void _messageLevel(MessageLevel); 143 145 }; 144 146 -
lemon/soplex.cc
r540 r576 21 21 22 22 #include <soplex.h> 23 #include <spxout.h> 23 24 24 25 … … 29 30 SoplexLp::SoplexLp() { 30 31 soplex = new soplex::SoPlex; 32 messageLevel(MESSAGE_NOTHING); 31 33 } 32 34 … … 48 50 _row_names_ref = lp._row_names_ref; 49 51 52 messageLevel(MESSAGE_NOTHING); 50 53 } 51 54 … … 272 275 273 276 _clear_temporals(); 277 278 _applyMessageLevel(); 274 279 275 280 soplex::SPxSolver::Status status = soplex->solve(); … … 420 425 } 421 426 427 void SoplexLp::_messageLevel(MessageLevel level) { 428 switch (level) { 429 case MESSAGE_NOTHING: 430 _message_level = -1; 431 break; 432 case MESSAGE_ERROR: 433 _message_level = soplex::SPxOut::ERROR; 434 break; 435 case MESSAGE_WARNING: 436 _message_level = soplex::SPxOut::WARNING; 437 break; 438 case MESSAGE_NORMAL: 439 _message_level = soplex::SPxOut::INFO2; 440 break; 441 case MESSAGE_VERBOSE: 442 _message_level = soplex::SPxOut::DEBUG; 443 break; 444 } 445 } 446 447 void SoplexLp::_applyMessageLevel() { 448 soplex::Param::setVerbose(_message_level); 449 } 450 422 451 } //namespace lemon 423 452 -
lemon/soplex.h
r540 r576 145 145 virtual void _clear(); 146 146 147 void _messageLevel(MessageLevel m); 148 void _applyMessageLevel(); 149 150 int _message_level; 151 147 152 }; 148 153 -
test/lp_test.cc
r551 r575 396 396 cloneTest<CplexLp>(); 397 397 } catch (CplexEnv::LicenseError& error) { 398 #ifdef LEMON_FORCE_CPLEX_CHECK399 398 check(false, error.what()); 400 #else401 std::cerr << error.what() << std::endl;402 std::cerr << "Cplex license check failed, lp check skipped" << std::endl;403 #endif404 399 } 405 400 #endif -
test/mip_test.cc
r567 r575 144 144 cloneTest<CplexMip>(); 145 145 } catch (CplexEnv::LicenseError& error) { 146 #ifdef LEMON_FORCE_CPLEX_CHECK147 146 check(false, error.what()); 148 #else149 std::cerr << error.what() << std::endl;150 std::cerr << "Cplex license check failed, lp check skipped" << std::endl;151 #endif152 147 } 153 148 #endif
Note: See TracChangeset
for help on using the changeset viewer.