Changeset 576


Ignore:
Timestamp:
May 11, 2011 6:01:21 AM (9 years ago)
Author:
fmargot
Message:

Fix bug in CouenneProblem::checkAux(), cosmetic changes otherwise

Location:
trunk/Couenne/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Couenne/src/convex/CouenneCutGenerator.cpp

    r575 r576  
    1717#include "CouenneChooseVariable.hpp"
    1818
     19#include "CbcTree.hpp"
    1920#include "BonCbc.hpp"
    2021#include "CouenneRecordBestSol.hpp"
     
    209210  double lpVal = BabPtr_->model().solver()->getObjValue();
    210211  int nbNodes = BabPtr_->model().getNodeCount();
     212  int nbNodesRem = BabPtr_->model().tree()->size();
    211213  int depth = BabPtr_->model().currentDepth();
    212214  CouenneRecordBestSol *rs = problem_->getRecordBestSol();
     
    214216  if(rs->getHasSol()) {
    215217    double bestSolVal = rs->getVal();
    216     printf("%10d  %10d  %10.6f  %10.6f  %10.6f\n",
    217            nbNodes, depth, cbcLb, lpVal, bestSolVal);
     218    printf("%10d  %8d  %6d  %10.6f  %10.6f  %10.6f\n",
     219           nbNodes, nbNodesRem, depth, cbcLb, lpVal, bestSolVal);
    218220  }
    219221  else {
    220     printf("%10d  %10d  %10.6f  %10.6f   ----------\n",
    221            nbNodes, depth, cbcLb, lpVal);
     222    printf("%10d  %8d  %6d  %10.6f  %10.6f   ----------\n",
     223           nbNodes, nbNodesRem, depth, cbcLb, lpVal);
    222224  }
    223225} /* printLineInfo */
  • trunk/Couenne/src/problem/CouenneSolverInterface.cpp

    r574 r576  
    1717
    1818#include "CouenneRecordBestSol.hpp"                         
     19
     20//#define FM_CHECK
    1921
    2022namespace Couenne {
     
    167169    }
    168170  }
     171
     172#ifdef FM_CHECK
     173  bool ckIsChecked = false;
     174  double ckObj = objvalGlob;
     175  if(isProvenOptimal () &&
     176     (objvalGlob < curCutoff - COUENNE_EPS)) {
     177    ckIsChecked = cutgen_->Problem()->checkNLP(T::getColSolution (),
     178                                               ckObj, true);
     179  }
     180  if(!isChecked && ckIsChecked) {
     181    printf("CouenneSolverInterface::resolve(): ### ERROR: isChecked: false  ckIsChecked: true\n");
     182    exit(1);
     183  }
     184  else {
     185    printf("CouenneSolverInterface::resolve(): isChecked == ckIsChecked\n");
     186  }
     187#endif
     188
    169189#else /* not FM_CHECKNLP2 */
    170190  if(isProvenOptimal () &&
  • trunk/Couenne/src/problem/checkNLP.cpp

    r573 r576  
    467467      fval = COUENNE_INFINITY;
    468468   
     469
    469470    double
    470       delta = fabs (vval - fval),
     471      delta =
     472      ((v -> sign () == expression::AUX_GEQ) && (vval >= fval)) ? 0. :
     473      ((v -> sign () == expression::AUX_LEQ) && (vval <= fval)) ? 0. : fabs (vval - fval),
     474     
    471475      ratio = (CoinMax (1., fabs (vval)) /
    472476               CoinMax (1., fabs (fval)));
Note: See TracChangeset for help on using the changeset viewer.