Ignore:
Timestamp:
May 10, 2011 8:33:58 AM (8 years ago)
Author:
forrest
Message:

messages for fathoming plus soem attempts at robustness

File:
1 edited

Legend:

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

    r1641 r1650  
    33573357    int lastPrintEvery = 0;
    33583358    int numberConsecutiveInfeasible = 0;
     3359#define PERTURB_IN_FATHOM
     3360#ifdef PERTURB_IN_FATHOM
     3361    // allow in fathom
     3362    if ((moreSpecialOptions_& 262144) != 0)
     3363      specialOptions_ |= 131072;
     3364#endif
    33593365    while (true) {
    33603366        lockThread();
     
    33973403                    // switch off perturbation
    33983404                    simplex->setPerturbation(100);
    3399 #ifdef PERTURB_IN_FATHOM
    3400                     // but allow in fathom
    3401                     specialOptions_ |= 131072;
    3402 #endif
    34033405#ifdef CLP_INVESTIGATE
    34043406                    printf("Perturbation switched off\n");
     
    37653767            node = tree_->bestNode(cutoff) ;
    37663768            // Possible one on tree worse than cutoff
    3767             // Wierd comparison function can leave ineligible nodes on tree
     3769            // Weird comparison function can leave ineligible nodes on tree
    37683770            if (!node || node->objectiveValue() > cutoff)
    37693771                continue;
     
    1294512947                              break;
    1294612948                            }
     12949                            reducedCostFix();
    1294712950                        } else {
    1294812951                            // NOT better solution
     
    1352313526                            simplex->setLogLevel(0);
    1352413527                        clpSolver->setBasis();
    13525 #ifdef PERTURB_IN_FATHOM
    1352613528                        int perturbation = simplex->perturbation();
    1352713529                        if ((specialOptions_&131072) != 0) {
    13528                             assert (perturbation == 100);
     13530                            //assert (perturbation == 100);
    1352913531                            simplex->setPerturbation(50);
    1353013532                        }
     13533                        int saveMoreOptions = simplex->moreSpecialOptions();
     13534                        int flags = (moreSpecialOptions_>>18)&3;
     13535                        simplex->setMoreSpecialOptions(saveMoreOptions|flags<<11);
     13536#ifndef NO_FATHOM_PRINT
     13537                        info->startingDepth_ = node->depth();
     13538                        info->nodeCalled_ = numberNodes_;
     13539                        info->handler_ = handler_;
    1353113540#endif
    1353213541                        feasible = simplex->fathom(info) != 0;
    13533 #ifdef PERTURB_IN_FATHOM
     13542                        simplex->setMoreSpecialOptions(saveMoreOptions);
    1353413543                        simplex->setPerturbation(perturbation);
    13535 #endif
    1353613544                        numberExtraNodes_ += info->numberNodesExplored_;
    1353713545                        numberExtraIterations_ += info->numberIterations_;
    13538                         if (info->numberNodesExplored_ > 10000) {
     13546                        if (info->numberNodesExplored_ > 10000 /* && !feasible */
     13547                            && (moreSpecialOptions_&524288) == 0  && info->nNodes_>=0) {
    1353913548                            fastNodeDepth_ --;
     13549#ifndef NO_FATHOM_PRINT
     13550                            if ((moreSpecialOptions_&262144) != 0)
     13551                              handler_->message(CBC_FATHOM_CHANGE, messages_) <<
     13552                                FATHOM_BIAS - fastNodeDepth_ << CoinMessageEol ;
     13553#endif
    1354013554#ifdef CLP_INVESTIGATE
    1354113555                            printf(">10000 - depth now %d so at depth >= %d\n",
     
    1354613560                            // we gave up
    1354713561                            //abort();
    13548                             fastNodeDepth_ -= 2;
     13562                            fastNodeDepth_ -= 3;
     13563#ifndef NO_FATHOM_PRINT
     13564                          if ((moreSpecialOptions_&262144) != 0)
     13565                            handler_->message(CBC_FATHOM_CHANGE, messages_) <<
     13566                              FATHOM_BIAS - fastNodeDepth_ << CoinMessageEol ;
     13567#endif
    1354913568#ifdef CLP_INVESTIGATE
    1355013569                            printf("fastNodeDepth now %d - so at depth >= %d\n",
Note: See TracChangeset for help on using the changeset viewer.