Changeset 2143 for stable


Ignore:
Timestamp:
May 20, 2015 11:49:17 AM (5 years ago)
Author:
forrest
Message:

tiny new option

Location:
stable/1.16/Clp/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • stable/1.16/Clp/src/Idiot.cpp

    r2078 r2143  
    498498               numberSlacks++;
    499499     }
    500      if (!numberSlacks) {
     500     if (!numberSlacks || (strategy_&524288)!=0) {
    501501          whenUsed_ = new int[ncols];
    502502     } else {
     
    676676               scaled = model_->clpMatrix()->scale(model_) == 0;
    677677          if (scaled) {
     678#define IDIOT_SCALE 2
     679#ifndef IDIOT_SCALE
    678680               const double * rowScale = model_->rowScale();
     681#else
     682               double * rowScale = model_->mutableRowScale();
     683#endif
    679684               const double * columnScale = model_->columnScale();
    680685               double * oldLower = lower;
     
    688693               CoinMemcpyN(oldCost, ncols, cost);
    689694               int icol, irow;
     695#if IDIOT_SCALE<0
     696               for (irow = 0; irow < nrows; irow++) {
     697                 rowlower[irow]=1.0e100;
     698                 rowupper[irow]=1.0e-100;
     699               }
     700#endif
    690701               for (icol = 0; icol < ncols; icol++) {
    691702                    double multiplier = 1.0 / columnScale[icol];
     
    696707                    colsol[icol] *= multiplier;
    697708                    cost[icol] *= columnScale[icol];
    698                }
     709#if IDIOT_SCALE<0
     710                    CoinBigIndex j;
     711                    double scale = columnScale[i];
     712                    for (j = columnStart[i]; j < columnStart[i] + columnLength[i]; j++) {
     713                         int jrow = row[j];
     714                         double scaledValue = fabs(scale*element[j]);
     715                         rowlower[jrow]=CoinMin(rowlower[jrow],scaledValue);
     716                         rowupper[jrow]=CoinMax(rowupper[jrow],scaledValue);
     717                    }
     718#endif
     719               }
     720#ifdef IDIOT_SCALE
     721#if IDIOT_SCALE>1||IDIOT_SCALE<-1
     722               const double * rowLower=model_->rowLower();
     723               const double * rowUpper=model_->rowUpper();
     724#endif
     725               for (irow = 0; irow < nrows; irow++) {
     726#if IDIOT_SCALE<0
     727                 double multiplier = 1.0/sqrt(rowlower[irow]*rowupper[irow]);
     728#else
     729                 double multiplier = rowScale[irow];
     730#endif
     731#if IDIOT_SCALE>1||IDIOT_SCALE<-1
     732#define EQUALITY_MULTIPLIER 2
     733                 if (rowLower[irow]==rowUpper[irow])
     734                   multiplier *= EQUALITY_MULTIPLIER;
     735#if IDIOT_SCALE>2||IDIOT_SCALE<-2
     736                 if (rowLower[irow]==rowUpper[irow]&&!rowlower[irow])
     737                   multiplier *= EQUALITY_MULTIPLIER;
     738#endif
     739#endif
     740                 rowScale[irow]=multiplier;
     741               }
     742               CoinMemcpyN(model_->rowUpper(), nrows, rowupper);
     743#endif
    699744               CoinMemcpyN(model_->rowLower(), nrows, rowlower);
    700745               for (irow = 0; irow < nrows; irow++) {
     
    13661411     }
    13671412#if 0
    1368      maybe put back - but just get feasible ?
     1413     //maybe put back - but just get feasible ?
    13691414     // If not many fixed then just exit
    13701415     int numberFixed = 0;
     
    13751420               numberFixed++;
    13761421     }
    1377      if (numberFixed < ncols / 2) {
     1422     if (numberFixed < ncols / 3) {
    13781423          addAll = 3;
    13791424          presolve = 0;
  • stable/1.16/Clp/src/Idiot.hpp

    r2078 r2143  
    291291                 65536 - experimental 2
    292292                 131072 - experimental 3
    293                  262144 - just values pass etc */
     293                 262144 - just values pass etc
     294                 524288 - don't treat structural slacks as slacks */
    294295                 
    295296     int lightWeight_; // 0 - normal, 1 lightweight
Note: See TracChangeset for help on using the changeset viewer.