ruby-cbc 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +4 -0
  6. data/README.md +203 -0
  7. data/Rakefile +40 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +7 -0
  10. data/ext/ruby-cbc/cbc.i +15 -0
  11. data/ext/ruby-cbc/cbc_wrap.c +4618 -0
  12. data/ext/ruby-cbc/extconf.rb +60 -0
  13. data/ext/ruby-cbc/install/bin/cbc +0 -0
  14. data/ext/ruby-cbc/install/bin/clp +0 -0
  15. data/ext/ruby-cbc/install/include/coin/CbcBranchActual.hpp +24 -0
  16. data/ext/ruby-cbc/install/include/coin/CbcBranchAllDifferent.hpp +62 -0
  17. data/ext/ruby-cbc/install/include/coin/CbcBranchBase.hpp +78 -0
  18. data/ext/ruby-cbc/install/include/coin/CbcBranchCut.hpp +183 -0
  19. data/ext/ruby-cbc/install/include/coin/CbcBranchDecision.hpp +129 -0
  20. data/ext/ruby-cbc/install/include/coin/CbcBranchDefaultDecision.hpp +100 -0
  21. data/ext/ruby-cbc/install/include/coin/CbcBranchDynamic.hpp +206 -0
  22. data/ext/ruby-cbc/install/include/coin/CbcBranchLotsize.hpp +242 -0
  23. data/ext/ruby-cbc/install/include/coin/CbcBranchToFixLots.hpp +94 -0
  24. data/ext/ruby-cbc/install/include/coin/CbcBranchingObject.hpp +236 -0
  25. data/ext/ruby-cbc/install/include/coin/CbcClique.hpp +303 -0
  26. data/ext/ruby-cbc/install/include/coin/CbcCompare.hpp +39 -0
  27. data/ext/ruby-cbc/install/include/coin/CbcCompareActual.hpp +14 -0
  28. data/ext/ruby-cbc/install/include/coin/CbcCompareBase.hpp +142 -0
  29. data/ext/ruby-cbc/install/include/coin/CbcCompareDefault.hpp +120 -0
  30. data/ext/ruby-cbc/install/include/coin/CbcCompareDepth.hpp +47 -0
  31. data/ext/ruby-cbc/install/include/coin/CbcCompareEstimate.hpp +48 -0
  32. data/ext/ruby-cbc/install/include/coin/CbcCompareObjective.hpp +49 -0
  33. data/ext/ruby-cbc/install/include/coin/CbcConfig.h +14 -0
  34. data/ext/ruby-cbc/install/include/coin/CbcConsequence.hpp +49 -0
  35. data/ext/ruby-cbc/install/include/coin/CbcCountRowCut.hpp +168 -0
  36. data/ext/ruby-cbc/install/include/coin/CbcCutGenerator.hpp +482 -0
  37. data/ext/ruby-cbc/install/include/coin/CbcCutModifier.hpp +57 -0
  38. data/ext/ruby-cbc/install/include/coin/CbcCutSubsetModifier.hpp +66 -0
  39. data/ext/ruby-cbc/install/include/coin/CbcDummyBranchingObject.hpp +83 -0
  40. data/ext/ruby-cbc/install/include/coin/CbcEventHandler.hpp +245 -0
  41. data/ext/ruby-cbc/install/include/coin/CbcFathom.hpp +137 -0
  42. data/ext/ruby-cbc/install/include/coin/CbcFathomDynamicProgramming.hpp +169 -0
  43. data/ext/ruby-cbc/install/include/coin/CbcFeasibilityBase.hpp +56 -0
  44. data/ext/ruby-cbc/install/include/coin/CbcFixVariable.hpp +67 -0
  45. data/ext/ruby-cbc/install/include/coin/CbcFollowOn.hpp +207 -0
  46. data/ext/ruby-cbc/install/include/coin/CbcFullNodeInfo.hpp +161 -0
  47. data/ext/ruby-cbc/install/include/coin/CbcGeneral.hpp +60 -0
  48. data/ext/ruby-cbc/install/include/coin/CbcGeneralDepth.hpp +279 -0
  49. data/ext/ruby-cbc/install/include/coin/CbcHeuristic.hpp +682 -0
  50. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDINS.hpp +96 -0
  51. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDW.hpp +309 -0
  52. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDive.hpp +192 -0
  53. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
  54. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
  55. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
  56. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
  57. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
  58. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
  59. data/ext/ruby-cbc/install/include/coin/CbcHeuristicFPump.hpp +340 -0
  60. data/ext/ruby-cbc/install/include/coin/CbcHeuristicGreedy.hpp +280 -0
  61. data/ext/ruby-cbc/install/include/coin/CbcHeuristicLocal.hpp +271 -0
  62. data/ext/ruby-cbc/install/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
  63. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRENS.hpp +77 -0
  64. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRINS.hpp +102 -0
  65. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRandRound.hpp +58 -0
  66. data/ext/ruby-cbc/install/include/coin/CbcHeuristicVND.hpp +94 -0
  67. data/ext/ruby-cbc/install/include/coin/CbcLinked.hpp +1406 -0
  68. data/ext/ruby-cbc/install/include/coin/CbcMessage.hpp +94 -0
  69. data/ext/ruby-cbc/install/include/coin/CbcMipStartIO.hpp +26 -0
  70. data/ext/ruby-cbc/install/include/coin/CbcModel.hpp +2952 -0
  71. data/ext/ruby-cbc/install/include/coin/CbcNWay.hpp +166 -0
  72. data/ext/ruby-cbc/install/include/coin/CbcNode.hpp +351 -0
  73. data/ext/ruby-cbc/install/include/coin/CbcNodeInfo.hpp +349 -0
  74. data/ext/ruby-cbc/install/include/coin/CbcObject.hpp +272 -0
  75. data/ext/ruby-cbc/install/include/coin/CbcObjectUpdateData.hpp +64 -0
  76. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.cpp +4134 -0
  77. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.hpp +532 -0
  78. data/ext/ruby-cbc/install/include/coin/CbcParam.hpp +324 -0
  79. data/ext/ruby-cbc/install/include/coin/CbcPartialNodeInfo.hpp +110 -0
  80. data/ext/ruby-cbc/install/include/coin/CbcSOS.hpp +279 -0
  81. data/ext/ruby-cbc/install/include/coin/CbcSimpleInteger.hpp +286 -0
  82. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +564 -0
  83. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerPseudoCost.hpp +114 -0
  84. data/ext/ruby-cbc/install/include/coin/CbcSolver.hpp +447 -0
  85. data/ext/ruby-cbc/install/include/coin/CbcStrategy.hpp +258 -0
  86. data/ext/ruby-cbc/install/include/coin/CbcSubProblem.hpp +83 -0
  87. data/ext/ruby-cbc/install/include/coin/CbcTree.hpp +490 -0
  88. data/ext/ruby-cbc/install/include/coin/CbcTreeLocal.hpp +372 -0
  89. data/ext/ruby-cbc/install/include/coin/Cbc_C_Interface.h +381 -0
  90. data/ext/ruby-cbc/install/include/coin/Cgl012cut.hpp +464 -0
  91. data/ext/ruby-cbc/install/include/coin/CglAllDifferent.hpp +115 -0
  92. data/ext/ruby-cbc/install/include/coin/CglClique.hpp +308 -0
  93. data/ext/ruby-cbc/install/include/coin/CglConfig.h +19 -0
  94. data/ext/ruby-cbc/install/include/coin/CglCutGenerator.hpp +121 -0
  95. data/ext/ruby-cbc/install/include/coin/CglDuplicateRow.hpp +189 -0
  96. data/ext/ruby-cbc/install/include/coin/CglFlowCover.hpp +371 -0
  97. data/ext/ruby-cbc/install/include/coin/CglGMI.hpp +364 -0
  98. data/ext/ruby-cbc/install/include/coin/CglGMIParam.hpp +313 -0
  99. data/ext/ruby-cbc/install/include/coin/CglGomory.hpp +204 -0
  100. data/ext/ruby-cbc/install/include/coin/CglKnapsackCover.hpp +310 -0
  101. data/ext/ruby-cbc/install/include/coin/CglLandP.hpp +306 -0
  102. data/ext/ruby-cbc/install/include/coin/CglLandPValidator.hpp +130 -0
  103. data/ext/ruby-cbc/install/include/coin/CglLiftAndProject.hpp +104 -0
  104. data/ext/ruby-cbc/install/include/coin/CglMessage.hpp +50 -0
  105. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding.hpp +429 -0
  106. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding2.hpp +427 -0
  107. data/ext/ruby-cbc/install/include/coin/CglOddHole.hpp +160 -0
  108. data/ext/ruby-cbc/install/include/coin/CglParam.hpp +93 -0
  109. data/ext/ruby-cbc/install/include/coin/CglPreProcess.hpp +492 -0
  110. data/ext/ruby-cbc/install/include/coin/CglProbing.hpp +543 -0
  111. data/ext/ruby-cbc/install/include/coin/CglRedSplit.hpp +448 -0
  112. data/ext/ruby-cbc/install/include/coin/CglRedSplit2.hpp +494 -0
  113. data/ext/ruby-cbc/install/include/coin/CglRedSplit2Param.hpp +495 -0
  114. data/ext/ruby-cbc/install/include/coin/CglRedSplitParam.hpp +272 -0
  115. data/ext/ruby-cbc/install/include/coin/CglResidualCapacity.hpp +240 -0
  116. data/ext/ruby-cbc/install/include/coin/CglSimpleRounding.hpp +174 -0
  117. data/ext/ruby-cbc/install/include/coin/CglStored.hpp +125 -0
  118. data/ext/ruby-cbc/install/include/coin/CglTreeInfo.hpp +180 -0
  119. data/ext/ruby-cbc/install/include/coin/CglTwomir.hpp +565 -0
  120. data/ext/ruby-cbc/install/include/coin/CglZeroHalf.hpp +133 -0
  121. data/ext/ruby-cbc/install/include/coin/ClpAmplObjective.hpp +113 -0
  122. data/ext/ruby-cbc/install/include/coin/ClpCholeskyBase.hpp +294 -0
  123. data/ext/ruby-cbc/install/include/coin/ClpCholeskyDense.hpp +162 -0
  124. data/ext/ruby-cbc/install/include/coin/ClpConfig.h +17 -0
  125. data/ext/ruby-cbc/install/include/coin/ClpConstraint.hpp +125 -0
  126. data/ext/ruby-cbc/install/include/coin/ClpConstraintAmpl.hpp +108 -0
  127. data/ext/ruby-cbc/install/include/coin/ClpConstraintLinear.hpp +110 -0
  128. data/ext/ruby-cbc/install/include/coin/ClpConstraintQuadratic.hpp +119 -0
  129. data/ext/ruby-cbc/install/include/coin/ClpDualRowDantzig.hpp +71 -0
  130. data/ext/ruby-cbc/install/include/coin/ClpDualRowPivot.hpp +129 -0
  131. data/ext/ruby-cbc/install/include/coin/ClpDualRowSteepest.hpp +153 -0
  132. data/ext/ruby-cbc/install/include/coin/ClpDummyMatrix.hpp +183 -0
  133. data/ext/ruby-cbc/install/include/coin/ClpDynamicExampleMatrix.hpp +186 -0
  134. data/ext/ruby-cbc/install/include/coin/ClpDynamicMatrix.hpp +381 -0
  135. data/ext/ruby-cbc/install/include/coin/ClpEventHandler.hpp +187 -0
  136. data/ext/ruby-cbc/install/include/coin/ClpFactorization.hpp +432 -0
  137. data/ext/ruby-cbc/install/include/coin/ClpGubDynamicMatrix.hpp +247 -0
  138. data/ext/ruby-cbc/install/include/coin/ClpGubMatrix.hpp +358 -0
  139. data/ext/ruby-cbc/install/include/coin/ClpInterior.hpp +570 -0
  140. data/ext/ruby-cbc/install/include/coin/ClpLinearObjective.hpp +103 -0
  141. data/ext/ruby-cbc/install/include/coin/ClpMatrixBase.hpp +524 -0
  142. data/ext/ruby-cbc/install/include/coin/ClpMessage.hpp +131 -0
  143. data/ext/ruby-cbc/install/include/coin/ClpModel.hpp +1307 -0
  144. data/ext/ruby-cbc/install/include/coin/ClpNetworkMatrix.hpp +229 -0
  145. data/ext/ruby-cbc/install/include/coin/ClpNode.hpp +349 -0
  146. data/ext/ruby-cbc/install/include/coin/ClpNonLinearCost.hpp +401 -0
  147. data/ext/ruby-cbc/install/include/coin/ClpObjective.hpp +134 -0
  148. data/ext/ruby-cbc/install/include/coin/ClpPackedMatrix.hpp +638 -0
  149. data/ext/ruby-cbc/install/include/coin/ClpParameters.hpp +126 -0
  150. data/ext/ruby-cbc/install/include/coin/ClpPdcoBase.hpp +103 -0
  151. data/ext/ruby-cbc/install/include/coin/ClpPlusMinusOneMatrix.hpp +290 -0
  152. data/ext/ruby-cbc/install/include/coin/ClpPresolve.hpp +299 -0
  153. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnDantzig.hpp +72 -0
  154. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnPivot.hpp +155 -0
  155. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnSteepest.hpp +247 -0
  156. data/ext/ruby-cbc/install/include/coin/ClpQuadraticObjective.hpp +155 -0
  157. data/ext/ruby-cbc/install/include/coin/ClpSimplex.hpp +1797 -0
  158. data/ext/ruby-cbc/install/include/coin/ClpSimplexDual.hpp +300 -0
  159. data/ext/ruby-cbc/install/include/coin/ClpSimplexNonlinear.hpp +117 -0
  160. data/ext/ruby-cbc/install/include/coin/ClpSimplexOther.hpp +277 -0
  161. data/ext/ruby-cbc/install/include/coin/ClpSimplexPrimal.hpp +244 -0
  162. data/ext/ruby-cbc/install/include/coin/ClpSolve.hpp +446 -0
  163. data/ext/ruby-cbc/install/include/coin/Clp_C_Interface.h +525 -0
  164. data/ext/ruby-cbc/install/include/coin/CoinAlloc.hpp +176 -0
  165. data/ext/ruby-cbc/install/include/coin/CoinBuild.hpp +149 -0
  166. data/ext/ruby-cbc/install/include/coin/CoinDenseFactorization.hpp +419 -0
  167. data/ext/ruby-cbc/install/include/coin/CoinDenseVector.hpp +383 -0
  168. data/ext/ruby-cbc/install/include/coin/CoinDistance.hpp +48 -0
  169. data/ext/ruby-cbc/install/include/coin/CoinError.hpp +257 -0
  170. data/ext/ruby-cbc/install/include/coin/CoinFactorization.hpp +2044 -0
  171. data/ext/ruby-cbc/install/include/coin/CoinFileIO.hpp +166 -0
  172. data/ext/ruby-cbc/install/include/coin/CoinFinite.hpp +34 -0
  173. data/ext/ruby-cbc/install/include/coin/CoinFloatEqual.hpp +177 -0
  174. data/ext/ruby-cbc/install/include/coin/CoinHelperFunctions.hpp +1111 -0
  175. data/ext/ruby-cbc/install/include/coin/CoinIndexedVector.hpp +1164 -0
  176. data/ext/ruby-cbc/install/include/coin/CoinLpIO.hpp +805 -0
  177. data/ext/ruby-cbc/install/include/coin/CoinMessage.hpp +96 -0
  178. data/ext/ruby-cbc/install/include/coin/CoinMessageHandler.hpp +666 -0
  179. data/ext/ruby-cbc/install/include/coin/CoinModel.hpp +1054 -0
  180. data/ext/ruby-cbc/install/include/coin/CoinModelUseful.hpp +441 -0
  181. data/ext/ruby-cbc/install/include/coin/CoinMpsIO.hpp +1056 -0
  182. data/ext/ruby-cbc/install/include/coin/CoinOslFactorization.hpp +280 -0
  183. data/ext/ruby-cbc/install/include/coin/CoinPackedMatrix.hpp +947 -0
  184. data/ext/ruby-cbc/install/include/coin/CoinPackedVector.hpp +657 -0
  185. data/ext/ruby-cbc/install/include/coin/CoinPackedVectorBase.hpp +269 -0
  186. data/ext/ruby-cbc/install/include/coin/CoinParam.hpp +644 -0
  187. data/ext/ruby-cbc/install/include/coin/CoinPragma.hpp +26 -0
  188. data/ext/ruby-cbc/install/include/coin/CoinPresolveDoubleton.hpp +73 -0
  189. data/ext/ruby-cbc/install/include/coin/CoinPresolveDual.hpp +85 -0
  190. data/ext/ruby-cbc/install/include/coin/CoinPresolveDupcol.hpp +226 -0
  191. data/ext/ruby-cbc/install/include/coin/CoinPresolveEmpty.hpp +116 -0
  192. data/ext/ruby-cbc/install/include/coin/CoinPresolveFixed.hpp +181 -0
  193. data/ext/ruby-cbc/install/include/coin/CoinPresolveForcing.hpp +61 -0
  194. data/ext/ruby-cbc/install/include/coin/CoinPresolveImpliedFree.hpp +60 -0
  195. data/ext/ruby-cbc/install/include/coin/CoinPresolveIsolated.hpp +51 -0
  196. data/ext/ruby-cbc/install/include/coin/CoinPresolveMatrix.hpp +1842 -0
  197. data/ext/ruby-cbc/install/include/coin/CoinPresolveMonitor.hpp +105 -0
  198. data/ext/ruby-cbc/install/include/coin/CoinPresolvePsdebug.hpp +166 -0
  199. data/ext/ruby-cbc/install/include/coin/CoinPresolveSingleton.hpp +112 -0
  200. data/ext/ruby-cbc/install/include/coin/CoinPresolveSubst.hpp +101 -0
  201. data/ext/ruby-cbc/install/include/coin/CoinPresolveTighten.hpp +55 -0
  202. data/ext/ruby-cbc/install/include/coin/CoinPresolveTripleton.hpp +66 -0
  203. data/ext/ruby-cbc/install/include/coin/CoinPresolveUseless.hpp +63 -0
  204. data/ext/ruby-cbc/install/include/coin/CoinPresolveZeros.hpp +60 -0
  205. data/ext/ruby-cbc/install/include/coin/CoinRational.hpp +44 -0
  206. data/ext/ruby-cbc/install/include/coin/CoinSearchTree.hpp +465 -0
  207. data/ext/ruby-cbc/install/include/coin/CoinShallowPackedVector.hpp +148 -0
  208. data/ext/ruby-cbc/install/include/coin/CoinSignal.hpp +117 -0
  209. data/ext/ruby-cbc/install/include/coin/CoinSimpFactorization.hpp +431 -0
  210. data/ext/ruby-cbc/install/include/coin/CoinSmartPtr.hpp +528 -0
  211. data/ext/ruby-cbc/install/include/coin/CoinSnapshot.hpp +476 -0
  212. data/ext/ruby-cbc/install/include/coin/CoinSort.hpp +678 -0
  213. data/ext/ruby-cbc/install/include/coin/CoinStructuredModel.hpp +247 -0
  214. data/ext/ruby-cbc/install/include/coin/CoinTime.hpp +310 -0
  215. data/ext/ruby-cbc/install/include/coin/CoinTypes.hpp +64 -0
  216. data/ext/ruby-cbc/install/include/coin/CoinUtility.hpp +19 -0
  217. data/ext/ruby-cbc/install/include/coin/CoinUtilsConfig.h +34 -0
  218. data/ext/ruby-cbc/install/include/coin/CoinWarmStart.hpp +58 -0
  219. data/ext/ruby-cbc/install/include/coin/CoinWarmStartBasis.hpp +456 -0
  220. data/ext/ruby-cbc/install/include/coin/CoinWarmStartDual.hpp +166 -0
  221. data/ext/ruby-cbc/install/include/coin/CoinWarmStartPrimalDual.hpp +211 -0
  222. data/ext/ruby-cbc/install/include/coin/CoinWarmStartVector.hpp +488 -0
  223. data/ext/ruby-cbc/install/include/coin/Coin_C_defines.h +115 -0
  224. data/ext/ruby-cbc/install/include/coin/Idiot.hpp +298 -0
  225. data/ext/ruby-cbc/install/include/coin/OsiAuxInfo.hpp +206 -0
  226. data/ext/ruby-cbc/install/include/coin/OsiBranchingObject.hpp +1005 -0
  227. data/ext/ruby-cbc/install/include/coin/OsiCbcSolverInterface.hpp +764 -0
  228. data/ext/ruby-cbc/install/include/coin/OsiChooseVariable.hpp +534 -0
  229. data/ext/ruby-cbc/install/include/coin/OsiClpSolverInterface.hpp +1509 -0
  230. data/ext/ruby-cbc/install/include/coin/OsiColCut.hpp +324 -0
  231. data/ext/ruby-cbc/install/include/coin/OsiCollections.hpp +35 -0
  232. data/ext/ruby-cbc/install/include/coin/OsiConfig.h +19 -0
  233. data/ext/ruby-cbc/install/include/coin/OsiCut.hpp +245 -0
  234. data/ext/ruby-cbc/install/include/coin/OsiCuts.hpp +474 -0
  235. data/ext/ruby-cbc/install/include/coin/OsiPresolve.hpp +252 -0
  236. data/ext/ruby-cbc/install/include/coin/OsiRowCut.hpp +331 -0
  237. data/ext/ruby-cbc/install/include/coin/OsiRowCutDebugger.hpp +187 -0
  238. data/ext/ruby-cbc/install/include/coin/OsiSolverBranch.hpp +152 -0
  239. data/ext/ruby-cbc/install/include/coin/OsiSolverInterface.hpp +2143 -0
  240. data/ext/ruby-cbc/install/include/coin/OsiSolverParameters.hpp +142 -0
  241. data/ext/ruby-cbc/install/include/coin/OsiUnitTests.hpp +374 -0
  242. data/ext/ruby-cbc/install/lib/libCbc.la +35 -0
  243. data/ext/ruby-cbc/install/lib/libCbc.so +0 -0
  244. data/ext/ruby-cbc/install/lib/libCbc.so.3 +0 -0
  245. data/ext/ruby-cbc/install/lib/libCbc.so.3.9.7 +0 -0
  246. data/ext/ruby-cbc/install/lib/libCbcSolver.la +35 -0
  247. data/ext/ruby-cbc/install/lib/libCbcSolver.so +0 -0
  248. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3 +0 -0
  249. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3.9.7 +0 -0
  250. data/ext/ruby-cbc/install/lib/libCgl.la +35 -0
  251. data/ext/ruby-cbc/install/lib/libCgl.so +0 -0
  252. data/ext/ruby-cbc/install/lib/libCgl.so.1 +0 -0
  253. data/ext/ruby-cbc/install/lib/libCgl.so.1.9.7 +0 -0
  254. data/ext/ruby-cbc/install/lib/libClp.la +35 -0
  255. data/ext/ruby-cbc/install/lib/libClp.so +0 -0
  256. data/ext/ruby-cbc/install/lib/libClp.so.1 +0 -0
  257. data/ext/ruby-cbc/install/lib/libClp.so.1.13.9 +0 -0
  258. data/ext/ruby-cbc/install/lib/libClpSolver.la +35 -0
  259. data/ext/ruby-cbc/install/lib/libClpSolver.so +0 -0
  260. data/ext/ruby-cbc/install/lib/libClpSolver.so.1 +0 -0
  261. data/ext/ruby-cbc/install/lib/libClpSolver.so.1.13.9 +0 -0
  262. data/ext/ruby-cbc/install/lib/libCoinUtils.la +35 -0
  263. data/ext/ruby-cbc/install/lib/libCoinUtils.so +0 -0
  264. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3 +0 -0
  265. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3.10.11 +0 -0
  266. data/ext/ruby-cbc/install/lib/libOsi.la +35 -0
  267. data/ext/ruby-cbc/install/lib/libOsi.so +0 -0
  268. data/ext/ruby-cbc/install/lib/libOsi.so.1 +0 -0
  269. data/ext/ruby-cbc/install/lib/libOsi.so.1.12.6 +0 -0
  270. data/ext/ruby-cbc/install/lib/libOsiCbc.la +35 -0
  271. data/ext/ruby-cbc/install/lib/libOsiCbc.so +0 -0
  272. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3 +0 -0
  273. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3.9.7 +0 -0
  274. data/ext/ruby-cbc/install/lib/libOsiClp.la +35 -0
  275. data/ext/ruby-cbc/install/lib/libOsiClp.so +0 -0
  276. data/ext/ruby-cbc/install/lib/libOsiClp.so.1 +0 -0
  277. data/ext/ruby-cbc/install/lib/libOsiClp.so.1.13.9 +0 -0
  278. data/ext/ruby-cbc/install/lib/libOsiCommonTests.la +35 -0
  279. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so +0 -0
  280. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1 +0 -0
  281. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1.12.6 +0 -0
  282. data/ext/ruby-cbc/install/lib/pkgconfig/cbc.pc +12 -0
  283. data/ext/ruby-cbc/install/lib/pkgconfig/cgl.pc +12 -0
  284. data/ext/ruby-cbc/install/lib/pkgconfig/clp.pc +12 -0
  285. data/ext/ruby-cbc/install/lib/pkgconfig/coindatamiplib3.pc +9 -0
  286. data/ext/ruby-cbc/install/lib/pkgconfig/coindatasample.pc +9 -0
  287. data/ext/ruby-cbc/install/lib/pkgconfig/coinutils.pc +12 -0
  288. data/ext/ruby-cbc/install/lib/pkgconfig/osi-cbc.pc +12 -0
  289. data/ext/ruby-cbc/install/lib/pkgconfig/osi-clp.pc +12 -0
  290. data/ext/ruby-cbc/install/lib/pkgconfig/osi-unittests.pc +12 -0
  291. data/ext/ruby-cbc/install/lib/pkgconfig/osi.pc +12 -0
  292. data/lib/ruby-cbc/ilp/constant.rb +44 -0
  293. data/lib/ruby-cbc/ilp/constraint.rb +32 -0
  294. data/lib/ruby-cbc/ilp/objective.rb +26 -0
  295. data/lib/ruby-cbc/ilp/term.rb +47 -0
  296. data/lib/ruby-cbc/ilp/term_array.rb +80 -0
  297. data/lib/ruby-cbc/ilp/var.rb +62 -0
  298. data/lib/ruby-cbc/model.rb +125 -0
  299. data/lib/ruby-cbc/problem.rb +170 -0
  300. data/lib/ruby-cbc/version.rb +3 -0
  301. data/lib/ruby-cbc.rb +21 -0
  302. data/ruby-cbc.gemspec +36 -0
  303. metadata +431 -0
@@ -0,0 +1,447 @@
1
+ /* $Id: CbcSolver.hpp 1998 2013-12-19 18:11:05Z forrest $ */
2
+ // Copyright (C) 2007, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+
7
+ /*! \file CbcSolver.hpp
8
+ \brief Defines CbcSolver, the proposed top-level class for the new-style
9
+ cbc solver.
10
+
11
+ This class is currently an orphan. With the removal of all code flagged
12
+ with the NEW_STYLE_SOLVER, this class is never instantiated (and cannot
13
+ be instantiated). It is available to be coopted as a top-level object
14
+ wrapping the current CbcMain0 and CbcMain1, should that appear to be a
15
+ desireable path forward. -- lh, 091211 --
16
+ */
17
+
18
+ #ifndef CbcSolver_H
19
+ #define CbcSolver_H
20
+
21
+ #include <string>
22
+ #include <vector>
23
+ #include "CoinMessageHandler.hpp"
24
+ #include "OsiClpSolverInterface.hpp"
25
+
26
+ #if CBC_OTHER_SOLVER==1
27
+ #include "OsiCpxSolverInterface.hpp"
28
+ #endif
29
+
30
+ #include "CbcModel.hpp"
31
+ #include "CbcOrClpParam.hpp"
32
+
33
+ class CbcUser;
34
+ class CbcStopNow;
35
+ class CglCutGenerator;
36
+
37
+ //#############################################################################
38
+
39
+ /*! \brief This allows the use of the standalone solver in a flexible manner.
40
+
41
+ It has an original OsiClpSolverInterface and CbcModel which it can use
42
+ repeatedly, e.g., to get a heuristic solution and then start again.
43
+
44
+ So I [jjf] will need a primitive scripting language which can then call
45
+ solve and manipulate solution value and solution arrays.
46
+
47
+ Also provides for user callback functions. Currently two ideas in
48
+ gestation, CbcUser and CbcStopNow. The latter seems limited to deciding
49
+ whether or not to stop. The former seems completely general, with a notion
50
+ of importing and exporting, and a `solve', which should be interpreted as
51
+ `do whatever this user function does'.
52
+
53
+ Parameter initialisation is at last centralised in fillParameters().
54
+ */
55
+
56
+ class CbcSolver {
57
+
58
+ public:
59
+ ///@name Solve method
60
+ //@{
61
+ /** This takes a list of commands, does "stuff" and returns
62
+ returnMode -
63
+ 0 model and solver untouched - babModel updated
64
+ 1 model updated - just with solution basis etc
65
+ 2 model updated i.e. as babModel (babModel NULL) (only use without preprocessing)
66
+ */
67
+ int solve(int argc, const char * argv[], int returnMode);
68
+ /** This takes a list of commands, does "stuff" and returns
69
+ returnMode -
70
+ 0 model and solver untouched - babModel updated
71
+ 1 model updated - just with solution basis etc
72
+ 2 model updated i.e. as babModel (babModel NULL) (only use without preprocessing)
73
+ */
74
+ int solve(const char * input, int returnMode);
75
+ //@}
76
+ ///@name Constructors and destructors etc
77
+ //@{
78
+ /// Default Constructor
79
+ CbcSolver();
80
+
81
+ /// Constructor from solver
82
+ CbcSolver(const OsiClpSolverInterface &);
83
+
84
+ /// Constructor from model
85
+ CbcSolver(const CbcModel &);
86
+
87
+ /** Copy constructor .
88
+ */
89
+ CbcSolver(const CbcSolver & rhs);
90
+
91
+ /// Assignment operator
92
+ CbcSolver & operator=(const CbcSolver& rhs);
93
+
94
+ /// Destructor
95
+ ~CbcSolver ();
96
+ /// Fill with standard parameters
97
+ void fillParameters();
98
+ /*! \brief Set default values in solvers from parameters
99
+
100
+ Misleading. The current code actually reads default values from
101
+ the underlying solvers and installs them as default values for a subset of
102
+ parameters in #parameters_.
103
+ */
104
+ void fillValuesInSolver();
105
+ /// Add user function
106
+ void addUserFunction(CbcUser * function);
107
+ /// Set user call back
108
+ void setUserCallBack(CbcStopNow * function);
109
+ /// Add cut generator
110
+ void addCutGenerator(CglCutGenerator * generator);
111
+ //@}
112
+ ///@name miscellaneous methods to line up with old
113
+ //@{
114
+ // analyze model
115
+ int * analyze(OsiClpSolverInterface * solverMod, int & numberChanged, double & increment,
116
+ bool changeInt, CoinMessageHandler * generalMessageHandler);
117
+ /** 1 - add heuristics to model
118
+ 2 - do heuristics (and set cutoff and best solution)
119
+ 3 - for miplib test so skip some
120
+ (out model later)
121
+ */
122
+ //int doHeuristics(CbcModel * model, int type);
123
+ /** Updates model_ from babModel_ according to returnMode
124
+ returnMode -
125
+ 0 model and solver untouched - babModel updated
126
+ 1 model updated - just with solution basis etc
127
+ 2 model updated i.e. as babModel (babModel NULL) (only use without preprocessing)
128
+ */
129
+ void updateModel(ClpSimplex * model2, int returnMode);
130
+ //@}
131
+ ///@name useful stuff
132
+ //@{
133
+ /// Get int value
134
+ int intValue(CbcOrClpParameterType type) const;
135
+ /// Set int value
136
+ void setIntValue(CbcOrClpParameterType type, int value);
137
+ /// Get double value
138
+ double doubleValue(CbcOrClpParameterType type) const;
139
+ /// Set double value
140
+ void setDoubleValue(CbcOrClpParameterType type, double value);
141
+ /// User function (NULL if no match)
142
+ CbcUser * userFunction(const char * name) const;
143
+ /// Return original Cbc model
144
+ inline CbcModel * model() {
145
+ return &model_;
146
+ }
147
+ /// Return updated Cbc model
148
+ inline CbcModel * babModel() {
149
+ return babModel_;
150
+ }
151
+ /// Number of userFunctions
152
+ inline int numberUserFunctions() const {
153
+ return numberUserFunctions_;
154
+ }
155
+ /// User function array
156
+ inline CbcUser ** userFunctionArray() const {
157
+ return userFunction_;
158
+ }
159
+ /// Copy of model on initial load (will contain output solutions)
160
+ inline OsiClpSolverInterface * originalSolver() const {
161
+ return originalSolver_;
162
+ }
163
+ /// Copy of model on initial load
164
+ inline CoinModel * originalCoinModel() const {
165
+ return originalCoinModel_;
166
+ }
167
+ /// Copy of model on initial load (will contain output solutions)
168
+ void setOriginalSolver(OsiClpSolverInterface * originalSolver);
169
+ /// Copy of model on initial load
170
+ void setOriginalCoinModel(CoinModel * originalCoinModel);
171
+ /// Number of cutgenerators
172
+ inline int numberCutGenerators() const {
173
+ return numberCutGenerators_;
174
+ }
175
+ /// Cut generator array
176
+ inline CglCutGenerator ** cutGeneratorArray() const {
177
+ return cutGenerator_;
178
+ }
179
+ /// Start time
180
+ inline double startTime() const {
181
+ return startTime_;
182
+ }
183
+ /// Whether to print to std::cout
184
+ inline void setPrinting(bool onOff) {
185
+ noPrinting_ = !onOff;
186
+ }
187
+ /// Where to start reading commands
188
+ inline void setReadMode(int value) {
189
+ readMode_ = value;
190
+ }
191
+ //@}
192
+ private:
193
+ ///@name Private member data
194
+ //@{
195
+
196
+ /// Reference model
197
+ CbcModel model_;
198
+
199
+ /// Updated model
200
+ CbcModel * babModel_;
201
+
202
+ /// User functions
203
+ CbcUser ** userFunction_;
204
+ /** Status of user functions
205
+ 0 - not used
206
+ 1 - needs cbc_load
207
+ 2 - available - data in coinModel
208
+ 3 - data loaded - can do cbc_save
209
+ */
210
+ int * statusUserFunction_;
211
+ /// Copy of model on initial load (will contain output solutions)
212
+ OsiClpSolverInterface * originalSolver_;
213
+ /// Copy of model on initial load
214
+ CoinModel * originalCoinModel_;
215
+ /// Cut generators
216
+ CglCutGenerator ** cutGenerator_;
217
+ /// Number of user functions
218
+ int numberUserFunctions_;
219
+ /// Number of cut generators
220
+ int numberCutGenerators_;
221
+ /// Stop now stuff
222
+ CbcStopNow * callBack_;
223
+ /// Cpu time at instantiation
224
+ double startTime_;
225
+ /// Parameters and values
226
+ CbcOrClpParam * parameters_;
227
+ /// Number of parameters
228
+ int numberParameters_ ;
229
+ /// Whether to do miplib test
230
+ bool doMiplib_;
231
+ /// Whether to print to std::cout
232
+ bool noPrinting_;
233
+ /// Where to start reading commands
234
+ int readMode_;
235
+ //@}
236
+ };
237
+ //#############################################################################
238
+
239
+ /// Structure to hold useful arrays
240
+ typedef struct {
241
+ // Priorities
242
+ int * priorities_;
243
+ // SOS priorities
244
+ int * sosPriority_;
245
+ // Direction to branch first
246
+ int * branchDirection_;
247
+ // Input solution
248
+ double * primalSolution_;
249
+ // Down pseudo costs
250
+ double * pseudoDown_;
251
+ // Up pseudo costs
252
+ double * pseudoUp_;
253
+ } CbcSolverUsefulData2;
254
+
255
+ //#############################################################################
256
+
257
+ /**
258
+ The CbcSolver class was taken out at a 9/12/09 meeting
259
+ This is a feeble replacement.
260
+ At present everything is public
261
+ */
262
+ class CbcSolverUsefulData {
263
+
264
+ public:
265
+ ///@name Constructors and destructors etc
266
+ //@{
267
+ /// Default Constructor
268
+ CbcSolverUsefulData();
269
+
270
+ /** Copy constructor .
271
+ */
272
+ CbcSolverUsefulData(const CbcSolverUsefulData & rhs);
273
+
274
+ /// Assignment operator
275
+ CbcSolverUsefulData & operator=(const CbcSolverUsefulData& rhs);
276
+
277
+ /// Destructor
278
+ ~CbcSolverUsefulData ();
279
+ //@}
280
+
281
+ ///@name Member data
282
+ //@{
283
+ // For time
284
+ double totalTime_;
285
+ // Parameters
286
+ CbcOrClpParam parameters_[CBCMAXPARAMETERS];
287
+ // Printing
288
+ bool noPrinting_;
289
+ // Whether to use signal handler
290
+ bool useSignalHandler_;
291
+ // Number of Parameters
292
+ int numberParameters_;
293
+ // Default pump tuning
294
+ int initialPumpTune_;
295
+ //@}
296
+ };
297
+ /// And this uses it
298
+ // When we want to load up CbcModel with options first
299
+ void CbcMain0 (CbcModel & babSolver,CbcSolverUsefulData & solverData);
300
+ int CbcMain1 (int argc, const char *argv[], CbcModel & babSolver, int (CbcModel * currentSolver, int whereFrom),CbcSolverUsefulData & solverData);
301
+
302
+ //#############################################################################
303
+
304
+ /*! \brief A class to allow the use of unknown user functionality
305
+
306
+ For example, access to a modelling language (CbcAmpl).
307
+ */
308
+ class CbcUser {
309
+
310
+ public:
311
+ ///@name import/export methods
312
+ //@{
313
+ /*! \brief Import - gets full command arguments
314
+
315
+ \return
316
+ - -1 - no action
317
+ - 0 - data read in without error
318
+ - 1 - errors
319
+ */
320
+ virtual int importData(CbcSolver * /*model*/, int & /*argc*/, char ** /*argv[]*/) {
321
+ return -1;
322
+ }
323
+
324
+ /*! \brief Export
325
+
326
+ Values for mode:
327
+ - 1 OsiClpSolver
328
+ - 2 CbcModel
329
+ - add 10 if infeasible from odd situation
330
+ */
331
+ virtual void exportSolution(CbcSolver * /*model*/,
332
+ int /*mode*/, const char * /*message*/ = NULL) {}
333
+
334
+ /// Export Data (i.e. at very end)
335
+ virtual void exportData(CbcSolver * /*model*/) {}
336
+
337
+ /// Get useful stuff
338
+ virtual void fillInformation(CbcSolver * /*model*/,
339
+ CbcSolverUsefulData & /*info*/) {}
340
+ //@}
341
+
342
+ ///@name usage methods
343
+ //@{
344
+ /// CoinModel if valid
345
+ inline CoinModel *coinModel() const {
346
+ return coinModel_;
347
+ }
348
+ /// Other info - needs expanding
349
+ virtual void * stuff() {
350
+ return NULL;
351
+ }
352
+ /// Name
353
+ inline std::string name() const {
354
+ return userName_;
355
+ }
356
+ /// Solve (whatever that means)
357
+ virtual void solve(CbcSolver * model, const char * options) = 0;
358
+ /// Returns true if function knows about option
359
+ virtual bool canDo(const char * options) = 0;
360
+ //@}
361
+
362
+ ///@name Constructors and destructors etc
363
+ //@{
364
+ /// Default Constructor
365
+ CbcUser();
366
+
367
+ /// Copy constructor
368
+ CbcUser(const CbcUser & rhs);
369
+
370
+ /// Assignment operator
371
+ CbcUser & operator=(const CbcUser& rhs);
372
+
373
+ /// Clone
374
+ virtual CbcUser * clone() const = 0;
375
+
376
+ /// Destructor
377
+ virtual ~CbcUser ();
378
+ //@}
379
+
380
+ protected:
381
+ ///@name Private member data
382
+ //@{
383
+
384
+ /// CoinModel
385
+ CoinModel * coinModel_;
386
+
387
+ /// Name of user function
388
+ std::string userName_;
389
+
390
+ //@}
391
+ };
392
+ //#############################################################################
393
+
394
+ /*! \brief Support the use of a call back class to decide whether to stop
395
+
396
+ Definitely under construction.
397
+ */
398
+
399
+ class CbcStopNow {
400
+
401
+ public:
402
+ ///@name Decision methods
403
+ //@{
404
+ /*! \brief Import
405
+
406
+ Values for whereFrom:
407
+ - 1 after initial solve by dualsimplex etc
408
+ - 2 after preprocessing
409
+ - 3 just before branchAndBound (so user can override)
410
+ - 4 just after branchAndBound (before postprocessing)
411
+ - 5 after postprocessing
412
+ - 6 after a user called heuristic phase
413
+
414
+ \return 0 if good
415
+ nonzero return code to stop
416
+ */
417
+ virtual int callBack(CbcModel * /*currentSolver*/, int /*whereFrom*/) {
418
+ return 0;
419
+ }
420
+ //@}
421
+
422
+ ///@name Constructors and destructors etc
423
+ //@{
424
+ /// Default Constructor
425
+ CbcStopNow();
426
+
427
+ /** Copy constructor .
428
+ */
429
+ CbcStopNow(const CbcStopNow & rhs);
430
+
431
+ /// Assignment operator
432
+ CbcStopNow & operator=(const CbcStopNow& rhs);
433
+
434
+ /// Clone
435
+ virtual CbcStopNow * clone() const;
436
+
437
+ /// Destructor
438
+ virtual ~CbcStopNow ();
439
+ //@}
440
+
441
+ private:
442
+ ///@name Private member data
443
+ //@{
444
+ //@}
445
+ };
446
+ #endif
447
+
@@ -0,0 +1,258 @@
1
+ /* $Id: CbcStrategy.hpp 1573 2011-01-05 01:12:36Z lou $ */
2
+ // Copyright (C) 2005, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #ifndef CbcStrategy_H
7
+ #define CbcStrategy_H
8
+
9
+ #include "CbcModel.hpp"
10
+ class CglPreProcess;
11
+ class CbcNodeInfo;
12
+ class CbcNode;
13
+ class CoinWarmStartDiff;
14
+
15
+ //#############################################################################
16
+ /** Strategy base class */
17
+
18
+ class CbcStrategy {
19
+ public:
20
+ // Default Constructor
21
+ CbcStrategy ();
22
+
23
+ virtual ~CbcStrategy();
24
+
25
+ /// Clone
26
+ virtual CbcStrategy * clone() const = 0;
27
+
28
+ /// Setup cut generators
29
+ virtual void setupCutGenerators(CbcModel & model) = 0;
30
+ /// Setup heuristics
31
+ virtual void setupHeuristics(CbcModel & model) = 0;
32
+ /// Do printing stuff
33
+ virtual void setupPrinting(CbcModel & model, int modelLogLevel) = 0;
34
+ /// Other stuff e.g. strong branching and preprocessing
35
+ virtual void setupOther(CbcModel & model) = 0;
36
+ /// Set model depth (i.e. how nested)
37
+ inline void setNested(int depth) {
38
+ depth_ = depth;
39
+ }
40
+ /// Get model depth (i.e. how nested)
41
+ inline int getNested() const {
42
+ return depth_;
43
+ }
44
+ /// Say preProcessing done
45
+ inline void setPreProcessState(int state) {
46
+ preProcessState_ = state;
47
+ }
48
+ /// See what sort of preprocessing was done
49
+ inline int preProcessState() const {
50
+ return preProcessState_;
51
+ }
52
+ /// Pre-processing object
53
+ inline CglPreProcess * process() const {
54
+ return process_;
55
+ }
56
+ /// Delete pre-processing object to save memory
57
+ void deletePreProcess();
58
+ /// Return a new Full node information pointer (descendant of CbcFullNodeInfo)
59
+ virtual CbcNodeInfo * fullNodeInfo(CbcModel * model, int numberRowsAtContinuous) const;
60
+ /// Return a new Partial node information pointer (descendant of CbcPartialNodeInfo)
61
+ virtual CbcNodeInfo * partialNodeInfo(CbcModel * model, CbcNodeInfo * parent, CbcNode * owner,
62
+ int numberChangedBounds, const int * variables,
63
+ const double * boundChanges,
64
+ const CoinWarmStartDiff *basisDiff) const;
65
+ /// Create C++ lines to get to current state
66
+ virtual void generateCpp( FILE * ) {}
67
+ /** After a CbcModel::resolve this can return a status
68
+ -1 no effect
69
+ 0 treat as optimal
70
+ 1 as 0 but do not do any more resolves (i.e. no more cuts)
71
+ 2 treat as infeasible
72
+ */
73
+ virtual int status(CbcModel * model, CbcNodeInfo * parent, int whereFrom);
74
+ private:
75
+
76
+ /// Illegal Assignment operator
77
+ CbcStrategy & operator=(const CbcStrategy& rhs);
78
+ protected:
79
+ // Data
80
+ /// Model depth
81
+ int depth_;
82
+ /** PreProcessing state -
83
+ -1 infeasible
84
+ 0 off
85
+ 1 was done (so need post-processing)
86
+ */
87
+ int preProcessState_;
88
+ /// If preprocessing then this is object
89
+ CglPreProcess * process_;
90
+ };
91
+
92
+ /** Null class
93
+ */
94
+
95
+ class CbcStrategyNull : public CbcStrategy {
96
+ public:
97
+
98
+ // Default Constructor
99
+ CbcStrategyNull () {}
100
+
101
+ // Copy constructor
102
+ CbcStrategyNull ( const CbcStrategyNull & rhs) : CbcStrategy(rhs) {}
103
+
104
+ // Destructor
105
+ ~CbcStrategyNull () {}
106
+
107
+ /// Clone
108
+ virtual CbcStrategy * clone() const {
109
+ return new CbcStrategyNull(*this);
110
+ }
111
+
112
+ /// Setup cut generators
113
+ virtual void setupCutGenerators(CbcModel & ) {}
114
+ /// Setup heuristics
115
+ virtual void setupHeuristics(CbcModel & ) {}
116
+ /// Do printing stuff
117
+ virtual void setupPrinting(CbcModel & , int ) {}
118
+ /// Other stuff e.g. strong branching
119
+ virtual void setupOther(CbcModel & ) {}
120
+
121
+ protected:
122
+ // Data
123
+ private:
124
+ /// Illegal Assignment operator
125
+ CbcStrategyNull & operator=(const CbcStrategyNull& rhs);
126
+ };
127
+
128
+ /** Default class
129
+ */
130
+
131
+ class CbcStrategyDefault : public CbcStrategy {
132
+ public:
133
+
134
+ // Default Constructor
135
+ CbcStrategyDefault (int cutsOnlyAtRoot = 1,
136
+ int numberStrong = 5,
137
+ int numberBeforeTrust = 0,
138
+ int printLevel = 0);
139
+
140
+ // Copy constructor
141
+ CbcStrategyDefault ( const CbcStrategyDefault &);
142
+
143
+ // Destructor
144
+ ~CbcStrategyDefault ();
145
+
146
+ /// Clone
147
+ virtual CbcStrategy * clone() const;
148
+
149
+ /// Setup cut generators
150
+ virtual void setupCutGenerators(CbcModel & model);
151
+ /// Setup heuristics
152
+ virtual void setupHeuristics(CbcModel & model);
153
+ /// Do printing stuff
154
+ virtual void setupPrinting(CbcModel & model, int modelLogLevel) ;
155
+ /// Other stuff e.g. strong branching
156
+ virtual void setupOther(CbcModel & model);
157
+ /// Set up preProcessing - see below
158
+ inline void setupPreProcessing(int desired = 1, int passes = 10) {
159
+ desiredPreProcess_ = desired;
160
+ preProcessPasses_ = passes;
161
+ }
162
+ /// See what sort of preprocessing wanted
163
+ inline int desiredPreProcess() const {
164
+ return desiredPreProcess_;
165
+ }
166
+ /// See how many passes wanted
167
+ inline int preProcessPasses() const {
168
+ return preProcessPasses_;
169
+ }
170
+ /// Create C++ lines to get to current state
171
+ virtual void generateCpp( FILE * fp) ;
172
+
173
+ protected:
174
+ // Data
175
+
176
+ // Whether to do cuts only at root (-1 -> switch off totally)
177
+ int cutsOnlyAtRoot_;
178
+
179
+ // How much strong branching to do
180
+ int numberStrong_;
181
+
182
+ // Number branches needed to trust with dynamic pseudo costs
183
+ int numberBeforeTrust_;
184
+
185
+ // Print level 0 little, 1 medium
186
+ int printLevel_;
187
+
188
+ /** Desired pre-processing
189
+ 0 - none
190
+ 1 - ordinary
191
+ 2 - find sos
192
+ 3 - find cliques
193
+ 4 - more aggressive sos
194
+ 5 - add integer slacks
195
+ */
196
+ int desiredPreProcess_;
197
+ /// Number of pre-processing passes
198
+ int preProcessPasses_;
199
+
200
+ private:
201
+ /// Illegal Assignment operator
202
+ CbcStrategyDefault & operator=(const CbcStrategyDefault& rhs);
203
+ };
204
+
205
+
206
+ /** Default class for sub trees
207
+ */
208
+
209
+ class CbcStrategyDefaultSubTree : public CbcStrategy {
210
+ public:
211
+
212
+ // Default Constructor
213
+ CbcStrategyDefaultSubTree (CbcModel * parent = NULL, int cutsOnlyAtRoot = 1,
214
+ int numberStrong = 5,
215
+ int numberBeforeTrust = 0,
216
+ int printLevel = 0);
217
+
218
+ // Copy constructor
219
+ CbcStrategyDefaultSubTree ( const CbcStrategyDefaultSubTree &);
220
+
221
+ // Destructor
222
+ ~CbcStrategyDefaultSubTree ();
223
+
224
+ /// Clone
225
+ virtual CbcStrategy * clone() const;
226
+
227
+ /// Setup cut generators
228
+ virtual void setupCutGenerators(CbcModel & model);
229
+ /// Setup heuristics
230
+ virtual void setupHeuristics(CbcModel & model);
231
+ /// Do printing stuff
232
+ virtual void setupPrinting(CbcModel & model, int modelLogLevel) ;
233
+ /// Other stuff e.g. strong branching
234
+ virtual void setupOther(CbcModel & model);
235
+ protected:
236
+ // Data
237
+ // Parent model
238
+ CbcModel * parentModel_;
239
+ // Whether to do cuts only at root (-1 -> switch off totally)
240
+ int cutsOnlyAtRoot_;
241
+
242
+ // How much strong branching to do
243
+ int numberStrong_;
244
+
245
+ // Number branches needed to trust with dynamic pseudo costs
246
+ int numberBeforeTrust_;
247
+
248
+ // Print level 0 little, 1 medium
249
+ int printLevel_;
250
+
251
+ private:
252
+ /// Illegal Assignment operator
253
+ CbcStrategyDefaultSubTree & operator=(const CbcStrategyDefaultSubTree& rhs);
254
+ };
255
+
256
+
257
+ #endif
258
+