Changeset 1464 for trunk/Clp


Ignore:
Timestamp:
Nov 28, 2009 6:11:05 AM (10 years ago)
Author:
forrest
Message:

minor changes for stability

Location:
trunk/Clp/src
Files:
3 edited

Legend:

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

    r1434 r1464  
    30713071  1.04.01 June 26 2007.  Lots of changes but I got lazy
    30723072  1.05.00 June 27 2007.  This is trunk so when gets to stable will be 1.5
     3073  1.11.00 November 5 2009 (Guy Fawkes) - OSL factorization and better ordering
    30733074 */
  • trunk/Clp/src/ClpPresolve.cpp

    r1402 r1464  
    606606        // later do faster if many changes i.e. memset and memcpy
    607607        prob->numberRowsToDo_ = prob->numberNextRowsToDo_;
    608         int kcheck;
    609         bool found=false;
    610         kcheck=-1;
     608        //int kcheck;
     609        //bool found=false;
     610        //kcheck=-1;
    611611        for (i=0;i<prob->numberNextRowsToDo_;i++) {
    612612          int index = prob->nextRowsToDo_[i];
    613613          prob->unsetRowChanged(index);
    614614          prob->rowsToDo_[i] = index;
    615           if (index==kcheck) {
    616             printf("row %d on list after pass %d\n",kcheck,
    617                    whichPass);
    618             found=true;
    619           }
    620         }
    621         if (!found&&kcheck>=0)
    622           prob->rowsToDo_[prob->numberRowsToDo_++]=kcheck;
     615          //if (index==kcheck) {
     616          //printf("row %d on list after pass %d\n",kcheck,
     617          //   whichPass);
     618          //found=true;
     619          //}
     620        }
     621        //if (!found&&kcheck>=0)
     622        //prob->rowsToDo_[prob->numberRowsToDo_++]=kcheck;
    623623        prob->numberNextRowsToDo_=0;
    624624        prob->numberColsToDo_ = prob->numberNextColsToDo_;
    625         kcheck=-1;
    626         found=false;
     625        //kcheck=-1;
     626        //found=false;
    627627        for (i=0;i<prob->numberNextColsToDo_;i++) {
    628628          int index = prob->nextColsToDo_[i];
    629629          prob->unsetColChanged(index);
    630630          prob->colsToDo_[i] = index;
    631           if (index==kcheck) {
    632             printf("col %d on list after pass %d\n",kcheck,
    633                    whichPass);
    634             found=true;
    635           }
    636         }
    637         if (!found&&kcheck>=0)
    638           prob->colsToDo_[prob->numberColsToDo_++]=kcheck;
     631          //if (index==kcheck) {
     632          //printf("col %d on list after pass %d\n",kcheck,
     633          //   whichPass);
     634          //found=true;
     635          //}
     636        }
     637        //if (!found&&kcheck>=0)
     638        //prob->colsToDo_[prob->numberColsToDo_++]=kcheck;
    639639        prob->numberNextColsToDo_=0;
    640640        if (paction_ == paction1&&fill_level>0)
  • trunk/Clp/src/ClpSimplexPrimal.cpp

    r1453 r1464  
    14541454  if (goToDual)
    14551455    problemStatus_=10; // try dual
     1456  // If bad go to dual
     1457  if (numberIterations_>1000&&largestPrimalError_>1.0e6
     1458      &&largestDualError_>1.0e6)
     1459    problemStatus_=10; // try dual
    14561460  // make sure first free monotonic
    14571461  if (firstFree_>=0&&saveFirstFree>=0) {
     
    27962800        fabs(saveDj-dualIn_)>checkValue*(1.0+fabs(saveDj))||
    27972801                        fabs(dualIn_)<test2)) {
    2798       char x = isColumn(sequenceIn_) ? 'C' :'R';
    2799       handler_->message(CLP_PRIMAL_DJ,messages_)
    2800         <<x<<sequenceWithin(sequenceIn_)
    2801         <<saveDj<<dualIn_
    2802         <<CoinMessageEol;
    2803       if(lastGoodIteration_ != numberIterations_) {
    2804         clearAll();
    2805         pivotRow_=-1; // say no weights update
    2806         returnCode=-4;
    2807         if(lastGoodIteration_+1 == numberIterations_) {
    2808           // not looking wonderful - try cleaning bounds
    2809           // put non-basics to bounds in case tolerance moved
    2810           nonLinearCost_->checkInfeasibilities(0.0);
    2811         }
    2812         sequenceOut_=-1;
    2813         break;
    2814       } else {
    2815         // take on more relaxed criterion
    2816         if (saveDj*dualIn_<test1||
    2817             fabs(saveDj-dualIn_)>2.0e-1*(1.0+fabs(dualIn_))||
    2818             fabs(dualIn_)<test2) {
    2819           // need to reject something
    2820           char x = isColumn(sequenceIn_) ? 'C' :'R';
    2821           handler_->message(CLP_SIMPLEX_FLAG,messages_)
    2822             <<x<<sequenceWithin(sequenceIn_)
    2823             <<CoinMessageEol;
    2824           setFlagged(sequenceIn_);
    2825 #ifdef FEB_TRY
    2826           // Make safer?
    2827           factorization_->saferTolerances (1.0e-15,-1.03);
    2828 #endif
    2829           progress_.clearBadTimes();
    2830           lastBadIteration_ = numberIterations_; // say be more cautious
     2802      if (!(saveDj*dualIn_>0.0&&CoinMin(fabs(saveDj),fabs(dualIn_))>
     2803            1.0e5)) {
     2804        char x = isColumn(sequenceIn_) ? 'C' :'R';
     2805        handler_->message(CLP_PRIMAL_DJ,messages_)
     2806          <<x<<sequenceWithin(sequenceIn_)
     2807          <<saveDj<<dualIn_
     2808          <<CoinMessageEol;
     2809        if(lastGoodIteration_ != numberIterations_) {
    28312810          clearAll();
    2832           pivotRow_=-1;
    2833           returnCode=-5;
     2811          pivotRow_=-1; // say no weights update
     2812          returnCode=-4;
     2813          if(lastGoodIteration_+1 == numberIterations_) {
     2814            // not looking wonderful - try cleaning bounds
     2815            // put non-basics to bounds in case tolerance moved
     2816            nonLinearCost_->checkInfeasibilities(0.0);
     2817          }
    28342818          sequenceOut_=-1;
    28352819          break;
    2836         }
     2820        } else {
     2821          // take on more relaxed criterion
     2822          if (saveDj*dualIn_<test1||
     2823              fabs(saveDj-dualIn_)>2.0e-1*(1.0+fabs(dualIn_))||
     2824              fabs(dualIn_)<test2) {
     2825            // need to reject something
     2826            char x = isColumn(sequenceIn_) ? 'C' :'R';
     2827            handler_->message(CLP_SIMPLEX_FLAG,messages_)
     2828              <<x<<sequenceWithin(sequenceIn_)
     2829              <<CoinMessageEol;
     2830            setFlagged(sequenceIn_);
     2831#ifdef FEB_TRY
     2832            // Make safer?
     2833            factorization_->saferTolerances (1.0e-15,-1.03);
     2834#endif
     2835            progress_.clearBadTimes();
     2836            lastBadIteration_ = numberIterations_; // say be more cautious
     2837            clearAll();
     2838            pivotRow_=-1;
     2839            returnCode=-5;
     2840            sequenceOut_=-1;
     2841            break;
     2842          }
     2843        }
     2844      } else {
     2845        //printf("%d %g %g\n",numberIterations_,saveDj,dualIn_);
    28372846      }
    28382847    }
Note: See TracChangeset for help on using the changeset viewer.