Ignore:
Timestamp:
Oct 4, 2002 4:58:06 PM (18 years ago)
Author:
forrest
Message:

Presolve (no changes to Makefile)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/devel-1/Test/ClpMain.cpp

    r26 r29  
    3030#include "ClpPrimalColumnSteepest.hpp"
    3131#include "ClpPrimalColumnDantzig.hpp"
     32
     33#include "Presolve.hpp"
    3234// For Branch and bound
    3335//  #include "OsiClpSolverInterface.hpp"
     
    6668
    6769int mainTest (int argc, const char *argv[],bool doDual,
    68               ClpSimplex empty);
     70              ClpSimplex empty, bool doPresolve);
    6971enum ClpParameterType {
    7072  GENERALQUERY=-100,
     
    7577 
    7678  DIRECTION=201,DUALPIVOT,SCALING,ERRORSALLOWED,KEEPNAMES,SPARSEFACTOR,
    77   PRIMALPIVOT,
     79  PRIMALPIVOT,PRESOLVE,
    7880 
    7981  DIRECTORY=301,IMPORT,EXPORT,RESTORE,SAVE,DUALSIMPLEX,PRIMALSIMPLEX,BAB,
     
    794796    parameters[numberParameters-1].append("off");
    795797    parameters[numberParameters++]=
     798      ClpItem("presolve","Whether to presolve problem",
     799              "off",PRESOLVE);
     800    parameters[numberParameters-1].append("on");
     801    parameters[numberParameters++]=
    796802      ClpItem("spars!eFactor","Whether factorization treated as sparse",
    797803              "on",SPARSEFACTOR);
     
    888894    int allowImportErrors=0;
    889895    int keepImportNames=1;
     896    int preSolve=0;
    890897   
    891898    int iModel=0;
     
    10501057              keepImportNames = 1-action;
    10511058              break;
     1059            case PRESOLVE:
     1060              preSolve = action;
     1061              break;
    10521062            default:
    10531063              abort();
     
    10631073            if (goodModels[iModel]) {
    10641074              int saveMaxIterations = models[iModel].maximumIterations();
     1075              Presolve pinfo;
     1076              ClpSimplex * model2 = models+iModel;
     1077              if (preSolve)
     1078                model2 = pinfo.presolvedModel(models[iModel],1.0e-8);
     1079
    10651080#ifdef READLINE     
    1066               currentModel = models+iModel;
     1081              currentModel = model2;
    10671082#endif
    10681083              if (type==DUALSIMPLEX)
    1069                 models[iModel].dual();
     1084                model2->dual();
    10701085              else
    1071                 models[iModel].primal();
     1086                model2->primal();
     1087              if (preSolve) {
     1088                pinfo.postsolve(true);
     1089               
     1090                delete model2;
     1091                printf("Resolving from postsolved model\n");
     1092               
     1093#ifdef READLINE     
     1094                currentModel = models+iModel;
     1095#endif
     1096                models[iModel].primal(1);
     1097              }
    10721098              models[iModel].setMaximumIterations(saveMaxIterations);
    10731099              time2 = cpuTime();
     
    13221348              else
    13231349                std::cerr<<"Doing netlib with primal agorithm"<<std::endl;
    1324               mainTest(nFields,fields,(type==NETLIB_DUAL),models[iModel]);
     1350              mainTest(nFields,fields,(type==NETLIB_DUAL),models[iModel],
     1351                       (preSolve!=0));
    13251352            }
    13261353            break;
     
    13361363                nFields=3;
    13371364              }
    1338               mainTest(nFields,fields,false,models[iModel]);
     1365              mainTest(nFields,fields,false,models[iModel],(preSolve!=0));
    13391366            }
    13401367            break;
Note: See TracChangeset for help on using the changeset viewer.