Ignore:
Timestamp:
Apr 28, 2008 11:38:45 AM (11 years ago)
Author:
forrest
Message:

many changes to try and improve performance

File:
1 edited

Legend:

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

    r1051 r1197  
    192192      rowstat = status + ncols0;
    193193      colstat = status;
    194       memcpy(colstat, presolvedModel_->statusArray(), ncols);
    195       memcpy(rowstat, presolvedModel_->statusArray()+ncols, nrows);
     194      CoinMemcpyN( presolvedModel_->statusArray(), ncols,colstat);
     195      CoinMemcpyN( presolvedModel_->statusArray()+ncols, nrows,rowstat);
    196196    }
    197197#ifndef CLP_NO_STD
     
    206206      rowstat = status + ncols0;
    207207      colstat = status;
    208       memcpy(colstat, presolvedModel_->statusArray(), ncols);
    209       memcpy(rowstat, presolvedModel_->statusArray()+ncols, nrows);
     208      CoinMemcpyN( presolvedModel_->statusArray(), ncols,colstat);
     209      CoinMemcpyN( presolvedModel_->statusArray()+ncols, nrows,rowstat);
    210210    }
    211211  }
     
    235235    originalModel_->restoreModel(saveFile_.c_str());
    236236    remove(saveFile_.c_str());
    237     memcpy(originalModel_->primalRowSolution(),acts,nrows0*sizeof(double));
     237    CoinMemcpyN(acts,nrows0,originalModel_->primalRowSolution());
    238238    // delete [] acts;
    239     memcpy(originalModel_->primalColumnSolution(),sol,ncols0*sizeof(double));
     239    CoinMemcpyN(sol,ncols0,originalModel_->primalColumnSolution());
    240240    // delete [] sol;
    241241    if (updateStatus) {
    242       memcpy(originalModel_->statusArray(),colstat,nrows0+ncols0);
     242      CoinMemcpyN(colstat,nrows0+ncols0,originalModel_->statusArray());
    243243      // delete [] colstat;
    244244    }
     
    252252#endif
    253253  // put back duals
    254   memcpy(originalModel_->dualRowSolution(),prob.rowduals_,
    255          nrows_*sizeof(double));
     254  CoinMemcpyN(prob.rowduals_,   nrows_,originalModel_->dualRowSolution());
    256255  double maxmin = originalModel_->getObjSense();
    257256  if (maxmin<0.0) {
     
    264263  // Now check solution
    265264  double offset;
    266   memcpy(originalModel_->dualColumnSolution(),
    267          originalModel_->objectiveAsObject()->gradient(originalModel_,
    268                                                        originalModel_->primalColumnSolution(),
    269                                                        offset,true),ncols_*sizeof(double));
     265  CoinMemcpyN(originalModel_->objectiveAsObject()->gradient(originalModel_,
     266                                                            originalModel_->primalColumnSolution(),offset,true),
     267              ncols_,originalModel_->dualColumnSolution());
    270268  originalModel_->transposeTimes(-1.0,
    271269                                 originalModel_->dualRowSolution(),
     
    439437  if (!prob->status_) {
    440438    bool slackSingleton = doSingletonColumn();
    441     slackSingleton = false;
     439    slackSingleton = true;
    442440    const bool slackd = doSingleton();
    443441    const bool doubleton = doDoubleton();
     
    689687          if (!hinrow[i])
    690688            numberDropped++;
    691        
     689
    692690        prob->messageHandler()->message(COIN_PRESOLVE_PASS,
    693691                                        messages)
     
    11221120  delete mRow;
    11231121  if (si->integerInformation()) {
    1124     memcpy(integerType_,si->integerInformation(),ncols_*sizeof(char));
     1122    CoinMemcpyN((unsigned char *) si->integerInformation(),ncols_,integerType_);
    11251123  } else {
    11261124    ClpFillN<unsigned char>(integerType_, ncols_, (unsigned char) 0);
     
    11761174    // allow for status and solution
    11771175    sol_ = new double[ncols_];
    1178     memcpy(sol_,si->primalColumnSolution(),ncols_*sizeof(double));;
     1176    CoinMemcpyN(si->primalColumnSolution(),ncols_,sol_);;
    11791177    acts_ = new double [nrows_];
    1180     memcpy(acts_,si->primalRowSolution(),nrows_*sizeof(double));
     1178    CoinMemcpyN(si->primalRowSolution(),nrows_,acts_);
    11811179    if (!si->statusArray())
    11821180      si->createStatus();
    11831181    colstat_ = new unsigned char [nrows_+ncols_];
    1184     memcpy(colstat_,si->statusArray(),
    1185            (nrows_+ncols_)*sizeof(unsigned char));
     1182    CoinMemcpyN(si->statusArray(),      (nrows_+ncols_),colstat_);
    11861183    rowstat_ = colstat_+ncols_;
    11871184  }
     
    15511548      prob.update_model(presolvedModel_, nrows_, ncols_, nelems_);
    15521549      // copy status and solution
    1553       memcpy(presolvedModel_->primalColumnSolution(),
    1554              prob.sol_,prob.ncols_*sizeof(double));
    1555       memcpy(presolvedModel_->primalRowSolution(),
    1556              prob.acts_,prob.nrows_*sizeof(double));
    1557       memcpy(presolvedModel_->statusArray(),
    1558              prob.colstat_,prob.ncols_*sizeof(unsigned char));
    1559       memcpy(presolvedModel_->statusArray()+prob.ncols_,
    1560              prob.rowstat_,prob.nrows_*sizeof(unsigned char));
     1550      CoinMemcpyN(           prob.sol_,prob.ncols_,presolvedModel_->primalColumnSolution());
     1551      CoinMemcpyN(           prob.acts_,prob.nrows_,presolvedModel_->primalRowSolution());
     1552      CoinMemcpyN(           prob.colstat_,prob.ncols_,presolvedModel_->statusArray());
     1553      CoinMemcpyN(           prob.rowstat_,prob.nrows_,presolvedModel_->statusArray()+prob.ncols_);
    15611554      delete [] prob.sol_;
    15621555      delete [] prob.acts_;
     
    15671560     
    15681561      int ncolsNow = presolvedModel_->getNumCols();
    1569       memcpy(originalColumn_,prob.originalColumn_,ncolsNow*sizeof(int));
     1562      CoinMemcpyN(prob.originalColumn_,ncolsNow,originalColumn_);
    15701563#ifndef SLIM_CLP
    15711564#ifndef NO_RTTI
     
    15911584        // and modify linear and check
    15921585        double * linear = newObj->linearObjective();
    1593         memcpy(linear,presolvedModel_->objective(),ncolsNow*sizeof(double));
     1586 CoinMemcpyN(presolvedModel_->objective(),ncolsNow,linear);
    15941587        int iColumn;
    15951588        for ( iColumn=0;iColumn<numberColumns;iColumn++) {
     
    16171610      prob.originalColumn_=NULL;
    16181611      int nrowsNow = presolvedModel_->getNumRows();
    1619       memcpy(originalRow_,prob.originalRow_,nrowsNow*sizeof(int));
     1612      CoinMemcpyN(prob.originalRow_,nrowsNow,originalRow_);
    16201613      delete [] prob.originalRow_;
    16211614      prob.originalRow_=NULL;
Note: See TracChangeset for help on using the changeset viewer.