Ignore:
Timestamp:
Jun 20, 2014 8:44:51 AM (5 years ago)
Author:
forrest
Message:

fixes for odd SOS

File:
1 edited

Legend:

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

    r1943 r2040  
    28232823                int preferredWay;
    28242824                double infeasibility = object->infeasibility(&usefulInfo, preferredWay);
     2825                bool feasibleSolution=false;
     2826                double predictedChange=0.0;
    28252827                // may have become feasible
    28262828                if (!infeasibility) {
     
    29132915                    */
    29142916                    choice.possibleBranch->way(-1) ;
    2915                     choice.possibleBranch->branch() ;
     2917                    predictedChange = choice.possibleBranch->branch() ;
    29162918                    solver->solveFromHotStart() ;
    29172919                    bool needHotStartUpdate = false;
     
    29622964#endif
    29632965                    }
     2966                    // say infeasible if branch says so
     2967                    if (predictedChange==COIN_DBL_MAX)
     2968                      iStatus=1;
    29642969                    if (iStatus != 2 && solver->getIterationCount() >
    29652970                            realMaxHotIterations)
     
    30073012#endif
    30083013                            // See if integer solution
    3009                             if (model->feasibleSolution(choice.numIntInfeasDown,
    3010                                                         choice.numObjInfeasDown)
     3014                            feasibleSolution =
     3015                              model->feasibleSolution(choice.numIntInfeasDown,
     3016                                                      choice.numObjInfeasDown);
     3017                            if (feasibleSolution
    30113018                                    && model->problemFeasibility()->feasible(model, -1) >= 0) {
    30123019                                if (auxiliaryInfo->solutionAddsCuts()) {
     
    30993106
    31003107                    // repeat the whole exercise, forcing the variable up
    3101                     choice.possibleBranch->branch();
     3108                    predictedChange=choice.possibleBranch->branch();
    31023109                    solver->solveFromHotStart() ;
    31033110                    numberStrongDone++;
     
    31473154#endif
    31483155                    }
     3156                    // say infeasible if branch says so
     3157                    if (predictedChange==COIN_DBL_MAX)
     3158                      iStatus=1;
    31493159                    if (iStatus != 2 && solver->getIterationCount() >
    31503160                            realMaxHotIterations)
     
    31913201#endif
    31923202                            // See if integer solution
    3193                             if (model->feasibleSolution(choice.numIntInfeasUp,
    3194                                                         choice.numObjInfeasUp)
     3203                            feasibleSolution =
     3204                              model->feasibleSolution(choice.numIntInfeasUp,
     3205                                                      choice.numObjInfeasUp);
     3206                            if (feasibleSolution
    31953207                                    && model->problemFeasibility()->feasible(model, -1) >= 0) {
    31963208#ifdef BONMIN
Note: See TracChangeset for help on using the changeset viewer.