Changeset 188 for trunk


Ignore:
Timestamp:
Oct 9, 2005 12:36:19 PM (15 years ago)
Author:
forrest
Message:

local tree

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CbcModel.cpp

    r187 r188  
    37603760    numberIterations_ += solver_->getIterationCount() ;
    37613761    feasible = (solver_->isProvenOptimal() &&
    3762                 !solver_->isDualObjectiveLimitReached()) ; }
     3762                !solver_->isDualObjectiveLimitReached()) ;
     3763  }
     3764  if (0&&feasible) {
     3765    const double * lb = solver_->getColLower();
     3766    const double * ub = solver_->getColUpper();
     3767    const double * x = solver_->getColSolution();
     3768    const double * dj = solver_->getReducedCost();
     3769    int numberColumns = solver_->getNumCols();
     3770    for (int i=0;i<numberColumns;i++) {
     3771      if (dj[i]>1.0e-4&&ub[i]-lb[i]>1.0e-4&&x[i]>lb[i]+1.0e-4)
     3772        printf("error %d %g %g %g %g\n",i,dj[i],lb[i],x[i],ub[i]);
     3773      if (dj[i]<-1.0e-4&&ub[i]-lb[i]>1.0e-4&&x[i]<ub[i]-1.0e-4)
     3774        printf("error %d %g %g %g %g\n",i,dj[i],lb[i],x[i],ub[i]);
     3775    }
     3776  }
    37633777  if (!feasible&& continuousObjective_ <-1.0e30) {
    37643778    // at root node - double double check
  • trunk/CbcTreeLocal.cpp

    r186 r188  
    501501          subSolver->initialSolve();
    502502          // We can copy cutoff
    503           subModel->setCutoff(model_->getCutoff());
     503          // But adjust
     504          subModel->setCutoff(model_->getCutoff()+model_->getDblParam(CbcModel::CbcCutoffIncrement)+1.0e-6);
    504505          subModel->setSolutionCount(0);
    505506          assert (subModel->isProvenOptimal());
     
    509510              model_->incrementSubTreeStopped();
    510511            }
    511             printf("%g %g %g %g\n",subModel->getCutoff(),model_->getCutoff(),
    512                    subModel->getMinimizationObjValue(),model_->getMinimizationObjValue());
     512            //printf("%g %g %g %g\n",subModel->getCutoff(),model_->getCutoff(),
     513            //   subModel->getMinimizationObjValue(),model_->getMinimizationObjValue());
    513514            double newCutoff = subModel->getMinimizationObjValue()-
    514515              subModel->getDblParam(CbcModel::CbcCutoffIncrement) ;
     
    592593  if (rhs_<1.0e30||lastTry) {
    593594    int goodSolution=createCut(savedSolution_,cut_);
    594     assert(goodSolution>=0);
    595     // Add to global cuts
    596     model_->globalCuts()->insert(cut_);
    597     {
     595    if (goodSolution>=0) {
     596      // Add to global cuts
     597      model_->globalCuts()->insert(cut_);
    598598      OsiCuts * global = model_->globalCuts();
    599599      int n = global->sizeRowCuts();
    600600      OsiRowCut * rowCut = global->rowCutPtr(n-1);
    601601      printf("inserting cut - now %d cuts, rhs %g %g, cutspace %g, diversification %d\n",
    602              n,rowCut->lb(),rowCut->ub(),rhs_,diversification_);
     602             n,rowCut->lb(),rowCut->ub(),rhs_,diversification_);
    603603      for (int i=0;i<n;i++) {
    604         rowCut = global->rowCutPtr(i);
    605         printf("%d - rhs %g %g\n",
    606                i,rowCut->lb(),rowCut->ub());
     604        rowCut = global->rowCutPtr(i);
     605        printf("%d - rhs %g %g\n",
     606               i,rowCut->lb(),rowCut->ub());
    607607      }
    608608    }
     
    610610    startTime_ = (int) CoinCpuTime();
    611611    startNode_=model_->getNodeCount();
    612     // save copy of node
    613     CbcNode * localNode2 = new CbcNode(*localNode_);
    614     // But localNode2 now owns cuts so swap
    615     //printf("pushing local node2 onto heap %d %x %x\n",localNode_->nodeNumber(),
    616     //   localNode_,localNode_->nodeInfo());
    617     nodes_.push_back(localNode_);
    618     localNode_=localNode2;
    619     make_heap(nodes_.begin(), nodes_.end(), comparison_);
     612    if (localNode_) {
     613      // save copy of node
     614      CbcNode * localNode2 = new CbcNode(*localNode_);
     615      // But localNode2 now owns cuts so swap
     616      //printf("pushing local node2 onto heap %d %x %x\n",localNode_->nodeNumber(),
     617      //   localNode_,localNode_->nodeInfo());
     618      nodes_.push_back(localNode_);
     619      localNode_=localNode2;
     620      make_heap(nodes_.begin(), nodes_.end(), comparison_);
     621    }
    620622  }
    621623  return finished;
     
    658660  double primalTolerance;
    659661  solver->getDblParam(OsiPrimalTolerance,primalTolerance);
     662  // relax
     663  primalTolerance *= 1000.0;
    660664
    661665  int numberRows = model_->getNumRows();
     
    751755    }
    752756  }
    753   assert (i<n);
     757  if (!rowCut) {
     758    // must have got here in odd way e.g. strong branching
     759    return;
     760  }
    754761  // get smallest element
    755762  double smallest=COIN_DBL_MAX;
Note: See TracChangeset for help on using the changeset viewer.