[Lemon-commits] Alpar Juttner: Merge
Lemon HG
hg at lemon.cs.elte.hu
Tue Apr 14 11:42:47 CEST 2009
details: http://lemon.cs.elte.hu/hg/lemon/rev/99a31b399b59
changeset: 615:99a31b399b59
user: Alpar Juttner <alpar [at] cs.elte.hu>
date: Tue Apr 14 10:40:33 2009 +0100
description:
Merge
diffstat:
lemon/cbc.cc | 43 +++++++++++----------
lemon/cbc.h | 29 ++------------
lemon/clp.cc | 24 ++++++++++--
lemon/clp.h | 22 +----------
lemon/cplex.cc | 34 +++++++++++++++--
lemon/cplex.h | 15 +++++++
lemon/glpk.cc | 94 +++++++++++++----------------------------------
lemon/glpk.h | 54 +++------------------------
lemon/lp_base.h | 20 ++++++++++
lemon/lp_skeleton.cc | 2 +
lemon/lp_skeleton.h | 2 +
lemon/soplex.cc | 29 ++++++++++++++
lemon/soplex.h | 5 ++
test/lp_test.cc | 5 --
test/mip_test.cc | 5 --
tools/lemon-0.x-to-1.x.sh | 4 ++
16 files changed, 188 insertions(+), 199 deletions(-)
diffs (truncated from 812 to 300 lines):
diff --git a/lemon/cbc.cc b/lemon/cbc.cc
--- a/lemon/cbc.cc
+++ b/lemon/cbc.cc
@@ -55,12 +55,15 @@
_prob->setProblemName("LEMON");
_osi_solver = 0;
_cbc_model = 0;
+ messageLevel(MESSAGE_NOTHING);
}
CbcMip::CbcMip(const CbcMip& other) {
_prob = new CoinModel(*other._prob);
+ _prob->setProblemName("LEMON");
_osi_solver = 0;
_cbc_model = 0;
+ messageLevel(MESSAGE_NOTHING);
}
CbcMip::~CbcMip() {
@@ -270,24 +273,8 @@
}
_cbc_model= new CbcModel(*_osi_solver);
- switch (_message_level) {
- case MESSAGE_NO_OUTPUT:
- _osi_solver->messageHandler()->setLogLevel(0);
- _cbc_model->setLogLevel(0);
- break;
- case MESSAGE_ERROR_MESSAGE:
- _osi_solver->messageHandler()->setLogLevel(1);
- _cbc_model->setLogLevel(1);
- break;
- case MESSAGE_NORMAL_OUTPUT:
- _osi_solver->messageHandler()->setLogLevel(2);
- _cbc_model->setLogLevel(2);
- break;
- case MESSAGE_FULL_OUTPUT:
- _osi_solver->messageHandler()->setLogLevel(3);
- _cbc_model->setLogLevel(3);
- break;
- }
+ _osi_solver->messageHandler()->setLogLevel(_message_level);
+ _cbc_model->setLogLevel(_message_level);
_cbc_model->initialSolve();
_cbc_model->solver()->setHintParam(OsiDoReducePrint, true, OsiHintTry);
@@ -453,8 +440,24 @@
cols.clear();
}
- void CbcMip::messageLevel(MessageLevel m) {
- _message_level = m;
+ void CbcMip::_messageLevel(MessageLevel level) {
+ switch (level) {
+ case MESSAGE_NOTHING:
+ _message_level = 0;
+ break;
+ case MESSAGE_ERROR:
+ _message_level = 1;
+ break;
+ case MESSAGE_WARNING:
+ _message_level = 1;
+ break;
+ case MESSAGE_NORMAL:
+ _message_level = 2;
+ break;
+ case MESSAGE_VERBOSE:
+ _message_level = 3;
+ break;
+ }
}
} //END OF NAMESPACE LEMON
diff --git a/lemon/cbc.h b/lemon/cbc.h
--- a/lemon/cbc.h
+++ b/lemon/cbc.h
@@ -115,33 +115,12 @@
virtual void _clear();
- public:
+ virtual void _messageLevel(MessageLevel level);
+ void _applyMessageLevel();
- ///Enum for \c messageLevel() parameter
- enum MessageLevel {
- /// no output (default value)
- MESSAGE_NO_OUTPUT = 0,
- /// error messages only
- MESSAGE_ERROR_MESSAGE = 1,
- /// normal output
- MESSAGE_NORMAL_OUTPUT = 2,
- /// full output (includes informational messages)
- MESSAGE_FULL_OUTPUT = 3
- };
+ int _message_level;
- private:
-
- MessageLevel _message_level;
-
- public:
-
- ///Set the verbosity of the messages
-
- ///Set the verbosity of the messages
- ///
- ///\param m is the level of the messages output by the solver routines.
- void messageLevel(MessageLevel m);
-
+
};
diff --git a/lemon/clp.cc b/lemon/clp.cc
--- a/lemon/clp.cc
+++ b/lemon/clp.cc
@@ -24,7 +24,7 @@
ClpLp::ClpLp() {
_prob = new ClpSimplex();
_init_temporals();
- messageLevel(MESSAGE_NO_OUTPUT);
+ messageLevel(MESSAGE_NOTHING);
}
ClpLp::ClpLp(const ClpLp& other) {
@@ -32,7 +32,7 @@
rows = other.rows;
cols = other.cols;
_init_temporals();
- messageLevel(MESSAGE_NO_OUTPUT);
+ messageLevel(MESSAGE_NOTHING);
}
ClpLp::~ClpLp() {
@@ -430,8 +430,24 @@
_clear_temporals();
}
- void ClpLp::messageLevel(MessageLevel m) {
- _prob->setLogLevel(static_cast<int>(m));
+ void ClpLp::_messageLevel(MessageLevel level) {
+ switch (level) {
+ case MESSAGE_NOTHING:
+ _prob->setLogLevel(0);
+ break;
+ case MESSAGE_ERROR:
+ _prob->setLogLevel(1);
+ break;
+ case MESSAGE_WARNING:
+ _prob->setLogLevel(2);
+ break;
+ case MESSAGE_NORMAL:
+ _prob->setLogLevel(3);
+ break;
+ case MESSAGE_VERBOSE:
+ _prob->setLogLevel(4);
+ break;
+ }
}
} //END OF NAMESPACE LEMON
diff --git a/lemon/clp.h b/lemon/clp.h
--- a/lemon/clp.h
+++ b/lemon/clp.h
@@ -136,6 +136,8 @@
virtual void _clear();
+ virtual void _messageLevel(MessageLevel);
+
public:
///Solves LP with primal simplex method.
@@ -153,26 +155,6 @@
///Returns the variable identifier understood by CLP.
int clpCol(Col c) const { return cols(id(c)); }
- ///Enum for \c messageLevel() parameter
- enum MessageLevel {
- /// no output (default value)
- MESSAGE_NO_OUTPUT = 0,
- /// print final solution
- MESSAGE_FINAL_SOLUTION = 1,
- /// print factorization
- MESSAGE_FACTORIZATION = 2,
- /// normal output
- MESSAGE_NORMAL_OUTPUT = 3,
- /// verbose output
- MESSAGE_VERBOSE_OUTPUT = 4
- };
- ///Set the verbosity of the messages
-
- ///Set the verbosity of the messages
- ///
- ///\param m is the level of the messages output by the solver routines.
- void messageLevel(MessageLevel m);
-
};
} //END OF NAMESPACE LEMON
diff --git a/lemon/cplex.cc b/lemon/cplex.cc
--- a/lemon/cplex.cc
+++ b/lemon/cplex.cc
@@ -72,12 +72,14 @@
CplexBase::CplexBase() : LpBase() {
int status;
_prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem");
+ messageLevel(MESSAGE_NOTHING);
}
CplexBase::CplexBase(const CplexEnv& env)
: LpBase(), _env(env) {
int status;
_prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem");
+ messageLevel(MESSAGE_NOTHING);
}
CplexBase::CplexBase(const CplexBase& cplex)
@@ -86,6 +88,7 @@
_prob = CPXcloneprob(cplexEnv(), cplex._prob, &status);
rows = cplex.rows;
cols = cplex.cols;
+ messageLevel(MESSAGE_NOTHING);
}
CplexBase::~CplexBase() {
@@ -438,6 +441,25 @@
cols.clear();
}
+ void CplexBase::_messageLevel(MessageLevel level) {
+ switch (level) {
+ case MESSAGE_NOTHING:
+ _message_enabled = false;
+ break;
+ case MESSAGE_ERROR:
+ case MESSAGE_WARNING:
+ case MESSAGE_NORMAL:
+ case MESSAGE_VERBOSE:
+ _message_enabled = true;
+ break;
+ }
+ }
+
+ void CplexBase::_applyMessageLevel() {
+ CPXsetintparam(cplexEnv(), CPX_PARAM_SCRIND,
+ _message_enabled ? CPX_ON : CPX_OFF);
+ }
+
// CplexLp members
CplexLp::CplexLp()
@@ -507,21 +529,25 @@
CplexLp::SolveExitStatus CplexLp::_solve() {
_clear_temporals();
+ _applyMessageLevel();
return convertStatus(CPXlpopt(cplexEnv(), _prob));
}
CplexLp::SolveExitStatus CplexLp::solvePrimal() {
_clear_temporals();
+ _applyMessageLevel();
return convertStatus(CPXprimopt(cplexEnv(), _prob));
}
CplexLp::SolveExitStatus CplexLp::solveDual() {
_clear_temporals();
+ _applyMessageLevel();
return convertStatus(CPXdualopt(cplexEnv(), _prob));
}
CplexLp::SolveExitStatus CplexLp::solveBarrier() {
_clear_temporals();
+ _applyMessageLevel();
return convertStatus(CPXbaropt(cplexEnv(), _prob));
}
@@ -600,7 +626,7 @@
return _dual_ray[i];
}
- //7.5-os cplex statusai (Vigyazat: a 9.0-asei masok!)
+ // Cplex 7.0 status values
// This table lists the statuses, returned by the CPXgetstat()
// routine, for solutions to LP problems or mixed integer problems. If
// no solution exists, the return value is zero.
@@ -647,7 +673,7 @@
// 20 CPX_PIVOT
// User pivot used
//
- // Ezeket hova tegyem:
+ // Pending return values
// ??case CPX_ABORT_DUAL_INFEAS
// ??case CPX_ABORT_CROSSOVER
// ??case CPX_INForUNBD
@@ -718,7 +744,6 @@
#else
statusSwitch(cplexEnv(),stat);
More information about the Lemon-commits
mailing list