Changeset 203 for trunk


Ignore:
Timestamp:
Oct 31, 2005 10:12:52 AM (15 years ago)
Author:
forrest
Message:

fix for coststrategy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Test/CoinSolve.cpp

    r202 r203  
    554554    parameters[whichParam(COMBINE,numberParameters,parameters)].setCurrentOption("on");
    555555    bool useLocalTree=false;
     556    parameters[whichParam(COSTSTRATEGY,numberParameters,parameters)].setCurrentOption("off");
     557    bool useCosts=false;
    556558   
    557559    // total number of commands read
     
    997999              break;
    9981000            case COSTSTRATEGY:
    999               if (action!=1) {
     1001              if (action!=1&&action!=0) {
    10001002                printf("Pseudo costs not implemented yet\n");
    10011003              } else {
    1002                 int numberColumns = model.getNumCols();
    1003                 int * sort = new int[numberColumns];
    1004                 double * dsort = new double[numberColumns];
    1005                 int * priority = new int [numberColumns];
    1006                 const double * objective = model.getObjCoefficients();
    1007                 int iColumn;
    1008                 int n=0;
    1009                 for (iColumn=0;iColumn<numberColumns;iColumn++) {
    1010                   if (model.isInteger(iColumn)) {
    1011                     sort[n]=n;
    1012                     dsort[n++]=-objective[iColumn];
    1013                   }
    1014                 }
    1015                 CoinSort_2(dsort,dsort+n,sort);
    1016                 int level=0;
    1017                 double last = -1.0e100;
    1018                 for (int i=0;i<n;i++) {
    1019                   int iPut=sort[i];
    1020                   if (dsort[i]!=last) {
    1021                     level++;
    1022                     last=dsort[i];
    1023                   }
    1024                   priority[iPut]=level;
    1025                 }
    1026                 model.passInPriorities( priority,false);
    1027                 delete [] priority;
    1028                 delete [] sort;
    1029                 delete [] dsort;
     1004                useCosts=action;
    10301005              }
    10311006              break;
     
    13351310                }
    13361311              }
     1312              if (useCosts) {
     1313                int numberColumns = babModel->getNumCols();
     1314                int * sort = new int[numberColumns];
     1315                double * dsort = new double[numberColumns];
     1316                int * priority = new int [numberColumns];
     1317                const double * objective = babModel->getObjCoefficients();
     1318                int iColumn;
     1319                int n=0;
     1320                for (iColumn=0;iColumn<numberColumns;iColumn++) {
     1321                  if (babModel->isInteger(iColumn)) {
     1322                    sort[n]=n;
     1323                    dsort[n++]=-objective[iColumn];
     1324                  }
     1325                }
     1326                CoinSort_2(dsort,dsort+n,sort);
     1327                int level=0;
     1328                double last = -1.0e100;
     1329                for (int i=0;i<n;i++) {
     1330                  int iPut=sort[i];
     1331                  if (dsort[i]!=last) {
     1332                    level++;
     1333                    last=dsort[i];
     1334                  }
     1335                  priority[iPut]=level;
     1336                }
     1337                babModel->passInPriorities( priority,false);
     1338                delete [] priority;
     1339                delete [] sort;
     1340                delete [] dsort;
     1341              }
    13371342              // FPump done first as it only works if no solution
    13381343              CbcHeuristicFPump heuristic4(*babModel);
Note: See TracChangeset for help on using the changeset viewer.