Changeset 2079 for stable


Ignore:
Timestamp:
Sep 24, 2014 5:54:25 AM (5 years ago)
Author:
forrest
Message:

changes for non simplex solvers

Location:
stable/2.8/Cbc/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • stable/2.8/Cbc/src/CbcModel.cpp

    r2056 r2079  
    27612761    */
    27622762    int iObject ;
    2763     int preferredWay ;
    27642763    int numberUnsatisfied = 0 ;
    27652764    delete [] currentSolution_;
     
    27732772    for (iObject = 0 ; iObject < numberObjects_ ; iObject++) {
    27742773        double infeasibility =
    2775             object_[iObject]->infeasibility(&usefulInfo, preferredWay) ;
     2774            object_[iObject]->checkInfeasibility(&usefulInfo) ;
    27762775        if (infeasibility ) numberUnsatisfied++ ;
    27772776    }
     
    85278526        OsiBranchingInformation usefulInfo = usefulInformation();
    85288527        for (int i = 0; i < numberObjects_ && integerFeasible; i++) {
    8529             int preferredWay;
    8530             double infeasibility = object_[i]->infeasibility(&usefulInfo, preferredWay);
     8528            double infeasibility = object_[i]->checkInfeasibility(&usefulInfo);
    85318529            if (infeasibility)
    85328530                integerFeasible = false;
     
    1237312371    int numberUnsatisfied = 0;
    1237412372    //double sumUnsatisfied=0.0;
    12375     int preferredWay;
    1237612373    int j;
    1237712374    // Point to current solution
     
    1239412391#ifndef SIMPLE_INTEGER
    1239512392        const OsiObject * object = object_[j];
    12396         double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     12393        double infeasibility = object->checkInfeasibility(&usefulInfo);
    1239712394        if (infeasibility) {
    1239812395            assert (infeasibility > 0);
     
    1241412411    for (; j < numberObjects_; j++) {
    1241512412        const OsiObject * object = object_[j];
    12416         double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     12413        double infeasibility = object->checkInfeasibility(&usefulInfo);
    1241712414        if (infeasibility) {
    1241812415            assert (infeasibility > 0);
     
    1390813905            // again
    1390913906            //std::cout<<solver_<<std::endl;
     13907
     13908            OsiCuts feasCuts;
     13909
     13910            for (int i = 0; i < numberCutGenerators_ && (feasCuts.sizeRowCuts () == 0); i++) {
     13911              if (generator_ [i] -> normal () &&
     13912                  (!generator_ [i] -> needsOptimalBasis () || solver_ -> basisIsAvailable ()))
     13913                generator_ [i] -> generateCuts (feasCuts, 1 /* = fullscan */, solver_, NULL);
     13914            }
     13915            solver_ -> applyCuts (feasCuts);
     13916
    1391013917            resolve(solver_);
    1391113918            double objval = solver_->getObjValue();
     
    1493214939            if (feasible) {
    1493314940                int iObject ;
    14934                 int preferredWay ;
    1493514941                int numberUnsatisfied = 0 ;
    1493614942                memcpy(currentSolution_, solver_->getColSolution(),
     
    1494114947                for (iObject = 0 ; iObject < numberObjects_ ; iObject++) {
    1494214948                    double infeasibility =
    14943                         object_[iObject]->infeasibility(&usefulInfo, preferredWay) ;
     14949                        object_[iObject]->checkInfeasibility(&usefulInfo) ;
    1494414950                    if (infeasibility ) numberUnsatisfied++ ;
    1494514951                }
     
    1734617352    {
    1734717353        int iObject ;
    17348         int preferredWay ;
    1734917354        int numberUnsatisfied = 0 ;
    1735017355        memcpy(currentSolution_, solver_->getColSolution(),
     
    1735517360        for (iObject = 0 ; iObject < numberObjects_ ; iObject++) {
    1735617361            double infeasibility =
    17357                 object_[iObject]->infeasibility(&usefulInfo, preferredWay) ;
     17362                object_[iObject]->checkInfeasibility(&usefulInfo) ;
    1735817363            if (infeasibility) numberUnsatisfied++ ;
    1735917364        }
  • stable/2.8/Cbc/src/CbcNode.cpp

    r2055 r2079  
    14121412                        choice[i].possibleBranch = NULL;
    14131413                        const OsiObject * object = model->object(thisChoice.objectNumber);
    1414                         int preferredWay;
    1415                         double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     1414                        double infeasibility = object->checkInfeasibility(&usefulInfo);
    14161415                        if (!infeasibility) {
    14171416                            // take out
     
    16261625            CbcObject * obj =   dynamic_cast <CbcObject *>(object) ;
    16271626            if (!obj || !obj->optionalObject()) {
    1628                 int preferredWay;
    1629                 double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     1627                double infeasibility = object->checkInfeasibility(&usefulInfo);
    16301628                if (infeasibility) {
    16311629                    useOldWay = true;
     
    20472045                CbcSimpleIntegerDynamicPseudoCost * dynamicObject =
    20482046                    dynamic_cast <CbcSimpleIntegerDynamicPseudoCost *>(object) ;
    2049                 int preferredWay;
    2050                 double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     2047                double infeasibility = object->checkInfeasibility(&usefulInfo);
    20512048                int priorityLevel = object->priority();
    20522049                if (hotstartSolution) {
     
    20752072                                    //else
    20762073                                    infeasibility = fabs(value - targetValue);
    2077                                     //if (targetValue==1.0)
    2078                                     //infeasibility += 1.0;
    2079                                     if (value > targetValue) {
    2080                                         preferredWay = -1;
    2081                                     } else {
    2082                                         preferredWay = 1;
    2083                                     }
    20842074                                    priorityLevel = CoinAbs(priorityLevel);
    20852075                                } else if (priorityLevel < 0) {
    20862076                                    priorityLevel = CoinAbs(priorityLevel);
    2087                                     if (targetValue == saveLower[iColumn]) {
     2077                                    if (targetValue == saveLower[iColumn] ||
     2078                                    targetValue == saveUpper[iColumn]) {
    20882079                                        infeasibility = integerTolerance + 1.0e-12;
    2089                                         preferredWay = -1;
    2090                                     } else if (targetValue == saveUpper[iColumn]) {
    2091                                         infeasibility = integerTolerance + 1.0e-12;
    2092                                         preferredWay = 1;
    20932080                                    } else {
    20942081                                        // can't
     
    35883575            if (branch_) {
    35893576                 const OsiObject * object = model->object(bestChoice);
    3590                  int preferredWay;
    3591                  double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     3577                 double infeasibility = object->checkInfeasibility(&usefulInfo);
    35923578                 if (!infeasibility) {
    35933579                   // take out
     
    35953581                   branch_ = NULL;
    35963582                 } else {
     3583                   // get preferred way
     3584                   int preferredWay;
     3585                   object->infeasibility(&usefulInfo, preferredWay);
    35973586                   CbcBranchingObject * branchObj =
    35983587                     dynamic_cast <CbcBranchingObject *>(branch_) ;
     
    38293818        if (!dynamicObject)
    38303819            continue;
    3831         int preferredWay;
    3832         double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     3820        double infeasibility = object->checkInfeasibility(&usefulInfo);
    38333821        int iColumn = dynamicObject->columnNumber();
    38343822        if (saveUpper[iColumn] == saveLower[iColumn])
Note: See TracChangeset for help on using the changeset viewer.