Changeset 105


Ignore:
Timestamp:
Jan 25, 2003 3:38:01 PM (17 years ago)
Author:
forrest
Message:

Fixing over-enthusiastic corrections for free

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ClpSimplexDual.cpp

    r104 r105  
    564564                                                         pivotRow_,
    565565                                                         alpha_);
    566         if (updateStatus==1) {
     566        // if no pivots, bad update but reasonable alpha - take and invert
     567        if (updateStatus==2&&
     568                   !factorization_->pivots()&&fabs(alpha_)>1.0e-5)
     569          updateStatus=4;
     570        if (updateStatus==1||updateStatus==4) {
    567571          // slight error
    568           if (factorization_->pivots()>5) {
     572          if (factorization_->pivots()>5||updateStatus==4) {
    569573            problemStatus_=-2; // factorize now
    570574            returnCode=-3;
     
    675679            break;
    676680        }
    677         if (iRow<numberRows_) {
    678 #ifdef CLP_DEBUG
    679           std::cerr<<"Flagged variables at end - infeasible?"<<std::endl;
    680 #endif
    681         }
    682681        if (numberFake_||numberDualInfeasibilities_) {
    683682          // may be dual infeasible
    684683          problemStatus_=-5;
    685684        } else {
    686           problemStatus_=0;
     685          if (iRow<numberRows_) {
     686#ifdef CLP_DEBUG
     687            std::cerr<<"Flagged variables at end - infeasible?"<<std::endl;
     688            printf("Probably infeasible - pivot was %g\n",alpha_);
     689#endif
     690            if (fabs(alpha_)<1.0e-4) {
     691              problemStatus_=1;
     692            } else {
     693#ifdef CLP_DEBUG
     694              abort();
     695#endif
     696            }
     697          } else {
     698            problemStatus_=0;
     699          }
    687700        }
    688701      } else {
     
    21022115          problemStatus_=-1; // carry on as normal
    21032116        }
     2117        situationChanged=0;
    21042118      } else {
    21052119        // iterate
  • trunk/ClpSimplexPrimal.cpp

    r104 r105  
    536536                                                         pivotRow_,
    537537                                                         alpha_);
    538         if (updateStatus==1) {
     538        // if no pivots, bad update but reasonable alpha - take and invert
     539        if (updateStatus==2&&
     540                   saveNumber==numberIterations_&&fabs(alpha_)>1.0e-5)
     541          updateStatus=4;
     542        if (updateStatus==1||updateStatus==4) {
    539543          // slight error
    540           if (factorization_->pivots()>5) {
     544          if (factorization_->pivots()>5||updateStatus==4) {
    541545            problemStatus_=-2; // factorize now
    542546            returnCode=-3;
Note: See TracChangeset for help on using the changeset viewer.