Changeset 199 for branches/pre
- Timestamp:
- Aug 18, 2003 4:19:21 AM (18 years ago)
- Location:
- branches/pre
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/pre/ClpMatrixBase.cpp
r180 r199 56 56 const double * columnScale) const 57 57 { 58 std::cerr<<"Scaling not supported - ClpMatrixBase"<<std::endl; 59 abort(); 58 if (rowScale) { 59 std::cerr<<"Scaling not supported - ClpMatrixBase"<<std::endl; 60 abort(); 61 } else { 62 times(scalar,x,y); 63 } 60 64 } 61 65 // And for scaling - default aborts for when scaling not supported … … 66 70 const double * columnScale) const 67 71 { 68 std::cerr<<"Scaling not supported - ClpMatrixBase"<<std::endl; 69 abort(); 72 if (rowScale) { 73 std::cerr<<"Scaling not supported - ClpMatrixBase"<<std::endl; 74 abort(); 75 } else { 76 transposeTimes(scalar,x,y); 77 } 70 78 } 71 79 /* Subset clone (without gaps). Duplicates are allowed -
branches/pre/ClpModel.cpp
r196 r199 1222 1222 } 1223 1223 void 1224 ClpModel::setObjective( constClpObjective * objective)1224 ClpModel::setObjective(ClpObjective * objective) 1225 1225 { 1226 1226 delete objective_; -
branches/pre/ClpPackedMatrix.cpp
r180 r199 11 11 #include "ClpSimplex.hpp" 12 12 #include "ClpFactorization.hpp" 13 #include "ClpQuadraticObjective.hpp" 13 14 // at end to get min/max! 14 15 #include "ClpPackedMatrix.hpp" … … 189 190 const double * columnScale) const 190 191 { 191 int iRow,iColumn; 192 // get matrix data pointers 193 const int * row = matrix_->getIndices(); 194 const CoinBigIndex * columnStart = matrix_->getVectorStarts(); 195 const int * columnLength = matrix_->getVectorLengths(); 196 const double * elementByColumn = matrix_->getElements(); 197 int numberColumns = matrix_->getNumCols(); 198 //memset(y,0,matrix_->getNumRows()*sizeof(double)); 199 for (iColumn=0;iColumn<numberColumns;iColumn++) { 200 CoinBigIndex j; 201 double value = x[iColumn]; 202 if (value) { 203 // scaled 204 value *= scalar*columnScale[iColumn]; 205 for (j=columnStart[iColumn]; 206 j<columnStart[iColumn]+columnLength[iColumn];j++) { 207 iRow=row[j]; 208 y[iRow] += value*elementByColumn[j]; 209 } 210 } 211 } 212 int numberRows = getNumRows(); 213 for (iRow=0;iRow<numberRows;iRow++) { 214 y[iRow] *= rowScale[iRow]; 192 if (rowScale) { 193 int iRow,iColumn; 194 // get matrix data pointers 195 const int * row = matrix_->getIndices(); 196 const CoinBigIndex * columnStart = matrix_->getVectorStarts(); 197 const int * columnLength = matrix_->getVectorLengths(); 198 const double * elementByColumn = matrix_->getElements(); 199 int numberColumns = matrix_->getNumCols(); 200 //memset(y,0,matrix_->getNumRows()*sizeof(double)); 201 for (iColumn=0;iColumn<numberColumns;iColumn++) { 202 CoinBigIndex j; 203 double value = x[iColumn]; 204 if (value) { 205 // scaled 206 value *= scalar*columnScale[iColumn]; 207 for (j=columnStart[iColumn]; 208 j<columnStart[iColumn]+columnLength[iColumn];j++) { 209 iRow=row[j]; 210 y[iRow] += value*elementByColumn[j]; 211 } 212 } 213 } 214 int numberRows = getNumRows(); 215 for (iRow=0;iRow<numberRows;iRow++) { 216 y[iRow] *= rowScale[iRow]; 217 } 218 } else { 219 times(scalar,x,y); 215 220 } 216 221 } … … 221 226 const double * columnScale) const 222 227 { 223 int iColumn; 224 // get matrix data pointers 225 const int * row = matrix_->getIndices(); 226 const CoinBigIndex * columnStart = matrix_->getVectorStarts(); 227 const int * columnLength = matrix_->getVectorLengths(); 228 const double * elementByColumn = matrix_->getElements(); 229 int numberColumns = matrix_->getNumCols(); 230 //memset(y,0,numberColumns*sizeof(double)); 231 for (iColumn=0;iColumn<numberColumns;iColumn++) { 232 CoinBigIndex j; 233 double value=0.0; 234 // scaled 235 for (j=columnStart[iColumn]; 236 j<columnStart[iColumn]+columnLength[iColumn];j++) { 237 int jRow=row[j]; 228 if (rowScale) { 229 int iColumn; 230 // get matrix data pointers 231 const int * row = matrix_->getIndices(); 232 const CoinBigIndex * columnStart = matrix_->getVectorStarts(); 233 const int * columnLength = matrix_->getVectorLengths(); 234 const double * elementByColumn = matrix_->getElements(); 235 int numberColumns = matrix_->getNumCols(); 236 //memset(y,0,numberColumns*sizeof(double)); 237 for (iColumn=0;iColumn<numberColumns;iColumn++) { 238 CoinBigIndex j; 239 double value=0.0; 240 // scaled 241 for (j=columnStart[iColumn]; 242 j<columnStart[iColumn]+columnLength[iColumn];j++) { 243 int jRow=row[j]; 238 244 value += x[jRow]*elementByColumn[j]*rowScale[jRow]; 239 } 240 y[iColumn] += value*scalar*columnScale[iColumn]; 245 } 246 y[iColumn] += value*scalar*columnScale[iColumn]; 247 } 248 } else { 249 transposeTimes(scalar,x,y); 241 250 } 242 251 } … … 1244 1253 delete [] usefulRow; 1245 1254 delete [] usefulColumn; 1255 // If quadratic then make symmetric 1256 ClpObjective * obj = model->objectiveAsObject(); 1257 ClpQuadraticObjective * quadraticObj = (dynamic_cast< ClpQuadraticObjective*>(obj)); 1258 if (quadraticObj) { 1259 CoinPackedMatrix * quadratic = quadraticObj->quadraticObjective(); 1260 int numberXColumns = quadratic->getNumCols(); 1261 int numberXRows = numberRows-numberXColumns; 1262 if (numberXColumns<numberColumns) { 1263 int i; 1264 for (i=0;i<numberXColumns;i++) 1265 rowScale[i+numberXRows] = columnScale[i]; 1266 for (i=0;i<numberXRows;i++) 1267 columnScale[i+numberXColumns] = rowScale[i]; 1268 // and make sure Sj okay 1269 for (iColumn=numberRows;iColumn<numberColumns;iColumn++) { 1270 CoinBigIndex j=columnStart[iColumn]; 1271 assert(columnLength[iColumn]==1); 1272 int iRow=row[j]; 1273 double value = fabs(elementByColumn[j]*rowScale[iRow]); 1274 columnScale[iColumn]=1.0/value; 1275 } 1276 } 1277 } 1246 1278 model->setRowScale(rowScale); 1247 1279 model->setColumnScale(columnScale); -
branches/pre/ClpQuadraticObjective.cpp
r197 r199 21 21 gradient_ = NULL; 22 22 numberColumns_=0; 23 numberExtendedColumns_=0; 23 24 } 24 25 … … 29 30 int numberColumns, 30 31 const CoinBigIndex * start, 31 const int * column, const double * element) 32 const int * column, const double * element, 33 int numberExtendedColumns) 32 34 : ClpObjective() 33 35 { 34 36 type_=2; 35 37 numberColumns_ = numberColumns; 38 if (numberExtendedColumns>=0) 39 numberExtendedColumns_= max(numberColumns_,numberExtendedColumns); 40 else 41 numberExtendedColumns_= numberColumns_; 36 42 if (objective) { 37 objective_ = new double [number Columns_];43 objective_ = new double [numberExtendedColumns_]; 38 44 memcpy(objective_,objective,numberColumns_*sizeof(double)); 39 } else { 40 objective_ = new double [numberColumns_]; 41 memset(objective_,0,numberColumns_*sizeof(double)); 45 memset(objective_+numberColumns_,0,(numberExtendedColumns_-numberColumns_)*sizeof(double)); 46 } else { 47 objective_ = new double [numberExtendedColumns_]; 48 memset(objective_,0,numberExtendedColumns_*sizeof(double)); 42 49 } 43 50 if (start) … … 56 63 { 57 64 numberColumns_=rhs.numberColumns_; 65 numberExtendedColumns_=rhs.numberExtendedColumns_; 58 66 if (rhs.objective_) { 59 objective_ = new double [number Columns_];60 memcpy(objective_,rhs.objective_,number Columns_*sizeof(double));67 objective_ = new double [numberExtendedColumns_]; 68 memcpy(objective_,rhs.objective_,numberExtendedColumns_*sizeof(double)); 61 69 } else { 62 70 objective_=NULL; 63 71 } 64 72 if (rhs.gradient_) { 65 gradient_ = new double [number Columns_];66 memcpy(gradient_,rhs.gradient_,number Columns_*sizeof(double));73 gradient_ = new double [numberExtendedColumns_]; 74 memcpy(gradient_,rhs.gradient_,numberExtendedColumns_*sizeof(double)); 67 75 } else { 68 76 gradient_=NULL; … … 82 90 { 83 91 objective_=NULL; 92 int extra = rhs.numberExtendedColumns_-rhs.numberColumns_; 84 93 numberColumns_=0; 85 94 if (numberColumns>0) { … … 94 103 "ClpQuadraticObjective"); 95 104 numberColumns_ = numberColumns; 96 objective_ = new double[numberColumns_]; 105 numberExtendedColumns_ = numberColumns+extra; 106 objective_ = new double[numberExtendedColumns_]; 97 107 for (i=0;i<numberColumns_;i++) 98 108 objective_[i]=rhs.objective_[whichColumn[i]]; 109 memcpy(objective_+numberColumns_,rhs.objective_+rhs.numberColumns_, 110 (numberExtendedColumns_-numberColumns_)*sizeof(double)); 99 111 if (rhs.gradient_) { 100 gradient_ = new double[number Columns_];112 gradient_ = new double[numberExtendedColumns_]; 101 113 for (i=0;i<numberColumns_;i++) 102 114 gradient_[i]=rhs.gradient_[whichColumn[i]]; 115 memcpy(gradient_+numberColumns_,rhs.gradient_+rhs.numberColumns_, 116 (numberExtendedColumns_-numberColumns_)*sizeof(double)); 103 117 } 104 118 } … … 134 148 ClpObjective::operator=(rhs); 135 149 numberColumns_=rhs.numberColumns_; 150 numberExtendedColumns_=rhs.numberExtendedColumns_; 136 151 if (rhs.objective_) { 137 objective_ = new double [number Columns_];138 memcpy(objective_,rhs.objective_,number Columns_*sizeof(double));152 objective_ = new double [numberExtendedColumns_]; 153 memcpy(objective_,rhs.objective_,numberExtendedColumns_*sizeof(double)); 139 154 } else { 140 155 objective_=NULL; 141 156 } 142 157 if (rhs.gradient_) { 143 gradient_ = new double [number Columns_];144 memcpy(gradient_,rhs.gradient_,number Columns_*sizeof(double));158 gradient_ = new double [numberExtendedColumns_]; 159 memcpy(gradient_,rhs.gradient_,numberExtendedColumns_*sizeof(double)); 145 160 } else { 146 161 gradient_=NULL; … … 164 179 } else { 165 180 if (!gradient_) 166 gradient_ = new double[number Columns_];181 gradient_ = new double[numberExtendedColumns_]; 167 182 const int * columnQuadratic = quadraticObjective_->getIndices(); 168 183 const int * columnQuadraticStart = quadraticObjective_->getVectorStarts(); … … 170 185 const double * quadraticElement = quadraticObjective_->getElements(); 171 186 double offset=0.0; 172 memcpy(gradient_,objective_,number Columns_*sizeof(double));187 memcpy(gradient_,objective_,numberExtendedColumns_*sizeof(double)); 173 188 int iColumn; 174 189 for (iColumn=0;iColumn<numberColumns_;iColumn++) { … … 215 230 { 216 231 if (numberColumns_!=newNumberColumns) { 232 int newExtended = newNumberColumns + (numberExtendedColumns_-numberColumns_); 217 233 int i; 218 double * newArray = new double[new NumberColumns];234 double * newArray = new double[newExtended]; 219 235 if (objective_) 220 236 memcpy(newArray,objective_, 221 min(new NumberColumns,numberColumns_)*sizeof(double));237 min(newExtended,numberExtendedColumns_)*sizeof(double)); 222 238 delete [] objective_; 223 239 objective_ = newArray; … … 225 241 objective_[i]=0.0; 226 242 if (gradient_) { 227 newArray = new double[new NumberColumns];243 newArray = new double[newExtended]; 228 244 if (gradient_) 229 245 memcpy(newArray,gradient_, 230 min(new NumberColumns,numberColumns_)*sizeof(double));246 min(newExtended,numberExtendedColumns_)*sizeof(double)); 231 247 delete [] gradient_; 232 248 gradient_ = newArray; … … 248 264 } 249 265 numberColumns_ = newNumberColumns; 266 numberExtendedColumns_ = newExtended; 250 267 } 251 268 … … 255 272 ClpQuadraticObjective::deleteSome(int numberToDelete, const int * which) 256 273 { 274 int newNumberColumns = numberColumns_-numberToDelete; 275 int newExtended = numberExtendedColumns_ - numberToDelete; 257 276 if (objective_) { 258 277 int i ; … … 267 286 } 268 287 } 269 int newNumberColumns = numberColumns_-numberDeleted; 270 double * newArray = new double[newNumberColumns]; 288 newNumberColumns = numberColumns_-numberDeleted; 289 newExtended = numberExtendedColumns_ - numberDeleted; 290 double * newArray = new double[newExtended]; 271 291 int put=0; 272 292 for (i=0;i<numberColumns_;i++) { … … 278 298 objective_ = newArray; 279 299 delete [] deleted; 280 numberColumns_ = newNumberColumns; 300 memcpy(objective_+newNumberColumns,objective_+numberColumns_, 301 (numberExtendedColumns_-numberColumns_)*sizeof(double)); 281 302 } 282 303 if (gradient_) { … … 292 313 } 293 314 } 294 int newNumberColumns = numberColumns_-numberDeleted; 295 double * newArray = new double[newNumberColumns]; 315 newNumberColumns = numberColumns_-numberDeleted; 316 newExtended = numberExtendedColumns_ - numberDeleted; 317 double * newArray = new double[newExtended]; 296 318 int put=0; 297 319 for (i=0;i<numberColumns_;i++) { … … 303 325 gradient_ = newArray; 304 326 delete [] deleted; 305 numberColumns_ = newNumberColumns; 306 } 327 memcpy(gradient_+newNumberColumns,gradient_+numberColumns_, 328 (numberExtendedColumns_-numberColumns_)*sizeof(double)); 329 } 330 numberColumns_ = newNumberColumns; 331 numberExtendedColumns_ = newExtended; 307 332 if (quadraticObjective_) { 308 333 quadraticObjective_->deleteCols(numberToDelete,which); … … 314 339 void 315 340 ClpQuadraticObjective::loadQuadraticObjective(const int numberColumns, const CoinBigIndex * start, 316 const int * column, const double * element )341 const int * column, const double * element,int numberExtended) 317 342 { 318 343 delete quadraticObjective_; 319 344 quadraticObjective_ = new CoinPackedMatrix(true,numberColumns,numberColumns, 320 345 start[numberColumns],element,column,start,NULL); 346 numberColumns_=numberColumns; 347 if (numberExtended>numberExtendedColumns_) { 348 if (objective_) { 349 // make correct size 350 double * newArray = new double[numberExtended]; 351 memcpy(newArray,objective_,numberColumns_*sizeof(double)); 352 delete [] objective_; 353 objective_ = newArray; 354 memset(objective_+numberColumns_,0,(numberExtended-numberColumns_)*sizeof(double)); 355 } 356 if (gradient_) { 357 // make correct size 358 double * newArray = new double[numberExtended]; 359 memcpy(newArray,gradient_,numberColumns_*sizeof(double)); 360 delete [] gradient_; 361 gradient_ = newArray; 362 memset(gradient_+numberColumns_,0,(numberExtended-numberColumns_)*sizeof(double)); 363 } 364 numberExtendedColumns_ = numberExtended; 365 } else { 366 numberExtendedColumns_ = numberColumns_; 367 } 321 368 } 322 369 void -
branches/pre/ClpSimplex.cpp
r196 r199 3298 3298 <<smallestObj 3299 3299 <<largestObj 3300 <<CoinMessageEol; 3301 if (largestBound) 3300 <<CoinMessageEol; if (largestBound) 3302 3301 handler_->message(CLP_RIMSTATISTICS2,messages_) 3303 3302 <<smallestBound -
branches/pre/ClpSimplexPrimalQuadratic.cpp
r197 r199 527 527 //const int * back = info->backSequence(); 528 528 // initialize - values pass coding and algorithm_ is +1 529 // for moment just set objective for a bit 530 ClpObjective * saveObj = objectiveAsObject(); 531 setObjectivePointer(info->originalObjective()); 529 532 if (!startup(1)) { 530 533 534 setObjectivePointer(saveObj); 531 535 // Setup useful stuff 532 536 info->setCurrentPhase(phase); … … 561 565 for (j=0;j<number;j++) { 562 566 int iColumn2 = columnsInThisColumn[j]; 563 newElement[j] = elementsInThisColumn[j]*scale* columnScale_[iColumn2];567 newElement[j] = elementsInThisColumn[j]*scale*rowScale_[iColumn2+numberXRows]; 564 568 } 565 569 quadratic->replaceVector(iColumn,number,newElement); … … 721 725 } 722 726 } 727 setObjectivePointer(saveObj); 723 728 // clean up 724 729 finish(); … … 817 822 } else { 818 823 saveSequenceIn=sequenceIn_; 819 createDjs(info,rowArray_[ 1],rowArray_[2]);824 createDjs(info,rowArray_[3],rowArray_[2]); 820 825 dualIn_=0.0; // so no updates 821 826 primalColumn(rowArray_[1],rowArray_[2],rowArray_[3], … … 843 848 // do second half of iteration 844 849 while (chosen>=0) { 850 rowArray_[1]->clear(); 845 851 checkComplementarity (info,rowArray_[3],rowArray_[1]); 846 852 printf("True objective is %g, infeas cost %g, sum %g\n", … … 850 856 pivotRow_=-1; 851 857 sequenceOut_=-1; 852 rowArray_[1]->clear();853 858 // we found a pivot column 854 859 // update the incoming column … … 1382 1387 rhs[iPivot]=alpha; 1383 1388 coeff1 += alpha*cost_[iPivot]; 1384 //printf("col %d alpha %g solution %g\n",iPivot,alpha,solution_[iPivot]); 1389 //printf("col %d alpha %g solution %g cost %g scale %g\n",iPivot,alpha,solution_[iPivot], 1390 // cost_[iPivot],columnScale_[iPivot]); 1385 1391 } else { 1386 1392 if (iPivot>=numberColumns_) { … … 1408 1414 index2[number2++]=sequenceIn_; 1409 1415 rhs[sequenceIn_]=way; 1410 //printf("incoming col %d alpha %g solution %g\n",sequenceIn_,way,valueIn_); 1416 //printf("incoming col %d alpha %g solution %g cost %g scale %g\n",sequenceIn_,way,valueIn_, 1417 // cost_[sequenceIn_],columnScale_[sequenceIn_]); 1411 1418 coeff1 += way*cost_[sequenceIn_]; 1412 1419 } else { … … 1414 1421 coeffSlack += way*cost_[sequenceIn_]; 1415 1422 } 1423 printf("coeff1 now %g\n",coeff1); 1416 1424 rhsArray->setNumElements(number2); 1425 double largestCoeff1=1.0e-20; 1417 1426 for (iIndex=0;iIndex<number2;iIndex++) { 1418 1427 int iColumn=index2[iIndex]; … … 1426 1435 double alphaJ = rhs[jColumn]; 1427 1436 double elementValue = quadraticElement[j]; 1428 coeff1 += (valueJ*alphaI)*elementValue; 1437 double addValue = (valueJ*alphaI)*elementValue; 1438 largestCoeff1 = max(largestCoeff1,fabs(addValue)); 1439 coeff1 += addValue; 1429 1440 coeff2 += (alphaI*alphaJ)*elementValue; 1430 1441 } … … 1441 1452 coeff1=0.0; 1442 1453 } 1454 if (fabs(way*coeff1-dualIn_)>1.0e-2*(1.0+fabs(dualIn_))) 1455 printf("primal error %g, largest %g, coeff1 %g, dualin %g\n", 1456 largestPrimalError_,largestCoeff1,way*coeff1,dualIn_); 1443 1457 assert (fabs(way*coeff1-dualIn_)<1.0e-1*(1.0+fabs(dualIn_))); 1444 1458 assert (way*coeff1*dualIn_>=0.0); … … 1512 1526 double upperTheta = maximumMovement; 1513 1527 bool throwAway=false; 1514 if (numberIterations_==1 06) {1528 if (numberIterations_==1395) { 1515 1529 printf("Bad iteration coming up after iteration %d\n",numberIterations_); 1516 1530 } … … 1589 1603 1590 1604 while (tentativeTheta <= maximumMovement) { 1605 double bestPivotBeforeInteresting=0.0; 1591 1606 double thruThis = 0.0; 1592 1607 … … 1624 1639 1625 1640 maximumSwapped = max(maximumSwapped,numberSwapped); 1641 bestPivotBeforeInteresting=bestPivot; 1626 1642 1627 1643 //double dualCheck = - 2.0*coeff2*tentativeTheta - coeff1 - 0.1*infeasibilityCost_; … … 1710 1726 } else { 1711 1727 dualCheck = - 2.0*coeff2*theta_ - coeff1; 1728 if (bestPivotBeforeInteresting>1.0e-4&&bestPivot<1.0e-6) 1729 dualCheck=1.0e7; 1712 1730 if ((totalThru>=dualCheck||fake*bestPivot>1.0e-3) 1713 1731 &&(sequenceIn_<numberXColumns||sequenceIn_>=numberColumns_)) { … … 2381 2399 solution_[iRow+numberXColumns]=0.0; 2382 2400 } 2383 times(-1.0,columnActivityWork_,modifiedCost);2401 matrix_->times(-1.0,columnActivityWork_,modifiedCost,rowScale_,columnScale_); 2384 2402 2385 2403 int number=0; … … 2447 2465 } 2448 2466 // check looks okay 2449 matrix_->times(1.0,solution_,modifiedCost );2467 matrix_->times(1.0,solution_,modifiedCost,rowScale_,columnScale_); 2450 2468 // Back to pi 2451 2469 for (iRow=0;iRow<numberXRows;iRow++) { … … 2469 2487 // fill in linear ones 2470 2488 memcpy(dj_,cost_,numberXColumns*sizeof(double)); 2471 if (!rowScale_) { 2472 matrix_->transposeTimes(-1.0,pi,dj_); 2473 } else { 2474 matrix_->transposeTimes(-1.0,pi,dj_,rowScale_,columnScale_); 2475 } 2489 matrix_->transposeTimes(-1.0,pi,dj_,rowScale_,columnScale_); 2476 2490 memset(dj_+numberXColumns,0,(numberXRows+info->numberQuadraticColumns())*sizeof(double)); 2477 2491 for (iSequence=0;iSequence<numberXColumns;iSequence++) { … … 2909 2923 } 2910 2924 // and pad 2911 for (;iColumn<newNumberColumns;iColumn++)2912 2913 // Load up objective 2925 //for (;iColumn<newNumberColumns;iColumn++) 2926 //start2[iColumn+1]=numberElements; 2927 // Load up objective with expanded linear 2914 2928 ClpQuadraticObjective * obj = 2915 new ClpQuadraticObjective(objective2,n ewNumberColumns,2916 start2,row2,elements2 );2929 new ClpQuadraticObjective(objective2,numberColumns, 2930 start2,row2,elements2,newNumberColumns); 2917 2931 delete [] objective2; 2918 2932 info.setOriginalObjective(obj); … … 2922 2936 delete [] elements2; 2923 2937 model2->allSlackBasis(); 2924 model2->scaling(false);2938 //model2->scaling(false); 2925 2939 model2->setLogLevel(this->logLevel()); 2926 2940 // Move solution across -
branches/pre/Makefile.Clp
r196 r199 6 6 # between then specify the exact level you want, e.g., -O1 or -O2 7 7 OptLevel := -g 8 OptLevel := -O38 #OptLevel := -O3 9 9 10 10 -
branches/pre/Test/unitTest.cpp
r196 r199 936 936 } 937 937 // test network 938 //#define QUADRATIC938 #define QUADRATIC 939 939 #ifndef QUADRATIC 940 940 if (1) { -
branches/pre/include/ClpMatrixBase.hpp
r180 r199 131 131 virtual void times(double scalar, 132 132 const double * x, double * y) const=0; 133 /// And for scaling - default aborts for when scaling not supported 133 /** And for scaling - default aborts for when scaling not supported 134 (unless pointers NULL when as normal) 135 */ 134 136 virtual void times(double scalar, 135 137 const double * x, double * y, … … 141 143 virtual void transposeTimes(double scalar, 142 144 const double * x, double * y) const = 0; 143 /// And for scaling - default aborts for when scaling not supported 144 virtual void transposeTimes(double scalar, 145 /** And for scaling - default aborts for when scaling not supported 146 (unless pointers NULL when as normal) 147 */ 148 virtual void transposeTimes(double scalar, 145 149 const double * x, double * y, 146 150 const double * rowScale, -
branches/pre/include/ClpModel.hpp
r196 r199 369 369 inline ClpObjective * objectiveAsObject() const 370 370 { return objective_;}; 371 void setObjective(const ClpObjective * objective); 371 void setObjective(ClpObjective * objective); 372 void setObjectivePointer(ClpObjective * objective) 373 { objective_ = objective;}; 372 374 //@} 373 375 -
branches/pre/include/ClpQuadraticObjective.hpp
r197 r199 39 39 /// Constructor from objective 40 40 ClpQuadraticObjective(const double * linearObjective, int numberColumns, 41 const CoinBigIndex * start, 42 const int * column, const double * element); 41 const CoinBigIndex * start, 42 const int * column, const double * element, 43 int numberExtendedColumns_=-1); 43 44 44 45 /// Copy constructor … … 67 68 void loadQuadraticObjective(const int numberColumns, 68 69 const CoinBigIndex * start, 69 const int * column, const double * element); 70 const int * column, const double * element, 71 int numberExtendedColumns=-1); 70 72 void loadQuadraticObjective ( const CoinPackedMatrix& matrix); 71 73 /// Get rid of quadratic objective … … 78 80 /// Linear objective 79 81 inline double * linearObjective() const { return objective_; } 82 /// Length of linear objective which could be bigger 83 inline int numberExtendedColumns() const 84 {return numberExtendedColumns_;}; 85 /// Number of columns in quadratic objective 86 inline int numberColumns() const 87 {return numberColumns_;}; 80 88 //@} 81 89 … … 92 100 /// Useful to have number of columns about 93 101 int numberColumns_; 102 /// Also length of linear objective which could be bigger 103 int numberExtendedColumns_; 94 104 //@} 95 105 }; -
branches/pre/include/ClpSimplexPrimalQuadratic.hpp
r196 r199 166 166 {return backSequence_;}; 167 167 /// Returns pointer to original objective 168 inline constClpQuadraticObjective * originalObjective() const168 inline ClpQuadraticObjective * originalObjective() const 169 169 { return originalObjective_;}; 170 170 inline void setOriginalObjective( ClpQuadraticObjective * obj) … … 192 192 //@{ 193 193 /// Objective 194 constClpQuadraticObjective * originalObjective_;194 ClpQuadraticObjective * originalObjective_; 195 195 /// Quadratic sequence 196 196 int * quadraticSequence_;
Note: See TracChangeset
for help on using the changeset viewer.