Changeset 1010


Ignore:
Timestamp:
May 22, 2007 11:35:35 AM (12 years ago)
Author:
forrest
Message:

hopefully minor stuff

Location:
branches/devel/Clp/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/devel/Clp/src/CbcOrClpParam.cpp

    r1001 r1010  
    24552455    CbcOrClpParam("tighten!Factor","Tighten bounds using this times largest \
    24562456activity at continuous solution",
    2457                   1.0,1.0e20,TIGHTENFACTOR,false);
     2457                  1.0e-3,1.0e20,TIGHTENFACTOR,false);
    24582458  parameters[numberParameters-1].setLonghelp
    24592459    (
  • branches/devel/Clp/src/ClpSimplexDual.cpp

    r1007 r1010  
    37283728            int iSequence;
    37293729            int iChosen=-1;
    3730             double largest = 100.0*primalTolerance_;
    3731             for (iSequence=0;iSequence<numberRows_+numberColumns_;
    3732                  iSequence++) {
    3733               double djValue = dj_[iSequence];
    3734               double originalLo = originalLower(iSequence);
    3735               double originalUp = originalUpper(iSequence);
    3736               if (fabs(djValue)>fabs(largest)) {
    3737                 if (getStatus(iSequence)!=basic) {
    3738                   if (djValue>0&&originalLo<-1.0e20) {
    3739                     if (djValue>fabs(largest)) {
    3740                       largest=djValue;
    3741                       iChosen=iSequence;
    3742                     }
    3743                   } else if (djValue<0&&originalUp>1.0e20) {
    3744                     if (-djValue>fabs(largest)) {
    3745                       largest=djValue;
    3746                       iChosen=iSequence;
    3747                     }
    3748                   }
     3730            if (!inCbc) {
     3731              double largest = 100.0*primalTolerance_;
     3732              for (iSequence=0;iSequence<numberRows_+numberColumns_;
     3733                   iSequence++) {
     3734                double djValue = dj_[iSequence];
     3735                double originalLo = originalLower(iSequence);
     3736                double originalUp = originalUpper(iSequence);
     3737                if (fabs(djValue)>fabs(largest)) {
     3738                  if (getStatus(iSequence)!=basic) {
     3739                    if (djValue>0&&originalLo<-1.0e20) {
     3740                      if (djValue>fabs(largest)) {
     3741                        largest=djValue;
     3742                        iChosen=iSequence;
     3743                      }
     3744                    } else if (djValue<0&&originalUp>1.0e20) {
     3745                      if (-djValue>fabs(largest)) {
     3746                        largest=djValue;
     3747                        iChosen=iSequence;
     3748                      }
     3749                    }
     3750                  }
    37493751                }
    37503752              }
  • branches/devel/Clp/src/ClpSimplexPrimal.cpp

    r996 r1010  
    30133013      if (firstFree_==numberRows_+numberColumns_)
    30143014        firstFree_=-1;
    3015       if (returnValue>=0&&getStatus(returnValue)!=superBasic)
     3015      if (returnValue>=0&&getStatus(returnValue)!=superBasic&&getStatus(returnValue)!=isFree)
    30163016        finished=false; // somehow picked up odd one
    30173017    }
  • branches/devel/Clp/src/Idiot.cpp

    r1007 r1010  
    130130      }
    131131    }
     132    // temp fix for infinite lbs - just limit to -1000
    132133    for (i=0;i<nrows;i++) {
    133134      double rowSave=rowsol[i];
     
    138139        double rowValue=rowsol[i];
    139140        CoinBigIndex j=columnStart[iCol];
    140         rowSave += (colsol[iCol]-lower[iCol])*element[j];
    141         colsol[iCol]=lower[iCol];
     141        double lowerValue = CoinMax(CoinMin(colsol[iCol],0.0)-1000.0,lower[iCol]);
     142        rowSave += (colsol[iCol]-lowerValue)*element[j];
     143        colsol[iCol]=lowerValue;
    142144        while (nextSlack[iCol]>=0) {
    143145          iCol = nextSlack[iCol];
     146          double lowerValue = CoinMax(CoinMin(colsol[iCol],0.0)-1000.0,lower[iCol]);
    144147          j=columnStart[iCol];
    145           rowSave += (colsol[iCol]-lower[iCol])*element[j];
    146           colsol[iCol]=lower[iCol];
     148          rowSave += (colsol[iCol]-lowerValue)*element[j];
     149          colsol[iCol]=lowerValue;
    147150        }
    148151        iCol =posSlack[i];
     
    152155          double value = element[columnStart[iCol]];
    153156          double thisCost = cost[iCol];
    154           if (distance<=value*(upper[iCol]-lower[iCol])) {
     157          if (distance<=value*(upper[iCol]-colsol[iCol])) {
    155158            // can get there
    156159            double movement = distance/value;
     
    160163          } else {
    161164            // can't get there
    162             double movement = upper[iCol]-lower[iCol];
     165            double movement = upper[iCol]-colsol[iCol];
    163166            objValue += movement*thisCost;
    164167            rowValue += movement*value;
     
    205208        rowSave += (colsol[iCol]-lower[iCol])*element[j];
    206209        colsol[iCol]=lower[iCol];
     210        assert (lower[iCol]>-1.0e20);
    207211        while (nextSlack[iCol]>=0) {
    208212          iCol = nextSlack[iCol];
Note: See TracChangeset for help on using the changeset viewer.