- Timestamp:
- Oct 8, 2007 8:19:01 AM (13 years ago)
- Location:
- trunk/Cbc/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cbc/src/CbcModel.cpp
r814 r819 1100 1100 } 1101 1101 } 1102 // and add to solver if none1103 if (!solver_->numberObjects()) {1102 // and add to solver 1103 //if (!solver_->numberObjects()) { 1104 1104 solver_->addObjects(numberObjects_,object_); 1105 1106 if (solver_->numberObjects()!=numberOriginalObjects) {1107 1108 1109 }1110 1105 //} else { 1106 //if (solver_->numberObjects()!=numberOriginalObjects) { 1107 //printf("should have trapped that solver has objects before\n"); 1108 //abort(); 1109 //} 1110 //} 1111 1111 } else { 1112 1112 // do from solver … … 4781 4781 int iStatus = (feasible) ? 0 : 0; 4782 4782 double value = obj->value(); 4783 double movement; 4783 4784 if (branch) 4784 value= ceil(value)-value;4785 movement = ceil(value)-value; 4785 4786 else 4786 value = value -floor(value); 4787 #if 1 4787 movement = value -floor(value); 4788 #if 0 4789 // OUT as much too complicated - we are not at a natural hotstart place 4788 4790 OsiBranchingInformation usefulInfo=usefulInformation(); 4791 // hotInfo is meant for BEFORE a branch so we need to fool 4792 // was much simpler with alternate method 4793 double save[3]; 4794 save[0]=usefulInfo.lower_[iColumn]; 4795 save[1]=usefulInfo.solution_[iColumn]; 4796 save[2]=usefulInfo.upper_[iColumn]; 4797 usefulInfo.lower_[iColumn]=floor(value); 4798 usefulInfo.solution_[iColumn]=value; 4799 usefulInfo.upper_[iColumn]=ceil(value); 4789 4800 OsiHotInfo hotInfo(solver_,&usefulInfo,&object,0); 4801 usefulInfo.lower_[iColumn]=save[0]; 4802 usefulInfo.solution_[iColumn]=save[1]; 4803 usefulInfo.upper_[iColumn]=save[2]; 4790 4804 if (branch) { 4791 4805 hotInfo.setUpStatus(iStatus); 4792 4806 hotInfo.setUpChange(changeInObjective); 4793 //object->setUpEstimate( value);4807 //object->setUpEstimate(movement); 4794 4808 } else { 4795 4809 hotInfo.setDownStatus(iStatus); 4796 4810 hotInfo.setDownChange(changeInObjective); 4797 //object->setDownEstimate( value);4811 //object->setDownEstimate(movement); 4798 4812 } 4799 4813 branchingMethod_->chooseMethod()->updateInformation(&usefulInfo,branch,&hotInfo); 4800 4814 #else 4801 4815 branchingMethod_->chooseMethod()->updateInformation(iObject,branch,changeInObjective, 4802 value,iStatus);4816 movement,iStatus); 4803 4817 #endif 4804 4818 } … … 7267 7281 mark[iColumn]=i; 7268 7282 } 7283 } else { 7284 // some other object - keep 7285 newNumberObjects++; 7269 7286 } 7270 7287 } -
trunk/Cbc/src/CbcNode.cpp
r789 r819 569 569 } 570 570 571 571 572 // Default constructor 572 573 CbcPartialNodeInfo::CbcPartialNodeInfo() … … 591 592 592 593 numberChangedBounds_ = numberChangedBounds; 593 variables_ = new int [numberChangedBounds_]; 594 newBounds_ = new double [numberChangedBounds_]; 594 int size = numberChangedBounds_*(sizeof(double)+sizeof(int)); 595 char * temp = new char [size]; 596 newBounds_ = (double *) temp; 597 variables_ = (int *) (newBounds_+numberChangedBounds_); 595 598 596 599 int i ; … … 608 611 609 612 numberChangedBounds_ = rhs.numberChangedBounds_; 610 variables_ = new int [numberChangedBounds_]; 611 newBounds_ = new double [numberChangedBounds_]; 613 int size = numberChangedBounds_*(sizeof(double)+sizeof(int)); 614 char * temp = new char [size]; 615 newBounds_ = (double *) temp; 616 variables_ = (int *) (newBounds_+numberChangedBounds_); 612 617 613 618 int i ; … … 628 633 { 629 634 delete basisDiff_ ; 630 delete [] variables_;631 635 delete [] newBounds_; 632 636 } … … 694 698 695 699 return parent_ ; } 696 697 700 698 701 CbcNode::CbcNode() : … … 2441 2444 iBestGot=-1; 2442 2445 best=0.0; 2446 /* Problem type as set by user or found by analysis. This will be extended 2447 0 - not known 2448 1 - Set partitioning <= 2449 2 - Set partitioning == 2450 3 - Set covering 2451 4 - all +- 1 or all +1 and odd 2452 */ 2453 int problemType = model->problemType(); 2443 2454 #define PRINT_STUFF -1 2444 2455 for (i=0;i<numberObjects;i++) { … … 2488 2499 double part =saveSolution[iColumn]-floor(saveSolution[iColumn]); 2489 2500 infeasibility = fabs(0.5-part); 2501 } 2502 if (problemType>0&&problemType<4) { 2503 // try closest to 0.5 2504 double part =saveSolution[iColumn]-floor(saveSolution[iColumn]); 2505 infeasibility = 0.5-fabs(0.5-part); 2490 2506 } 2491 2507 bool gotDown=false; -
trunk/Cbc/src/CbcNode.hpp
r706 r819 351 351 /// Clone 352 352 virtual CbcNodeInfo * clone() const; 353 /// Basis diff information 354 inline const CoinWarmStartDiff *basisDiff() const 355 { return basisDiff_ ;} 356 /// Which variable (top bit if upper bound changing) 357 inline const int * variables() const 358 { return variables_;} 359 // New bound 360 inline const double * newBounds() const 361 { return newBounds_;} 362 /// Number of bound changes 363 inline int numberChangedBounds() const 364 { return numberChangedBounds_;} 353 365 protected: 354 366 /* Data values */ -
trunk/Cbc/src/CbcSolver.cpp
r809 r819 11 11 #include <cstring> 12 12 #include <iostream> 13 14 13 15 14 #include "CoinPragma.hpp" … … 449 448 #endif 450 449 // Set up likely cut generators and defaults 451 parameters_[whichParam(PREPROCESS,numberParameters_,parameters_)].setCurrentOption(" on");450 parameters_[whichParam(PREPROCESS,numberParameters_,parameters_)].setCurrentOption("sos"); 452 451 parameters_[whichParam(MIPOPTIONS,numberParameters_,parameters_)].setIntValue(128|64|1); 453 452 parameters_[whichParam(MIPOPTIONS,numberParameters_,parameters_)].setIntValue(1); … … 731 730 return new CbcStopNow(*this); 732 731 } 733 //#define NEW_STYLE_SOLVER732 #define NEW_STYLE_SOLVER 734 733 //#undef COIN_HAS_ASL 735 734 #ifdef COIN_HAS_ASL … … 1147 1146 doAction - 0 just fix in original and return NULL 1148 1147 1 return fixed non-presolved solver 1149 2 return fixed presolved solver1148 2 as one but use presolve Inside this 1150 1149 3 do heuristics and set best solution 1151 1150 4 do BAB and just set best solution … … 1160 1159 if (doAction==11&&!lastSolution) 1161 1160 lastSolution = model.bestSolution(); 1162 assert (( doAction==1&&!lastSolution)||(doAction==11&&lastSolution));1161 assert (((doAction==1||doAction==2)&&!lastSolution)||(doAction==11&&lastSolution)); 1163 1162 double fractionIntFixed = dextra[3]; 1164 1163 double fractionFixed = dextra[4]; 1165 1164 double time1 = CoinCpuTime(); 1166 OsiClpSolverInterface * originalClpSolver = dynamic_cast< OsiClpSolverInterface*> (model.solver()); 1165 OsiSolverInterface * originalSolver = model.solver(); 1166 OsiClpSolverInterface * originalClpSolver = dynamic_cast< OsiClpSolverInterface*> (originalSolver); 1167 1167 ClpSimplex * originalLpSolver = originalClpSolver->getModelPtr(); 1168 OsiSolverInterface * solver = model.solver()->clone(); 1169 OsiClpSolverInterface * clpSolver = dynamic_cast< OsiClpSolverInterface*> (solver); 1170 ClpSimplex * lpSolver = clpSolver->getModelPtr(); 1168 int * originalColumns=NULL; 1169 OsiClpSolverInterface * clpSolver; 1170 ClpSimplex * lpSolver; 1171 ClpPresolve pinfo; 1172 if (doAction==2) { 1173 doAction=1; 1174 lpSolver = pinfo.presolvedModel(*originalLpSolver,1.0e-8,false,10); 1175 assert (lpSolver); 1176 clpSolver = new OsiClpSolverInterface(lpSolver,true); 1177 assert(lpSolver == clpSolver->getModelPtr()); 1178 //int numberColumns = lpSolver->numberColumns(); 1179 int numberColumns = lpSolver->numberColumns(); 1180 originalColumns = CoinCopyOfArray(pinfo.originalColumns(),numberColumns); 1181 } else { 1182 OsiSolverInterface * solver = originalSolver->clone(); 1183 clpSolver = dynamic_cast< OsiClpSolverInterface*> (solver); 1184 lpSolver = clpSolver->getModelPtr(); 1185 } 1171 1186 // Tighten bounds 1172 1187 lpSolver->tightenPrimalBounds(0.0,11,true); 1188 int numberColumns = clpSolver->getNumCols() ; 1189 double * saveColumnLower = CoinCopyOfArray(lpSolver->columnLower(),numberColumns); 1190 double * saveColumnUpper = CoinCopyOfArray(lpSolver->columnUpper(),numberColumns); 1173 1191 //char generalPrint[200]; 1174 1192 const double *objective = lpSolver->getObjCoefficients() ; 1175 1193 double *columnLower = lpSolver->columnLower() ; 1176 1194 double *columnUpper = lpSolver->columnUpper() ; 1177 int numberColumns = solver->getNumCols() ; 1178 int numberRows = solver->getNumRows(); 1195 int numberRows = clpSolver->getNumRows(); 1179 1196 int iRow,iColumn; 1180 1197 1181 1198 // Row copy 1182 CoinPackedMatrix matrixByRow(* solver->getMatrixByRow());1199 CoinPackedMatrix matrixByRow(*clpSolver->getMatrixByRow()); 1183 1200 const double * elementByRow = matrixByRow.getElements(); 1184 1201 const int * column = matrixByRow.getIndices(); … … 1187 1204 1188 1205 // Column copy 1189 CoinPackedMatrix matrixByCol(* solver->getMatrixByCol());1206 CoinPackedMatrix matrixByCol(*clpSolver->getMatrixByCol()); 1190 1207 //const double * element = matrixByCol.getElements(); 1191 1208 const int * row = matrixByCol.getIndices(); … … 1193 1210 const int * columnLength = matrixByCol.getVectorLengths(); 1194 1211 1195 const double * rowLower = solver->getRowLower();1196 const double * rowUpper = solver->getRowUpper();1212 const double * rowLower = clpSolver->getRowLower(); 1213 const double * rowUpper = clpSolver->getRowUpper(); 1197 1214 1198 1215 // Get maximum size of VUB tree … … 1249 1266 fix[iColumn]=-1; 1250 1267 if (columnUpper[iColumn] > columnLower[iColumn]+1.0e-8) { 1251 if ( solver->isInteger(iColumn))1268 if (clpSolver->isInteger(iColumn)) 1252 1269 numberInteger++; 1253 1270 if (columnLower[iColumn]==0.0) { … … 1379 1396 } 1380 1397 } 1381 if (!newBound||( solver->isInteger(kColumn)&&newBound<0.999)) {1398 if (!newBound||(clpSolver->isInteger(kColumn)&&newBound<0.999)) { 1382 1399 // fix to zero 1383 1400 if (!mark[kColumn]) { … … 1422 1439 } 1423 1440 } 1424 if (!newBound||( solver->isInteger(kColumn)&&newBound<0.999)) {1441 if (!newBound||(clpSolver->isInteger(kColumn)&&newBound<0.999)) { 1425 1442 // fix to zero 1426 1443 if (!mark[kColumn]) { … … 1470 1487 mark[otherColumn[i]]=0; 1471 1488 // reset bound unless infeasible 1472 if (!infeasible||! solver->isInteger(iColumn))1489 if (!infeasible||!clpSolver->isInteger(iColumn)) 1473 1490 columnUpper[iColumn]=saveUpper; 1474 else if ( solver->isInteger(iColumn))1491 else if (clpSolver->isInteger(iColumn)) 1475 1492 columnLower[iColumn]=1.0; 1476 1493 } … … 1549 1566 for (int i=fixColumn[iColumn];i<fixColumn[iColumn+1];i++) { 1550 1567 int jColumn=otherColumn[i]; 1551 if ( solver->isInteger(jColumn))1568 if (clpSolver->isInteger(jColumn)) 1552 1569 nFix++; 1553 1570 } … … 1559 1576 } 1560 1577 assert (iFix<nCheck); 1561 if ( solver->isInteger(iColumn)) {1578 if (clpSolver->isInteger(iColumn)) { 1562 1579 numberInteger++; 1563 1580 countsI[iFix]++; … … 1648 1665 double * columnUpper = lpSolver->columnUpper(); 1649 1666 // lpSolver->dual(); 1650 memcpy(columnLower, originalLpSolver->columnLower(),numberColumns*sizeof(double));1651 memcpy(columnUpper, originalLpSolver->columnUpper(),numberColumns*sizeof(double));1667 memcpy(columnLower,saveColumnLower,numberColumns*sizeof(double)); 1668 memcpy(columnUpper,saveColumnUpper,numberColumns*sizeof(double)); 1652 1669 // lpSolver->dual(); 1653 1670 int iColumn; 1654 1671 for (iColumn=0;iColumn<numberColumns;iColumn++) { 1655 1672 if (columnUpper[iColumn] > columnLower[iColumn]+1.0e-8) { 1656 if ( solver->isInteger(iColumn)) {1673 if (clpSolver->isInteger(iColumn)) { 1657 1674 double value = lastSolution[iColumn]; 1658 1675 int iValue = (int) (value+0.5); … … 1666 1683 } 1667 1684 lpSolver->initialSolve(solveOptions); 1668 memcpy(columnLower, originalLpSolver->columnLower(),numberColumns*sizeof(double));1669 memcpy(columnUpper, originalLpSolver->columnUpper(),numberColumns*sizeof(double));1685 memcpy(columnLower,saveColumnLower,numberColumns*sizeof(double)); 1686 memcpy(columnUpper,saveColumnUpper,numberColumns*sizeof(double)); 1670 1687 } 1671 1688 for (iColumn=0;iColumn<numberColumns;iColumn++) { 1672 1689 if (columnUpper[iColumn] > columnLower[iColumn]+1.0e-8) { 1673 if ( solver->isInteger(iColumn)) {1690 if (clpSolver->isInteger(iColumn)) { 1674 1691 double value = lastSolution[iColumn]; 1675 1692 int iValue = (int) (value+0.5); … … 1734 1751 } 1735 1752 for ( iColumn=0;iColumn<numberColumns;iColumn++) { 1736 if (! solver->isInteger(iColumn)||fix[iColumn]>kLayer)1753 if (!clpSolver->isInteger(iColumn)||fix[iColumn]>kLayer) 1737 1754 continue; 1738 1755 // skip if fixes nothing … … 1858 1875 columnUpper = models[kPass].columnUpper(); 1859 1876 columnLower[iSmallest]=1.0; 1860 columnUpper[iSmallest]= originalLpSolver->columnUpper()[iSmallest];1877 columnUpper[iSmallest]=saveColumnUpper[iSmallest]; 1861 1878 *lpSolver=models[kPass]; 1862 1879 columnLower = lpSolver->columnLower(); … … 1865 1882 dj = lpSolver->dualColumnSolution(); 1866 1883 columnLower[iSmallest]=1.0; 1867 columnUpper[iSmallest]= originalLpSolver->columnUpper()[iSmallest];1884 columnUpper[iSmallest]=saveColumnUpper[iSmallest]; 1868 1885 state[iSmallest]=1; 1869 1886 // unfix others … … 1871 1888 int jColumn=otherColumn[i]; 1872 1889 if (state[jColumn]==3) { 1873 columnUpper[jColumn]= originalLpSolver->columnUpper()[jColumn];1890 columnUpper[jColumn]=saveColumnUpper[jColumn]; 1874 1891 state[jColumn]=-1; 1875 1892 } … … 1900 1917 double sum1=0.0; 1901 1918 for ( iColumn=0;iColumn<numberColumns;iColumn++) { 1902 if (! solver->isInteger(iColumn)||fix[iColumn]>kLayer)1919 if (!clpSolver->isInteger(iColumn)||fix[iColumn]>kLayer) 1903 1920 continue; 1904 1921 // skip if fixes nothing 1905 1922 if (fixColumn[iColumn+1]-fixColumn[iColumn]==0&&doAction<10) 1906 1923 continue; 1907 double value = fullSolution[iColumn];1908 1924 double djValue = dj[iColumn]; 1909 1925 if (state[iColumn]==1) { 1910 1926 assert (columnLower[iColumn]); 1911 assert ( value>0.1);1927 assert (fullSolution[iColumn]>0.1); 1912 1928 if (djValue>0.0) { 1913 1929 //printf("YY dj of %d at %g is %g\n",iColumn,value,djValue); … … 1919 1935 } 1920 1936 } else if (state[iColumn]==0||state[iColumn]==10) { 1921 assert ( value<0.1);1937 assert (fullSolution[iColumn]<0.1); 1922 1938 assert (!columnUpper[iColumn]); 1923 1939 double otherValue=0.0; … … 1951 1967 } 1952 1968 CoinSort_2(dsort,dsort+n,sort); 1953 double * originalColumnLower = originalLpSolver->columnLower();1954 double * originalColumnUpper = originalLpSolver->columnUpper();1969 double * originalColumnLower = saveColumnLower; 1970 double * originalColumnUpper = saveColumnUpper; 1955 1971 double * lo = CoinCopyOfArray(columnLower,numberColumns); 1956 1972 double * up = CoinCopyOfArray(columnUpper,numberColumns); … … 2028 2044 for ( iColumn=0;iColumn<numberColumns;iColumn++) { 2029 2045 if (columnLower[iColumn]==columnUpper[iColumn]) { 2030 if ( solver->isInteger(iColumn))2046 if (clpSolver->isInteger(iColumn)) 2031 2047 nFixedI++; 2032 2048 nFixed++; … … 2070 2086 delete [] otherColumn2; 2071 2087 delete [] fixColumn2; 2072 // Basis 2073 memcpy(originalLpSolver->statusArray(),lpSolver->statusArray(),numberRows+numberColumns); 2074 memcpy(originalLpSolver->primalColumnSolution(),lpSolver->primalColumnSolution(),numberColumns*sizeof(double)); 2075 memcpy(originalLpSolver->primalRowSolution(),lpSolver->primalRowSolution(),numberRows*sizeof(double)); 2076 // Fix in solver 2077 columnLower = lpSolver->columnLower(); 2078 columnUpper = lpSolver->columnUpper(); 2088 // See if was presolved 2089 if (originalColumns) { 2090 for ( iColumn=0;iColumn<numberColumns;iColumn++) { 2091 saveColumnLower[iColumn] = columnLower[iColumn]; 2092 saveColumnUpper[iColumn] = columnUpper[iColumn]; 2093 } 2094 pinfo.postsolve(true); 2095 columnLower = originalLpSolver->columnLower(); 2096 columnUpper = originalLpSolver->columnUpper(); 2097 double * newColumnLower = lpSolver->columnLower(); 2098 double * newColumnUpper = lpSolver->columnUpper(); 2099 for (iColumn=0;iColumn<numberColumns;iColumn++) { 2100 int jColumn = originalColumns[iColumn]; 2101 columnLower[jColumn] = CoinMax(columnLower[jColumn],newColumnLower[iColumn]); 2102 columnUpper[jColumn] = CoinMin(columnUpper[jColumn],newColumnUpper[iColumn]); 2103 } 2104 numberColumns = originalLpSolver->numberColumns(); 2105 delete [] originalColumns; 2106 } 2107 delete [] saveColumnLower; 2108 delete [] saveColumnUpper; 2109 if (!originalColumns) { 2110 // Basis 2111 memcpy(originalLpSolver->statusArray(),lpSolver->statusArray(),numberRows+numberColumns); 2112 memcpy(originalLpSolver->primalColumnSolution(),lpSolver->primalColumnSolution(),numberColumns*sizeof(double)); 2113 memcpy(originalLpSolver->primalRowSolution(),lpSolver->primalRowSolution(),numberRows*sizeof(double)); 2114 // Fix in solver 2115 columnLower = lpSolver->columnLower(); 2116 columnUpper = lpSolver->columnUpper(); 2117 } 2079 2118 double * originalColumnLower = originalLpSolver->columnLower(); 2080 2119 double * originalColumnUpper = originalLpSolver->columnUpper(); … … 2088 2127 } 2089 2128 printf("%d fixed by vub preprocessing\n",doAction); 2090 delete solver; 2129 if (originalColumns) { 2130 originalLpSolver->initialSolve(); 2131 } 2132 delete clpSolver; 2091 2133 return NULL; 2092 2134 } … … 3031 3073 #endif 3032 3074 // Set up likely cut generators and defaults 3033 parameters[whichParam(PREPROCESS,numberParameters,parameters)].setCurrentOption(" on");3075 parameters[whichParam(PREPROCESS,numberParameters,parameters)].setCurrentOption("sos"); 3034 3076 parameters[whichParam(MIPOPTIONS,numberParameters,parameters)].setIntValue(128|64|1); 3035 3077 parameters[whichParam(MIPOPTIONS,numberParameters,parameters)].setIntValue(1); … … 3495 3537 } 3496 3538 } 3497 int returnCode = readAmpl(&info,argc,const_cast<char **>(argv),(void **) (& coinModel)); 3539 3540 union { void * voidModel; CoinModel * model; } coinModelStart; 3541 coinModelStart.model=NULL; 3542 int returnCode = readAmpl(&info,argc, const_cast<char **>(argv),& coinModelStart.voidModel); 3543 coinModel=coinModelStart.model; 3498 3544 if (returnCode) 3499 3545 return returnCode; … … 3667 3713 int doVector=0; 3668 3714 int doSprint=-1; 3669 int doScaling= 1;3715 int doScaling=4; 3670 3716 // set reasonable defaults 3671 3717 int preSolve=5; 3672 int preProcess= 1;3718 int preProcess=4; 3673 3719 bool useStrategy=false; 3674 3720 bool preSolveFile=false; … … 3729 3775 CglProbing probingGen; 3730 3776 probingGen.setUsingObjective(1); 3731 probingGen.setMaxPass( 3);3732 probingGen.setMaxPassRoot( 3);3777 probingGen.setMaxPass(1); 3778 probingGen.setMaxPassRoot(1); 3733 3779 // Number of unsatisfied variables to look at 3734 3780 probingGen.setMaxProbe(10); … … 4209 4255 lpSolver->scaling(action); 4210 4256 solver->setHintParam(OsiDoScale,action!=0,OsiHintTry); 4211 doScaling = 1-action;4257 doScaling = action; 4212 4258 break; 4213 4259 case AUTOSCALE: … … 4913 4959 if (!dextra[3]) 4914 4960 dextra[3] = 0.97; 4915 OsiClpSolverInterface * newSolver = fixVubs(model_,extra3,vubAction,generalMessageHandler, 4916 debugValues,dextra); 4917 assert (!newSolver); 4961 //OsiClpSolverInterface * newSolver = 4962 fixVubs(model_,extra3,vubAction,generalMessageHandler, 4963 debugValues,dextra); 4964 //assert (!newSolver); 4918 4965 } 4919 4966 // Actually do heuristics … … 5000 5047 dynamic_cast<OsiClpSolverInterface *>(solver) ; 5001 5048 assert (si != NULL); 5049 si->getModelPtr()->scaling(doScaling); 5002 5050 // See if quadratic 5003 5051 #ifdef COIN_HAS_LINK … … 5456 5504 CglProbing generator1; 5457 5505 generator1.setUsingObjective(1); 5458 generator1.setMaxPass(3); 5506 generator1.setMaxPass(1); 5507 generator1.setMaxPassRoot(1); 5459 5508 generator1.setMaxProbeRoot(saveSolver->getNumCols()); 5460 5509 generator1.setMaxElements(100); … … 6075 6124 int numberColumns = babModel_->getNumCols(); 6076 6125 // backward pointer to new variables 6077 int * newColumn = new int[numberOriginalColumns]; 6126 // extend arrays in case SOS 6127 assert (originalColumns); 6128 int n = originalColumns[numberColumns-1]+1; 6129 int * newColumn = new int[CoinMax(n,numberColumns)]; 6078 6130 int i; 6079 6131 for (i=0;i<numberOriginalColumns;i++) 6080 6132 newColumn[i]=-1; 6081 assert (originalColumns);6082 6133 for (i=0;i<numberColumns;i++) 6083 6134 newColumn[originalColumns[i]]=i; … … 6933 6984 CbcStrategyDefault strategy(true,babModel_->numberStrong(),babModel_->numberBeforeTrust()); 6934 6985 // Set up pre-processing 6935 int translate2[]={9999,1,1,3,2,4,5 };6986 int translate2[]={9999,1,1,3,2,4,5,6,6}; 6936 6987 if (preProcess) 6937 strategy.setupPreProcessing(translate2[ preProcess]);6988 strategy.setupPreProcessing(translate2[ preProcess ]); 6938 6989 babModel_->setStrategy(strategy); 6939 6990 #ifdef CBC_THREAD -
trunk/Cbc/src/CbcStrategy.cpp
r724 r819 139 139 generator1.setUsingObjective(true); 140 140 generator1.setMaxPass(1); 141 generator1.setMaxPassRoot(1); 141 142 // Number of unsatisfied variables to look at 142 143 generator1.setMaxProbe(10); … … 370 371 CglProbing generator1; 371 372 generator1.setUsingObjective(true); 372 generator1.setMaxPass(3); 373 generator1.setMaxPass(1); 374 generator1.setMaxPassRoot(1); 373 375 generator1.setMaxProbeRoot(solver->getNumCols()); 374 376 generator1.setMaxElements(100); … … 379 381 // Add in generators 380 382 process->addCutGenerator(&generator1); 381 int translate[]={9999,0, 3,2,-1,-2};383 int translate[]={9999,0,2,-2,3,4,4}; 382 384 OsiSolverInterface * solver2 = 383 385 process->preProcessNonDefault(*solver, -
trunk/Cbc/src/CoinSolve.cpp
r789 r819 14 14 #include <cstring> 15 15 #include <iostream> 16 //#define NEW_STYLE_SOLVER16 #define NEW_STYLE_SOLVER 17 17 #ifndef NEW_STYLE_SOLVER 18 18 // define TEST_MESSAGE_HANDLER to check works on all messages -
trunk/Cbc/src/unitTestClp.cpp
r768 r819 129 129 #endif 130 130 PUSH_MPS("air03",124,10757,340160,338864.25,7); 131 #if HOWMANY ==3131 #if HOWMANY>2 132 132 PUSH_MPS("air04",823,8904,56137,55535.436,8); 133 133 PUSH_MPS("air05",426,7195,26374,25877.609,8); … … 148 148 PUSH_MPS("egout",98,141,568.101,149.589,7); 149 149 PUSH_MPS("enigma",21,100,0.0,0.0,7); 150 #if HOWMANY ==3150 #if HOWMANY>3 151 151 PUSH_MPS("fast0507",507,63009,174,172.14556668,7); 152 152 #endif … … 164 164 PUSH_MPS("gesa3_o",1224,1152,27991042.648,27833632.451,7); 165 165 PUSH_MPS("gt2",29,188,21166.000,13460.233074,7); 166 #if HOWMANY ==3166 #if HOWMANY>2 167 167 PUSH_MPS("harp2",112,2993,-73899798.00,-74353341.502,7); 168 168 #endif … … 180 180 PUSH_MPS("mod008",6,319,307,290.9,7); 181 181 PUSH_MPS("mod010",146,2655,6548,6532.08,7); 182 #if HOWMANY ==3182 #if HOWMANY>2 183 183 PUSH_MPS("mod011",4480,10958,-54558535,-62121982.55,7); 184 184 PUSH_MPS("modglob",291,422,20740508,20430947.,7); 185 #endif 186 #if HOWMANY>3 185 187 PUSH_MPS("noswot",182,128,-43,-43.0,7); 186 188 #endif … … 193 195 PUSH_MPS("p0548",176,548,8691,315.29,7); 194 196 PUSH_MPS("p2756",755,2756,3124,2688.75,7); 195 #if HOWMANY ==3197 #if HOWMANY>2 196 198 PUSH_MPS("pk1",45,86,11.0,0.0,7); 197 199 #endif … … 200 202 PUSH_MPS("pp08aCUTS",246,240,7350.0,5480.6061563,7); 201 203 #endif 202 #if HOWMANY ==3204 #if HOWMANY>2 203 205 PUSH_MPS("qiu",1192,840,-132.873137,-931.638857,7); 204 206 #endif … … 207 209 PUSH_MPS("rentacar",6803,9557,30356761,28806137.644,7); 208 210 PUSH_MPS("rgn",24,180,82.1999,48.7999,7); 209 #if HOWMANY ==3211 #if HOWMANY>3 210 212 PUSH_MPS("rout",291,556,1077.56,981.86428571,7); 211 213 PUSH_MPS("set1ch",492,712,54537.75,32007.73,7);
Note: See TracChangeset
for help on using the changeset viewer.