Ignore:
Timestamp:
Mar 19, 2013 9:01:05 AM (7 years ago)
Author:
forrest
Message:

changes for miqp, parameters and presolve

File:
1 edited

Legend:

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

    r1910 r1924  
    871871#define possibleSkip
    872872#endif
     873#define SOME_PRESOLVE_DETAIL
     874#ifndef SOME_PRESOLVE_DETAIL
     875#define printProgress(x,y) {}
     876#else
     877#define printProgress(x,y) {if ((presolveActions_ & 0x80000000) != 0)   \
     878      printf("%c loop %d %d empty rows, %d empty columns\n",x,y,prob->countEmptyRows(), \
     879           prob->countEmptyCols());}
     880#endif
    873881// This is the presolve loop.
    874882// It is a separate virtual function so that it can be easily
     
    905913#endif
    906914     prob->status_ = 0; // say feasible
     915     printProgress('A',0);
    907916     paction_ = make_fixed(prob, paction_);
    908917     paction_ = testRedundant(prob,paction_) ;
     918     printProgress('B',0);
    909919     // if integers then switch off dual stuff
    910920     // later just do individually
     
    974984               possibleSkip;
    975985               paction_ = dupcol_action::presolve(prob, paction_);
     986               printProgress('C',0);
    976987          }
    977988#ifdef ABC_INHERIT
     
    988999                                            nTightened));
    9891000            paction_ = duprow_action::presolve(prob, paction_);
     1001            printProgress('D',0);
    9901002          }
    9911003          if (doGubrow()) {
    9921004            possibleSkip;
    9931005               paction_ = gubrow_action::presolve(prob, paction_);
     1006               printProgress('E',0);
    9941007          }
    9951008
    9961009          if ((presolveActions_ & 16384) != 0)
    9971010               prob->setPresolveOptions(prob->presolveOptions() | 16384);
     1011          // For inaccurate data in implied free
     1012          if ((presolveActions_ & 1024) != 0)
     1013               prob->setPresolveOptions(prob->presolveOptions() | 0x20000);
    9981014          // Check number rows dropped
    9991015          int lastDropped = 0;
     
    10151031               // See if we want statistics
    10161032               if ((presolveActions_ & 0x80000000) != 0)
    1017                     printf("Starting major pass %d after %g seconds\n", iLoop + 1, CoinCpuTime() - prob->startTime_);
     1033                 printf("Starting major pass %d after %g seconds with %d rows, %d columns\n", iLoop + 1, CoinCpuTime() - prob->startTime_,
     1034                        nrows_-prob->countEmptyRows(),
     1035                        ncols_-prob->countEmptyCols());
    10181036#ifdef PRESOLVE_SUMMARY
    10191037               printf("Starting major pass %d\n", iLoop + 1);
     
    10511069                                         notFinished);
    10521070                         }
     1071                         printProgress('F',iLoop+1);
    10531072                         if (prob->status_)
    10541073                              break;
     
    10601079                         if (prob->status_)
    10611080                              break;
     1081                         printProgress('G',iLoop+1);
    10621082                    }
    10631083
     
    10671087                         if (prob->status_)
    10681088                              break;
     1089                         printProgress('H',iLoop+1);
    10691090                    }
    10701091                    if (tripleton) {
     
    10731094                         if (prob->status_)
    10741095                              break;
     1096                         printProgress('I',iLoop+1);
    10751097                    }
    10761098
     
    10801102                         if (prob->status_)
    10811103                              break;
     1104                         printProgress('J',iLoop+1);
    10821105                    }
    10831106#ifndef NO_FORCING
     
    10871110                         if (prob->status_)
    10881111                              break;
     1112                         printProgress('K',iLoop+1);
    10891113                    }
    10901114#endif
     
    10951119                         if (prob->status_)
    10961120                              break;
     1121                         printProgress('L',iLoop+1);
    10971122                    }
    10981123
     
    11991224                         if (prob->status_)
    12001225                              break;
     1226                         printProgress('M',iLoop+1);
    12011227                         const CoinPresolveAction * const paction2 = paction_;
    12021228                         if (ifree) {
     
    12141240                              if (prob->status_)
    12151241                                   break;
     1242                              printProgress('N',iLoop+1);
    12161243                         }
    12171244                         if (paction_ == paction2)
     
    12311258                    if (prob->status_)
    12321259                         break;
     1260                    printProgress('O',iLoop+1);
    12331261               }
    12341262#if     PRESOLVE_DEBUG
     
    12431271                    if (prob->status_)
    12441272                         break;
     1273                    printProgress('P',iLoop+1);
    12451274               }
    12461275#if     PRESOLVE_DEBUG
     
    12531282                    if (prob->status_)
    12541283                         break;
     1284                    printProgress('Q',iLoop+1);
    12551285               }
    12561286               // Marginally slower on netlib if this call is enabled.
     
    12901320                         stopLoop = true;
    12911321                    }
     1322                    printProgress('R',iLoop+1);
    12921323               }
    12931324#if     PRESOLVE_DEBUG
Note: See TracChangeset for help on using the changeset viewer.