Ignore:
Timestamp:
Mar 15, 2011 12:57:45 PM (9 years ago)
Author:
forrest
Message:

add debug info and take out possible memory leak

File:
1 edited

Legend:

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

    r1699 r1703  
    438438     delete [] rsol;
    439439}
     440#endif
     441//#define COIN_PRESOLVE_BUG
     442#ifdef COIN_PRESOLVE_BUG
     443static int counter=1000000;
     444static bool break2(CoinPresolveMatrix *prob)
     445{
     446  counter--;
     447  if (!counter) {
     448    printf("skipping next and all\n");
     449  }
     450  return (counter<=0);
     451}
     452#define possibleBreak if (break2(prob)) break
     453#define possibleSkip  if (!break2(prob))
     454#else
     455#define possibleBreak
     456#define possibleSkip
    440457#endif
    441458// This is the presolve loop.
     
    513530               if ((presolveActions_ & 512) != 0)
    514531                    prob->setPresolveOptions(prob->presolveOptions() | 1);
     532               possibleSkip;
    515533               paction_ = dupcol_action::presolve(prob, paction_);
    516534          }
    517535          if (duprow) {
     536            possibleSkip;
    518537               paction_ = duprow_action::presolve(prob, paction_);
    519538          }
    520539          if (doGubrow()) {
     540            possibleSkip;
    521541               paction_ = gubrow_action::presolve(prob, paction_);
    522542          }
     
    563583                    if (slackd) {
    564584                         bool notFinished = true;
    565                          while (notFinished)
     585                         while (notFinished) {
     586                           possibleBreak;
    566587                              paction_ = slack_doubleton_action::presolve(prob, paction_,
    567588                                         notFinished);
     589                         }
    568590                         if (prob->status_)
    569591                              break;
     
    571593                    if (dual && whichPass == 1) {
    572594                         // this can also make E rows so do one bit here
     595                      possibleBreak;
    573596                         paction_ = remove_dual_action::presolve(prob, paction_);
    574597                         if (prob->status_)
     
    577600
    578601                    if (doubleton) {
     602                      possibleBreak;
    579603                         paction_ = doubleton_action::presolve(prob, paction_);
    580604                         if (prob->status_)
     
    582606                    }
    583607                    if (tripleton) {
     608                      possibleBreak;
    584609                         paction_ = tripleton_action::presolve(prob, paction_);
    585610                         if (prob->status_)
     
    588613
    589614                    if (zerocost) {
     615                      possibleBreak;
    590616                         paction_ = do_tighten_action::presolve(prob, paction_);
    591617                         if (prob->status_)
     
    594620#ifndef NO_FORCING
    595621                    if (forcing) {
     622                      possibleBreak;
    596623                         paction_ = forcing_constraint_action::presolve(prob, paction_);
    597624                         if (prob->status_)
     
    601628
    602629                    if (ifree && (whichPass % 5) == 1) {
     630                      possibleBreak;
    603631                         paction_ = implied_free_action::presolve(prob, paction_, fill_level);
    604632                         if (prob->status_)
     
    704732                    int itry;
    705733                    for (itry = 0; itry < 5; itry++) {
     734                      possibleBreak;
    706735                         paction_ = remove_dual_action::presolve(prob, paction_);
    707736                         if (prob->status_)
     
    716745#endif
    717746#endif
    718                               if ((itry & 1) == 0)
     747                              if ((itry & 1) == 0) {
     748                                possibleBreak;
    719749                                   paction_ = implied_free_action::presolve(prob, paction_, fill_level);
     750                              }
    720751                              if (prob->status_)
    721752                                   break;
     
    733764#endif
    734765#endif
     766                    possibleBreak;
    735767                    paction_ = implied_free_action::presolve(prob, paction_, fill_level);
    736768                    if (prob->status_)
     
    744776                    if ((presolveActions_ & 512) != 0)
    745777                         prob->setPresolveOptions(prob->presolveOptions() | 1);
     778                    possibleBreak;
    746779                    paction_ = dupcol_action::presolve(prob, paction_);
    747780                    if (prob->status_)
     
    753786
    754787               if (duprow) {
     788                 possibleBreak;
    755789                    paction_ = duprow_action::presolve(prob, paction_);
    756790                    if (prob->status_)
     
    783817                    // On most passes do not touch costed slacks
    784818                    if (paction_ != paction0 && !stopLoop) {
     819                      possibleBreak;
    785820                         paction_ = slack_singleton_action::presolve(prob, paction_, NULL);
    786821                    } else {
    787822                         // do costed if Clp (at end as ruins rest of presolve)
     823                      possibleBreak;
    788824                         paction_ = slack_singleton_action::presolve(prob, paction_, rowObjective_);
    789825                         stopLoop = true;
Note: See TracChangeset for help on using the changeset viewer.