Ignore:
Timestamp:
Jan 3, 2011 9:00:42 AM (9 years ago)
Author:
forrest
Message:

more sos heuristics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcModel.cpp

    r1521 r1569  
    21172117    }
    21182118    // Save objective (just so user can access it)
    2119     originalContinuousObjective_ = solver_->getObjValue();
     2119    originalContinuousObjective_ = solver_->getObjValue()* solver_->getObjSense();
    21202120    bestPossibleObjective_ = originalContinuousObjective_;
    21212121    sumChangeObjective1_ = 0.0;
     
    43064306    secondaryStatus_ = -1;
    43074307    originalContinuousObjective_ = solver_->getObjValue() * solver_->getObjSense();
     4308    bestPossibleObjective_ = originalContinuousObjective_;
    43084309    delete [] continuousSolution_;
    43094310    continuousSolution_ = CoinCopyOfArray(solver_->getColSolution(),
     
    1285812859                    // see if heuristic will do anything
    1285912860                    double saveValue = heuristicValue ;
     12861                    double before = getCurrentSeconds();
    1286012862                    int ifSol = heuristic_[i]->solution(heuristicValue,
    1286112863                                                        newSolution);
     12864                    if (handler_->logLevel()>1) {
     12865                      char line[100];
     12866                      sprintf(line,"Heuristic %s took %g seconds",
     12867                              heuristic_[i]->heuristicName(),
     12868                              getCurrentSeconds()-before);
     12869                      handler_->message(CBC_GENERAL, messages_) <<
     12870                        line << CoinMessageEol ;
     12871                    }
    1286212872                    if (ifSol > 0) {
    1286312873                        // better solution found
     
    1288012890                            if (heuristic_[i]->exitNow(bestObjective_))
    1288112891                                break;
     12892                            if (eventHandler) {
     12893                              if (!eventHandler->event(CbcEventHandler::heuristicSolution)) {
     12894                                eventHappened_ = true; // exit
     12895                                break;
     12896                              }
     12897                            }
     12898                            double testGap = CoinMax(dblParam_[CbcAllowableGap],
     12899                                                     CoinMax(fabs(bestObjective_), fabs(bestPossibleObjective_))
     12900                                                     * dblParam_[CbcAllowableFractionGap]);
     12901                            if (bestObjective_ - bestPossibleObjective_ < testGap && getCutoffIncrement() >= 0.0 &&bestPossibleObjective_ < 1.0e30) {
     12902                              if (bestPossibleObjective_ < getCutoff())
     12903                                stoppedOnGap_ = true ;
     12904                              //eventHappened_=true; // stop as fast as possible
     12905                              break;
     12906                            }
    1288212907                        } else {
    1288312908                            // NOT better solution
Note: See TracChangeset for help on using the changeset viewer.