Ignore:
Timestamp:
Sep 29, 2017 7:14:01 AM (2 years ago)
Author:
forrest
Message:

change int to CoinBigIndex?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcSolver.cpp

    r2333 r2344  
    44974497                                      << CoinMessageEol;
    44984498                                    int spaceNeeded=numberSort+numberDifferentObj;
    4499                                     int * columnAdd = new int[spaceNeeded+numberDifferentObj+1];
     4499                                    CoinBigIndex * columnAddDummy = new CoinBigIndex[numberDifferentObj+1];
     4500                                    int * columnAdd = new int[spaceNeeded];
    45004501                                    double * elementAdd = new double[spaceNeeded];
    4501                                     int * rowAdd = new int[numberDifferentObj+1];
     4502                                    CoinBigIndex * rowAdd = new CoinBigIndex[numberDifferentObj+1];
    45024503                                    double * objectiveNew = new double[3*numberDifferentObj];
    45034504                                    double * lowerNew = objectiveNew+numberDifferentObj;
    45044505                                    double * upperNew = lowerNew+numberDifferentObj;
    4505                                     memset(columnAdd+spaceNeeded,0,
    4506                                            (numberDifferentObj+1)*sizeof(int));
     4506                                    memset(columnAddDummy,0,
     4507                                           (numberDifferentObj+1)*sizeof(CoinBigIndex));
    45074508                                    iLast=0;
    45084509                                    last=obj[0];
     
    45844585                                      // add columns
    45854586                                      solver2->addCols(numberDifferentObj,
    4586                                                        columnAdd+spaceNeeded, NULL, NULL,
     4587                                                       columnAddDummy, NULL, NULL,
    45874588                                                       lowerNew, upperNew,objectiveNew);
    45884589                                      // add constraints and make integer if all integer in group
     
    46074608                                    }
    46084609                                    delete [] columnAdd;
     4610                                    delete [] columnAddDummy;
    46094611                                    delete [] elementAdd;
    46104612                                    delete [] rowAdd;
     
    47064708                                          double newUpper = 0.0;
    47074709                                          double constantObjective=0.0;
    4708                                           for (int j=rowStart[iRow];j<rowStart[iRow]+rowLength[iRow];j++) {
     4710                                          for (CoinBigIndex j=rowStart[iRow];j<rowStart[iRow]+rowLength[iRow];j++) {
    47094711                                            int iColumn = column[j];
    47104712                                            if (!solver2->isInteger(iColumn)) {
     
    47544756                                              // move some of objective here if looks constant
    47554757                                              newObjective[addSlacks]=constantObjective;
    4756                                               for (int j=rowStart[iRow];j<rowStart[iRow]+rowLength[iRow];j++) {
     4758                                              for (CoinBigIndex j=rowStart[iRow];j<rowStart[iRow]+rowLength[iRow];j++) {
    47574759                                                int iColumn = column[j];
    47584760                                                double value = element[j];
     
    1057310575             if (saveModel) {
    1057410576               int spaceNeeded=numberSort+numberDifferentObj;
    10575                int * columnAdd = new int[spaceNeeded+numberDifferentObj+1];
     10577               CoinBigIndex * columnAddDummy = new CoinBigIndex[numberDifferentObj+1];
     10578               int * columnAdd = new int[spaceNeeded];
    1057610579               double * elementAdd = new double[spaceNeeded];
    10577                int * rowAdd = new int[2*numberDifferentObj+1];
    10578                int * newIsInteger = rowAdd+numberDifferentObj+1;
     10580               CoinBigIndex * rowAdd = new CoinBigIndex[2*numberDifferentObj+1];
     10581               int * newIsInteger = reinterpret_cast<int *>(rowAdd+numberDifferentObj+1);
    1057910582               double * objectiveNew = new double[3*numberDifferentObj];
    1058010583               double * lowerNew = objectiveNew+numberDifferentObj;
    1058110584               double * upperNew = lowerNew+numberDifferentObj;
    10582                memset(columnAdd+spaceNeeded,0,
    10583                       (numberDifferentObj+1)*sizeof(int));
     10585               memset(columnAddDummy,0,
     10586                      (numberDifferentObj+1)*sizeof(CoinBigIndex));
    1058410587               ClpSimplex tempModel=*model;
    1058510588               int iLast=0;
     
    1064110644               tempModel.addColumns(numberDifferentObj, lowerNew, upperNew,
    1064210645                                    objectiveNew,
    10643                                     columnAdd+spaceNeeded, NULL, NULL);
     10646                                    columnAddDummy, NULL, NULL);
    1064410647               // add constraints and make integer if all integer in group
    1064510648               for (int iObj=0; iObj < numberDifferentObj; iObj++) {
     
    1065210655                                 rowAdd,columnAdd,elementAdd);
    1065310656               delete [] columnAdd;
     10657               delete [] columnAddDummy;
    1065410658               delete [] elementAdd;
    1065510659               delete [] rowAdd;
     
    1092210926       const double * element = columnCopy.getElements();
    1092310927       const double * elementByRow = rowCopy.getElements();
    10924        const int * rowStart = rowCopy.getVectorStarts();
     10928       const CoinBigIndex * rowStart = rowCopy.getVectorStarts();
    1092510929       const int * column = rowCopy.getIndices();
    1092610930       int nPossibleZeroCost=0;
     
    1094710951           int iRow=row[columnStart[iColumn]];
    1094810952           double value=COIN_DBL_MAX;
    10949            for (int i=rowStart[iRow];i<rowStart[iRow]+rowLength[iRow];i++) {
     10953           for (CoinBigIndex i=rowStart[iRow];i<rowStart[iRow]+rowLength[iRow];i++) {
    1095010954             int jColumn=column[i];
    1095110955             if (jColumn!=iColumn) {
     
    1134411348          double randomUpper = CoinDrand48();
    1134511349          double randomInteger = CoinDrand48();
    11346           int * startAdd = new int[numberRows+1];
     11350          CoinBigIndex * startAdd = new CoinBigIndex[numberRows+1];
    1134711351          int * columnAdd = new int [2*numberElements];
    1134811352          double * elementAdd = new double[2*numberElements];
     
    1168411688                                             for (CoinBigIndex i = start; i < start + length; i++) {
    1168511689                                                  int jColumn = column[i];
    11686                                                   backColumn2[jColumn] = i - start;
     11690                                                  backColumn2[jColumn] = static_cast<int>(i - start);
    1168711691                                             }
    1168811692                                             for (CoinBigIndex i = start; i < start + length; i++) {
     
    1183911843     delete [] number;
    1184011844     // Now do breakdown of ranges
    11841      breakdown("Elements", numberElements, elementByColumn);
     11845     breakdown("Elements", static_cast<int>(numberElements), elementByColumn);
    1184211846     breakdown("RowLower", numberRows, rowLower);
    1184311847     breakdown("RowUpper", numberRows, rowUpper);
Note: See TracChangeset for help on using the changeset viewer.