Changeset 2206 for trunk


Ignore:
Timestamp:
Feb 12, 2016 5:03:24 AM (4 years ago)
Author:
forrest
Message:

fix handling of free slacks

Location:
trunk/Clp/src
Files:
2 edited

Legend:

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

    r2182 r2206  
    24012401               if (iStatus) {
    24022402                    double value = reducedCost[iSequence] - theta * alphaI;
     2403                    assert (iStatus>0);
    24032404                    reducedCost[iSequence] = value;
    24042405                    double mult = multiplier[iStatus-1];
     
    24842485                    if (iStatus) {
    24852486                         double value = reducedCost[iSequence] - theta * alphaI;
     2487                         assert (iStatus>0);
    24862488                         reducedCost[iSequence] = value;
    24872489                         //printf("xx %d %.18g\n",iSequence,reducedCost[iSequence]);
     
    36133615                                   alpha_ = alpha;
    36143616                              }
     3617                              // give fake bounds if possible
     3618                              int jSequence=iSequence+addSequence;
     3619                              if (2.0*fabs(solution_[jSequence])<
     3620                                  dualBound_) {
     3621                                FakeBound bound = getFakeBound(jSequence);
     3622                                assert (bound == ClpSimplexDual::noFake);
     3623                                setFakeBound(jSequence,ClpSimplexDual::bothFake);
     3624                                numberFake_++;
     3625                                value = oldValue - tentativeTheta * alpha;
     3626                                if (value > dualTolerance_) {
     3627                                  // pretend coming in from upper bound
     3628                                  upper_[jSequence] = solution_[jSequence];
     3629                                  lower_[jSequence] = upper_[jSequence] - dualBound_;
     3630                                  setColumnStatus(jSequence,ClpSimplex::atUpperBound);
     3631                                } else {
     3632                                  // pretend coming in from lower bound
     3633                                  lower_[jSequence] = solution_[jSequence];
     3634                                  upper_[jSequence] = lower_[jSequence] + dualBound_;
     3635                                  setColumnStatus(jSequence,ClpSimplex::atLowerBound);
     3636                                }
     3637                              }
    36153638                         }
    36163639                         break;
     
    69226945          dual(0, 7);
    69236946          if (problemStatus_ == 10) {
    6924                ClpSimplex::dual(0, 0);
     6947               ClpSimplex::dual(0, 7);
    69256948               //if (problemStatus_)
    69266949               //printf("second go in hot start %d iterations - status %d\n",
    69276950               //       numberIterations_,problemStatus_);
    69286951               assert (problemStatus_ != 10);
    6929                if (problemStatus_ == 0) {
     6952               if (problemStatus_ == 0 && false) {
    69306953                 dual(0, 7);
    69316954#if 0
  • trunk/Clp/src/Idiot.cpp

    r2174 r2206  
    20132013                   }
    20142014                 }
    2015                  delete [] which;
    20162015                 for (int i = 0; i < nrows; i++) {
    20172016                   if (rowIsBasic[i]>=0) {
     
    20352034                   }
    20362035                 }
     2036                 delete [] which;
    20372037               }
    20382038          }
Note: See TracChangeset for help on using the changeset viewer.