Changeset 2314


Ignore:
Timestamp:
Jan 3, 2017 10:47:35 AM (2 years ago)
Author:
forrest
Message:

mainly stuff for mipstart

Location:
trunk/Cbc/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcHeuristic.hpp

    r2280 r2314  
    695695
    696696};
    697 
    698697#endif
    699698
  • trunk/Cbc/src/CbcModel.cpp

    r2313 r2314  
    28462846    }
    28472847    // See if we can add integers
    2848     if (noObjects && numberIntegers_ < solver_->getNumCols() && (specialOptions_&65536) != 0 && !parentModel_)
    2849         AddIntegers();
     2848    if (noObjects && numberIntegers_ < solver_->getNumCols() && (specialOptions_&65536) != 0 && !parentModel_ && false) {
     2849      int numberIntegers1=0;
     2850      int numberColumns = solver_->getNumCols();
     2851      for (int i=0;i<numberColumns;i++) {
     2852        if (solver_->isInteger(i))
     2853          numberIntegers1++;
     2854      }
     2855      AddIntegers();
     2856      // make sure in sync
     2857      int numberIntegers2=0;
     2858      for (int i=0;i<numberColumns;i++) {
     2859        if (solver_->isInteger(i))
     2860          numberIntegers2++;
     2861      }
     2862      if (numberIntegers1<numberIntegers2) {
     2863        findIntegers(true,2);
     2864        convertToDynamic();
     2865      }
     2866    }
     2867
    28502868    /*
    28512869      Do an initial round of cut generation for the root node. Depending on the
     
    92499267            << currentPassNumber_
    92509268            << CoinMessageEol ;
     9269            // do heuristics again! if feasibility pump still exists
     9270            if ((specialOptions_&33554432)!=0&&!parentModel_) {
     9271              specialOptions_ &= ~33554432;
     9272              doHeuristicsAtRoot();
     9273            }
    92519274        }
    92529275        /*
     
    1447114494#endif
    1447214495        if (!numberNodes_) {
     14496          #if 0
     14497          // make sure really feasible when not scaled
     14498          if (clpSimplex->secondaryStatus()==2) {
     14499            messageHandler()->message(CBC_FPUMP1, messages())
     14500              << "Continuous solution cleaned for scaling"
     14501              << CoinMessageEol ;
     14502            // overkill but stop odd things happeneing
     14503            bool takeHint1,takeHint2;
     14504            OsiHintStrength strength;
     14505            clpSolver->getHintParam(OsiDoScale,takeHint1,strength);
     14506            clpSolver->getHintParam(OsiDoPresolveInInitial,takeHint2,strength);
     14507            //assert (takeHint);
     14508            clpSolver->setHintParam(OsiDoScale,false,OsiHintTry);
     14509            clpSolver->setHintParam(OsiDoPresolveInInitial,false,OsiHintTry);
     14510            int saveFlag=clpSimplex->scalingFlag();
     14511            clpSimplex->scaling(0);
     14512            clpSolver->initialSolve();
     14513            clpSolver->setHintParam(OsiDoScale,takeHint1,OsiHintTry);
     14514            clpSolver->setHintParam(OsiDoPresolveInInitial,takeHint2,OsiHintTry);
     14515            clpSimplex->scaling(saveFlag);
     14516          }
     14517#endif
    1447314518            double error = CoinMax(clpSimplex->largestDualError(),
    1447414519                                   clpSimplex->largestPrimalError());
     
    1580315848            CbcHeuristicFPump * pump
    1580415849            = dynamic_cast<CbcHeuristicFPump *> (heuristic_[i]);
    15805             if (pump && pump->feasibilityPumpOptions() < 1000000) {
     15850            if (pump && pump->feasibilityPumpOptions() < 1000000
     15851                && (specialOptions_&33554432)==0) {
    1580615852                delete pump;
    1580715853                numberHeuristics_ --;
  • trunk/Cbc/src/CbcModel.hpp

    r2205 r2314  
    17901790        23 bit (8388608) - leave solver_ with cuts
    17911791        24 bit (16777216) - just get feasible if no cutoff
     1792        25 bit (33554432) - feasibility pump after root cuts
    17921793    */
    17931794    inline void setSpecialOptions(int value) {
  • trunk/Cbc/src/CbcSolver.cpp

    r2313 r2314  
    221221#include "CbcTreeLocal.hpp"
    222222#include "CbcCompareActual.hpp"
     223#include "CbcCompareObjective.hpp"
    223224#include "CbcBranchActual.hpp"
    224225#include "CbcBranchLotsize.hpp"
     
    40294030                                double obj;
    40304031                                int status = computeCompleteSolution( &tempModel, colNames, mipStartBefore, &x[0], obj );
    4031                                 // set cutoff
     4032                                // set cutoff ( a trifle high)
    40324033                                if (!status) {
    4033                                   babModel_->setCutoff(CoinMin(babModel_->getCutoff(),obj+1.0e-4));
     4034                                  double newCutoff = CoinMin(babModel_->getCutoff(),obj+1.0e-4);
    40344035                                  babModel_->setBestSolution( &x[0], static_cast<int>(x.size()), obj, false );
     4036                                  babModel_->setCutoff(newCutoff);
    40354037                                  babModel_->setSolutionCount(1);
    4036                                   model_.setCutoff(CoinMin(model_.getCutoff(),obj+1.0e-4));
    40374038                                  model_.setBestSolution( &x[0], static_cast<int>(x.size()), obj, false );
     4039                                  model_.setCutoff(newCutoff);
    40384040                                  model_.setSolutionCount(1);
    40394041                                }
     
    66546656                                      babModel_->addCutGenerator(&fakeGen, 1, "SosCuts");
    66556657                                      //fakeSimplex->writeMps("bad.mps",0,1);
    6656                                       //sosCuts.setProbingInfo(new
    6657                                       //                     CglTreeProbingInfo(&fakeSolver));
     6658                                      sosCuts.setProbingInfo(new
     6659                                                     CglTreeProbingInfo(&fakeSolver));
    66586660                                    }
    66596661                                    delete fakeSimplex;
     
    67426744                                    CbcCompareDefault compare;
    67436745                                    compare.setBreadthDepth(hOp1 % 10);
     6746                                    babModel_->setNodeComparison(compare);
     6747                                } else if (hOp1 == 10) {
     6748                                    CbcCompareObjective compare;
    67446749                                    babModel_->setNodeComparison(compare);
    67456750                                }
Note: See TracChangeset for help on using the changeset viewer.