Changeset 1955 for stable/1.15/Clp


Ignore:
Timestamp:
May 14, 2013 6:10:07 AM (6 years ago)
Author:
forrest
Message:

fix assert if variable wrongly marked

File:
1 edited

Legend:

Unmodified
Added
Removed
  • stable/1.15/Clp/src/ClpPrimalColumnSteepest.cpp

    r1878 r1955  
    585585#ifndef NDEBUG
    586586     if (bestSequence >= 0) {
    587           if (model_->getStatus(bestSequence) == ClpSimplex::atLowerBound)
     587          if (model_->getStatus(bestSequence) == ClpSimplex::atLowerBound) 
    588588               assert(model_->reducedCost(bestSequence) < 0.0);
    589589          if (model_->getStatus(bestSequence) == ClpSimplex::atUpperBound) {
     
    30403040
    30413041          double * reducedCost = model_->djRegion();
     3042          const double * lower = model_->lowerRegion();
     3043          const double * upper = model_->upperRegion();
     3044          const double * solution = model_->solutionRegion();
     3045          double primalTolerance = model_->currentPrimalTolerance();
    30423046
    30433047          if (!model_->nonLinearCost()->lookBothWays()) {
     
    30873091                    case ClpSimplex::superBasic:
    30883092                         if (fabs(value) > FREE_ACCEPT * tolerance) {
    3089                               // we are going to bias towards free (but only if reasonable)
    3090                               value *= FREE_BIAS;
    3091                               // store square in list
    3092                               infeasible_->quickAdd(iSequence, value * value);
     3093                              // check hasn't slipped through
     3094                              if (solution[iSequence]<lower[iSequence]+primalTolerance) {
     3095                                model_->setStatus(iSequence,ClpSimplex::atLowerBound);
     3096                                if (value < -tolerance) {
     3097                                  infeasible_->quickAdd(iSequence, value * value);
     3098                                }
     3099                              } else if (solution[iSequence]>upper[iSequence]-primalTolerance) {
     3100                                model_->setStatus(iSequence,ClpSimplex::atUpperBound);
     3101                                if (value > tolerance) {
     3102                                  infeasible_->quickAdd(iSequence, value * value);
     3103                                }
     3104                              } else {
     3105                                    // we are going to bias towards free (but only if reasonable)
     3106                                    value *= FREE_BIAS;
     3107                                    // store square in list
     3108                                    infeasible_->quickAdd(iSequence, value * value);
     3109                                  }
    30933110                         }
    30943111                         break;
Note: See TracChangeset for help on using the changeset viewer.