Ignore:
Timestamp:
Aug 24, 2006 6:16:59 AM (13 years ago)
Author:
forrest
Message:

fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Clp/src/ClpSimplexDual.cpp

    r822 r851  
    23992399                           CoinIndexedVector * spareArray,
    24002400                           double acceptablePivot,
    2401                            double & upperReturn, double &bestReturn)
     2401                           double & upperReturn, double &bestReturn,double & badFree)
    24022402{
    24032403  // do first pass to get possibles
     
    24152415  int numberRemaining=0;
    24162416  int i;
     2417  badFree=0.0;
    24172418  for (int iSection=0;iSection<2;iSection++) {
    24182419
     
    24502451        bestPossible = CoinMax(bestPossible,fabs(alpha));
    24512452        oldValue = reducedCost[iSequence];
    2452         // If freehas to be very large - should come in via dualRow
    2453         if (getStatus(iSequence+addSequence)==isFree&&fabs(alpha)<1.0e-3)
    2454           break;
     2453        // If free has to be very large - should come in via dualRow
     2454        //if (getStatus(iSequence+addSequence)==isFree&&fabs(alpha)<1.0e-3)
     2455        //break;
    24552456        if (oldValue>dualTolerance_) {
    24562457          keep = true;
     
    24582459          keep = true;
    24592460        } else {
    2460           if (fabs(alpha)>CoinMax(10.0*acceptablePivot,1.0e-5))
     2461          if (fabs(alpha)>CoinMax(10.0*acceptablePivot,1.0e-5)) {
    24612462            keep = true;
    2462           else
     2463          } else {
    24632464            keep=false;
     2465            badFree=CoinMax(badFree,fabs(alpha));
     2466          }
    24642467        }
    24652468        if (keep) {
     
    25962599  upperTheta = 1.0e31;
    25972600  double bestPossible=0.0;
     2601  double badFree=0.0;
    25982602  if (spareIntArray_[0]!=-1) {
    25992603    numberRemaining = dualColumn0(rowArray,columnArray,spareArray,
    2600                                   acceptablePivot,upperTheta,bestPossible);
     2604                                  acceptablePivot,upperTheta,bestPossible,badFree);
    26012605  } else {
    26022606    // already done
     
    31073111      if (handler_->logLevel()>1)
    31083112        printf("forcing re-factorization\n");
     3113      alpha_=0.0;
     3114    }
     3115    if (fabs(theta_*badFree)>10.0*dualTolerance_&&factorization_->pivots()) {
     3116      if (handler_->logLevel()>1)
     3117        printf("forcing re-factorizationon free\n");
    31093118      alpha_=0.0;
    31103119    }
Note: See TracChangeset for help on using the changeset viewer.