Ignore:
File:
1 edited

Legend:

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

    r1922 r2093  
    8686    double bestScore = -1.0;
    8787    bool allTriviallyRoundableSoFar = true;
     88    int bestPriority = COIN_INT_MAX;
    8889    for (int i = 0; i < numberIntegers; i++) {
    8990        int iColumn = integerVariable[i];
     
    132133                    score *= 1000.0;
    133134
     135                // if priorities then use
     136                if (priority_) {
     137                  int thisRound=static_cast<int>(priority_[i].direction);
     138                  if ((thisRound&1)!=0)
     139                    round = ((thisRound&2)==0) ? -1 : +1;
     140                  if (priority_[i].priority>bestPriority) {
     141                    score=COIN_DBL_MAX;
     142                  } else if (priority_[i].priority<bestPriority) {
     143                    bestPriority=static_cast<int>(priority_[i].priority);
     144                    bestScore=COIN_DBL_MAX;
     145                  }
     146                }
    134147                if (score > bestScore) {
    135148                    bestColumn = iColumn;
     
    198211    const int * integerVariable = model_->integerVariable();
    199212    const double* reducedCost = solver->getReducedCost();
     213    bool fixGeneralIntegers = (switches_&65536)!=0;
    200214    // fix other integer variables that are at their bounds
    201215    int cnt = 0;
     
    215229                candidate[cnt++].pseudoRedCost = CoinMax(-1.0e-2 * reducedCost[iColumn],
    216230                                                 downArray_[i]) * random[i];
     231            } else if (fixGeneralIntegers &&
     232                       fabs(floor(value + 0.5) - value) <= integerTolerance) {
     233                candidate[cnt].var = iColumn;
     234                candidate[cnt++].pseudoRedCost = CoinMax(-1.0e-6 * reducedCost[iColumn],
     235                                                 1.0e-4*downArray_[i]) * random[i];
    217236            }
    218237        } else {
Note: See TracChangeset for help on using the changeset viewer.