Changeset 1434 for trunk/Clp


Ignore:
Timestamp:
Sep 24, 2009 4:48:01 PM (10 years ago)
Author:
forrest
Message:

minor changes

Location:
trunk/Clp/src
Files:
6 edited

Legend:

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

    r1424 r1434  
    8181
    8282int mainTest (int argc, const char *argv[],int algorithm,
    83               ClpSimplex empty, bool doPresolve,int switchOff,bool doVector);
     83              ClpSimplex empty, ClpSolve solveOptions,int switchOff,bool doVector);
    8484static void statistics(ClpSimplex * originalModel, ClpSimplex * model);
    8585static void generateCode(const char * fileName,int type);
     
    15541554              int specialOptions = models[iModel].specialOptions();
    15551555              models[iModel].setSpecialOptions(0);
     1556              ClpSolve solveOptions;
     1557              ClpSolve::PresolveType presolveType;
     1558              if (preSolve)
     1559                presolveType=ClpSolve::presolveOn;
     1560              else
     1561                presolveType=ClpSolve::presolveOff;
     1562              solveOptions.setPresolveType(presolveType,5);
     1563              if (doSprint>=0||doIdiot>=0) {
     1564                if (doSprint>0) {
     1565                  // sprint overrides idiot
     1566                  solveOptions.setSpecialOption(1,3,doSprint); // sprint
     1567                } else if (doIdiot>0) {
     1568                  solveOptions.setSpecialOption(1,2,doIdiot); // idiot
     1569                } else {
     1570                  if (doIdiot==0) {
     1571                    if (doSprint==0)
     1572                      solveOptions.setSpecialOption(1,4); // all slack
     1573                    else
     1574                      solveOptions.setSpecialOption(1,9); // all slack or sprint
     1575                  } else {
     1576                    if (doSprint==0)
     1577                      solveOptions.setSpecialOption(1,8); // all slack or idiot
     1578                    else
     1579                      solveOptions.setSpecialOption(1,7); // initiative
     1580                  }
     1581                }
     1582              }
    15561583              mainTest(nFields,fields,algorithm,models[iModel],
    1557                        (preSolve!=0),specialOptions,doVector!=0);
     1584                       solveOptions,specialOptions,doVector!=0);
    15581585            }
    15591586            break;
     
    15721599              if (models[iModel].numberRows())
    15731600                algorithm=7;
    1574               mainTest(nFields,fields,algorithm,models[iModel],(preSolve!=0),specialOptions,doVector!=0);
     1601              ClpSolve solveOptions;
     1602              ClpSolve::PresolveType presolveType;
     1603              if (preSolve)
     1604                presolveType=ClpSolve::presolveOn;
     1605              else
     1606                presolveType=ClpSolve::presolveOff;
     1607              solveOptions.setPresolveType(presolveType,5);
     1608              mainTest(nFields,fields,algorithm,models[iModel],
     1609                       solveOptions,specialOptions,doVector!=0);
    15751610            }
    15761611            break;
  • trunk/Clp/src/ClpPredictorCorrector.cpp

    r1402 r1434  
    199199  const CoinWorkDouble beta2 = 0.99995;
    200200  const CoinWorkDouble tau   = 0.00002;
    201   CoinWorkDouble lastComplementarityGap=COIN_DBL_MAX;
     201  CoinWorkDouble lastComplementarityGap=COIN_DBL_MAX*1.0e-20;
    202202  CoinWorkDouble lastStep=1.0;
    203203  // use to see if to take affine
     
    991991{
    992992  CoinWorkDouble directionNorm=0.0;
    993   CoinWorkDouble maximumPrimalStep=COIN_DBL_MAX;
     993  CoinWorkDouble maximumPrimalStep=COIN_DBL_MAX*1.0e-20;
    994994  CoinWorkDouble maximumDualStep=COIN_DBL_MAX;
    995995  int numberTotal = numberRows_+numberColumns_;
  • trunk/Clp/src/ClpSimplex.cpp

    r1429 r1434  
    787787  CoinIndexedVector * thisVector = arrayVector;
    788788  CoinIndexedVector * lastVector = previousVector;
    789   factorization_->updateColumn(workSpace,thisVector);
     789  if (number)
     790    factorization_->updateColumn(workSpace,thisVector);
    790791  double * work = workSpace->denseVector();
    791792#ifdef CLP_DEBUG
  • trunk/Clp/src/ClpSimplexDual.cpp

    r1429 r1434  
    13981398        // which will change basic solution
    13991399        if (nswapped) {
    1400           factorization_->updateColumn(rowArray_[3],rowArray_[2]);
    1401           dualRowPivot_->updatePrimalSolution(rowArray_[2],
    1402                                               1.0,objectiveChange);
     1400          if (rowArray_[2]->getNumElements()) {
     1401            factorization_->updateColumn(rowArray_[3],rowArray_[2]);
     1402            dualRowPivot_->updatePrimalSolution(rowArray_[2],
     1403                                                1.0,objectiveChange);
     1404          }
    14031405          // recompute dualOut_
    14041406          valueOut_ = solution_[sequenceOut_];
  • trunk/Clp/src/Idiot.cpp

    r1370 r1434  
    13201320      if (iCol>=0) {
    13211321        if (colsol[iCol]>lower[iCol]+1.0e-8&&
    1322             colsol[iCol]<upper[iCol]+1.0e-8) {
     1322            colsol[iCol]<upper[iCol]-1.0e-8) {
    13231323          model_->setColumnStatus(iCol,ClpSimplex::basic);
    13241324          n++;
     
    13271327          iCol = nextSlack[iCol];
    13281328          if (colsol[iCol]>lower[iCol]+1.0e-8&&
    1329               colsol[iCol]<upper[iCol]+1.0e-8) {
     1329              colsol[iCol]<upper[iCol]-1.0e-8) {
    13301330            model_->setColumnStatus(iCol,ClpSimplex::basic);
    13311331            n++;
     
    13361336      if (iCol>=0) {
    13371337        if (colsol[iCol]>lower[iCol]+1.0e-8&&
    1338             colsol[iCol]<upper[iCol]+1.0e-8) {
     1338            colsol[iCol]<upper[iCol]-1.0e-8) {
    13391339          model_->setColumnStatus(iCol,ClpSimplex::basic);
    13401340          n++;
     
    13431343          iCol = nextSlack[iCol];
    13441344          if (colsol[iCol]>lower[iCol]+1.0e-8&&
    1345               colsol[iCol]<upper[iCol]+1.0e-8) {
     1345              colsol[iCol]<upper[iCol]-1.0e-8) {
    13461346            model_->setColumnStatus(iCol,ClpSimplex::basic);
    13471347            n++;
  • trunk/Clp/src/unitTest.cpp

    r1402 r1434  
    252252//----------------------------------------------------------------
    253253int mainTest (int argc, const char *argv[],int algorithm,
    254               ClpSimplex empty, bool doPresolve, int switchOffValue,bool doVector)
     254              ClpSimplex empty, ClpSolve solveOptionsIn,
     255              int switchOffValue,bool doVector)
    255256{
    256257  int i;
     
    562563#endif
    563564      ClpSolve::SolveType method;
    564       ClpSolve::PresolveType presolveType;
    565       ClpSolve solveOptions;
    566       if (doPresolve)
    567         presolveType=ClpSolve::presolveOn;
    568       else
    569         presolveType=ClpSolve::presolveOff;
    570       solveOptions.setPresolveType(presolveType,5);
     565      ClpSolve solveOptions=solveOptionsIn;
    571566      std::string nameAlgorithm;
    572567      if (algorithm!=5) {
Note: See TracChangeset for help on using the changeset viewer.