Ignore:
Timestamp:
Jun 14, 2016 10:39:54 AM (3 years ago)
Author:
forrest
Message:

allow heuristics to see if integers are 'optional'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcSolver.cpp

    r2279 r2280  
    43624362                                    threshold -= 10000*highPriority;
    43634363                                  }
     4364                                  // If 1000 set then don't put obj on ne variables
     4365                                  bool moveObjective=true;
     4366                                  if (threshold>1000) {
     4367                                    moveObjective=false;
     4368                                    threshold -= 1000;
     4369                                  }
    43644370                                  const double * columnLower = solver2->getColLower();
    43654371                                  const double * columnUpper = solver2->getColUpper();
     
    44924498                                          for (int kColumn=iLast;kColumn<jColumn;kColumn++) {
    44934499                                            iColumn=which[kColumn];
    4494                                             solver2->setObjCoeff(iColumn,0.0);
     4500                                            if (moveObjective)
     4501                                              solver2->setObjCoeff(iColumn,0.0);
    44954502                                            double lowerValue=columnLower[iColumn];
    44964503                                            double upperValue=columnUpper[iColumn];
     
    45014508                                              elementValue=1.0;
    45024509                                            }
     4510                                            if (!moveObjective)
     4511                                              objectiveNew[numberDifferentObj]=0.0;
    45034512                                            columnAdd[numberElements]=iColumn;
    45044513                                            elementAdd[numberElements++]=elementValue;
     
    45464555                                                       lowerNew, upperNew,objectiveNew);
    45474556                                      // add constraints and make integer if all integer in group
     4557#ifdef COIN_HAS_CLP
     4558                                      OsiClpSolverInterface * clpSolver2
     4559                                        = dynamic_cast<OsiClpSolverInterface *> (solver2);
     4560#endif
    45484561                                      for (int iObj=0; iObj < numberDifferentObj; iObj++) {
    45494562                                        lowerNew[iObj]=0.0;
    45504563                                        upperNew[iObj]=0.0;
    45514564                                        solver2->setInteger(numberColumns+iObj);
     4565#ifdef COIN_HAS_CLP
     4566                                        if (clpSolver2)
     4567                                          clpSolver2->setOptionalInteger(numberColumns+iObj);
     4568#endif
    45524569                                      }
    45534570                                      solver2->addRows(numberDifferentObj,
Note: See TracChangeset for help on using the changeset viewer.