Ignore:
Timestamp:
Dec 12, 2013 10:40:41 AM (6 years ago)
Author:
forrest
Message:

changes for parallel and idiot

File:
1 edited

Legend:

Unmodified
Added
Removed
  • stable/1.15/Clp/src/AbcSimplexPrimal.cpp

    r1910 r2006  
    332332      if (factorType)
    333333        statusOfProblemInPrimal(factorType);
     334      if (problemStatus_==10 && (moreSpecialOptions_ & 2048) != 0) {
     335        problemStatus_=0;
     336      }
    334337      if (initialStatus == 10) {
    335338        initialStatus=-1;
     
    436439  // clean up
    437440  unflag();
     441  abcProgress_.clearTimesFlagged();
    438442#if ABC_PARALLEL>0
    439443  if (parallelMode()) {
     
    512516  // status stays at -1 while iterating, >=0 finished, -2 to invert
    513517  // status -3 to go to top without an invert
     518  int numberFlaggedStart =abcProgress_.timesFlagged();
    514519  while (problemStatus_ == -1) {
    515520    if (!ifValuesPass) {
     
    650655        problemStatus_ = -2; //
    651656      } else if (returnCode == -5) {
     657        if (abcProgress_.timesFlagged()>10+numberFlaggedStart)
     658          problemStatus_ =-2;
    652659        if ((moreSpecialOptions_ & 16) == 0 && abcFactorization_->pivots()) {
    653660          moreSpecialOptions_ |= 16;
     
    795802              setFlagged(sequenceOut_);
    796803            }
     804            abcProgress_.incrementTimesFlagged();
    797805            double newTolerance = CoinMax(0.5 + 0.499 * randomNumberGenerator_.randomDouble(), abcFactorization_->pivotTolerance());
    798806            abcFactorization_->pivotTolerance(newTolerance);
     
    959967            setFlagged(sequenceOut_);
    960968          }
     969          abcProgress_.incrementTimesFlagged();
    961970        }
    962971        type = 2; // so will restore weights
     
    9921001  else
    9931002    loop = -1;
     1003  if ((moreSpecialOptions_ & 2048) != 0 && !numberPrimalInfeasibilities_ && numberDualInfeasibilities_) {
     1004    double average = sumDualInfeasibilities_ / (static_cast<double> (numberDualInfeasibilities_));
     1005    if (abcProgress_.lastIterationNumber(2)==numberIterations_&&
     1006        ((abcProgress_.timesFlagged()>2&&average < 1.0e-1)||
     1007         abcProgress_.timesFlagged()>20)) {
     1008      numberDualInfeasibilities_ = 0;
     1009      sumDualInfeasibilities_ = 0.0;
     1010      problemStatus_=3;
     1011      loop=0;
     1012    }
     1013  }
    9941014  if (loop >= 0) {
    9951015    if (!problemStatus_) {
     
    12651285#endif
    12661286          unflag();
     1287        abcProgress_.clearTimesFlagged();
    12671288#if ABC_NORMAL_DEBUG>3
    12681289        if (unflagged && handler_->logLevel() > 0)
     
    13741395      }
    13751396      bool unflagged = (unflag() != 0);
     1397      abcProgress_.clearTimesFlagged();
    13761398      if ( lastCleaned_ != numberIterations_ || unflagged) {
    13771399        handler_->message(CLP_PRIMAL_OPTIMAL, messages_)
     
    14711493        //bool unflagged =
    14721494        unflag();
     1495        abcProgress_.clearTimesFlagged();
    14731496        if (sumDualInfeasibilities_ < 1.0e-3 ||
    14741497            (sumDualInfeasibilities_ / static_cast<double> (numberDualInfeasibilities_)) < 1.0e-5 ||
     
    17001723                            int valuesPass)
    17011724{
    1702 #if 0
     1725#if 1
    17031726  for (int iRow=0;iRow<numberRows_;iRow++) {
    17041727    int iPivot=abcPivotVariable_[iRow];
     
    31543177  // unflag
    31553178  unflag();
     3179  abcProgress_.clearTimesFlagged();
    31563180  // get a valid nonlinear cost function
    31573181  delete abcNonLinearCost_;
     
    32913315            << CoinMessageEol;
    32923316          setFlagged(sequenceIn_);
     3317          abcProgress_.incrementTimesFlagged();
    32933318          abcProgress_.clearBadTimes();
    32943319          lastBadIteration_ = numberIterations_; // say be more cautious
     
    33483373              << CoinMessageEol;
    33493374            setFlagged(sequenceIn_);
     3375            abcProgress_.incrementTimesFlagged();
    33503376#if 1 //def FEB_TRY
    33513377            // Make safer?
     
    34203446            << CoinMessageEol;
    34213447          setFlagged(sequenceIn_);
     3448          abcProgress_.incrementTimesFlagged();
    34223449          abcProgress_.clearBadTimes();
    34233450          lastBadIteration_ = numberIterations_; // say be more cautious
     
    34653492              << CoinMessageEol;
    34663493            setFlagged(sequenceIn_);
     3494            abcProgress_.incrementTimesFlagged();
    34673495            abcProgress_.clearBadTimes();
    34683496            roundAgain = true;
     
    37333761            << CoinMessageEol;
    37343762          setFlagged(sequenceIn_);
     3763          abcProgress_.incrementTimesFlagged();
    37353764          abcProgress_.clearBadTimes();
    37363765          lastBadIteration_ = numberIterations_; // say be more cautious
     
    39413970        << CoinMessageEol;
    39423971      setFlagged(sequenceIn_);
     3972      abcProgress_.incrementTimesFlagged();
    39433973      abcProgress_.clearBadTimes();
    39443974      lastBadIteration_ = numberIterations_; // say be more cautious
Note: See TracChangeset for help on using the changeset viewer.