COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/cplex.cc

    r462 r576  
    33 * This file is a part of LEMON, a generic C++ optimization library.
    44 *
    5  * Copyright (C) 2003-2008
     5 * Copyright (C) 2003-2009
    66 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    77 * (Egervary Research Group on Combinatorial Optimization, EGRES).
     
    7373    int status;
    7474    _prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem");
     75    messageLevel(MESSAGE_NOTHING);
    7576  }
    7677
     
    7980    int status;
    8081    _prob = CPXcreateprob(cplexEnv(), &status, "Cplex problem");
     82    messageLevel(MESSAGE_NOTHING);
    8183  }
    8284
     
    8789    rows = cplex.rows;
    8890    cols = cplex.cols;
     91    messageLevel(MESSAGE_NOTHING);
    8992  }
    9093
     
    439442  }
    440443
     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);
     461  }
     462
    441463  // CplexLp members
    442464
    443465  CplexLp::CplexLp()
    444     : LpBase(), CplexBase(), LpSolver() {}
     466    : LpBase(), LpSolver(), CplexBase() {}
    445467
    446468  CplexLp::CplexLp(const CplexEnv& env)
    447     : LpBase(), CplexBase(env), LpSolver() {}
     469    : LpBase(), LpSolver(), CplexBase(env) {}
    448470
    449471  CplexLp::CplexLp(const CplexLp& other)
    450     : LpBase(), CplexBase(other), LpSolver() {}
     472    : LpBase(), LpSolver(), CplexBase(other) {}
    451473
    452474  CplexLp::~CplexLp() {}
    453475
    454   CplexLp* CplexLp::_newSolver() const { return new CplexLp; }
    455   CplexLp* CplexLp::_cloneSolver() const {return new CplexLp(*this); }
     476  CplexLp* CplexLp::newSolver() const { return new CplexLp; }
     477  CplexLp* CplexLp::cloneSolver() const {return new CplexLp(*this); }
    456478
    457479  const char* CplexLp::_solverName() const { return "CplexLp"; }
     
    508530  CplexLp::SolveExitStatus CplexLp::_solve() {
    509531    _clear_temporals();
     532    _applyMessageLevel();
    510533    return convertStatus(CPXlpopt(cplexEnv(), _prob));
    511534  }
     
    513536  CplexLp::SolveExitStatus CplexLp::solvePrimal() {
    514537    _clear_temporals();
     538    _applyMessageLevel();
    515539    return convertStatus(CPXprimopt(cplexEnv(), _prob));
    516540  }
     
    518542  CplexLp::SolveExitStatus CplexLp::solveDual() {
    519543    _clear_temporals();
     544    _applyMessageLevel();
    520545    return convertStatus(CPXdualopt(cplexEnv(), _prob));
    521546  }
     
    523548  CplexLp::SolveExitStatus CplexLp::solveBarrier() {
    524549    _clear_temporals();
     550    _applyMessageLevel();
    525551    return convertStatus(CPXbaropt(cplexEnv(), _prob));
    526552  }
     
    601627  }
    602628
    603   //7.5-os cplex statusai (Vigyazat: a 9.0-asei masok!)
     629  // Cplex 7.0 status values
    604630  // This table lists the statuses, returned by the CPXgetstat()
    605631  // routine, for solutions to LP problems or mixed integer problems. If
     
    648674  //       User pivot used
    649675  //
    650   //     Ezeket hova tegyem:
     676  // Pending return values
    651677  // ??case CPX_ABORT_DUAL_INFEAS
    652678  // ??case CPX_ABORT_CROSSOVER
     
    719745    statusSwitch(cplexEnv(),stat);
    720746    //CPXgetstat(cplexEnv(), _prob);
    721     //printf("A primal status: %d, CPX_OPTIMAL=%d \n",stat,CPX_OPTIMAL);
    722747    switch (stat) {
    723748    case 0:
     
    752777  }
    753778
    754   //9.0-as cplex verzio statusai
     779  // Cplex 9.0 status values
    755780  // CPX_STAT_ABORT_DUAL_OBJ_LIM
    756781  // CPX_STAT_ABORT_IT_LIM
     
    799824
    800825  CplexMip::CplexMip()
    801     : LpBase(), CplexBase(), MipSolver() {
     826    : LpBase(), MipSolver(), CplexBase() {
    802827
    803828#if CPX_VERSION < 800
     
    809834
    810835  CplexMip::CplexMip(const CplexEnv& env)
    811     : LpBase(), CplexBase(env), MipSolver() {
     836    : LpBase(), MipSolver(), CplexBase(env) {
    812837
    813838#if CPX_VERSION < 800
     
    820845
    821846  CplexMip::CplexMip(const CplexMip& other)
    822     : LpBase(), CplexBase(other), MipSolver() {}
     847    : LpBase(), MipSolver(), CplexBase(other) {}
    823848
    824849  CplexMip::~CplexMip() {}
    825850
    826   CplexMip* CplexMip::_newSolver() const { return new CplexMip; }
    827   CplexMip* CplexMip::_cloneSolver() const {return new CplexMip(*this); }
     851  CplexMip* CplexMip::newSolver() const { return new CplexMip; }
     852  CplexMip* CplexMip::cloneSolver() const {return new CplexMip(*this); }
    828853
    829854  const char* CplexMip::_solverName() const { return "CplexMip"; }
     
    865890  CplexMip::SolveExitStatus CplexMip::_solve() {
    866891    int status;
     892    _applyMessageLevel();
    867893    status = CPXmipopt (cplexEnv(), _prob);
    868894    if (status==0)
Note: See TracChangeset for help on using the changeset viewer.