ruby-cbc 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,142 @@
1
+ /* $Id: CbcCompareBase.hpp 1573 2011-01-05 01:12:36Z lou $ */
2
+ // Copyright (C) 2002, 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 CbcCompareBase_H
7
+ #define CbcCompareBase_H
8
+
9
+
10
+ //#############################################################################
11
+ /* These are alternative strategies for node traversal.
12
+ They can take data etc for fine tuning
13
+
14
+ At present the node list is stored as a heap and the "test"
15
+ comparison function returns true if node y is better than node x.
16
+
17
+ This is rather inflexible so if the comparison functions wants
18
+ it can signal to use alternative criterion on a complete pass
19
+ throgh tree.
20
+
21
+ */
22
+ #include "CbcNode.hpp"
23
+ #include "CbcConfig.h"
24
+
25
+ class CbcModel;
26
+ class CbcTree;
27
+ class CbcCompareBase {
28
+ public:
29
+ // Default Constructor
30
+ CbcCompareBase () {
31
+ test_ = NULL;
32
+ threaded_ = false;
33
+ }
34
+
35
+ /*! \brief Reconsider behaviour after discovering a new solution.
36
+
37
+ This allows any method to change its behaviour. It is called
38
+ after each solution.
39
+
40
+ The method should return true if changes are made which will
41
+ alter the evaluation criteria applied to a node. (So that in
42
+ cases where the search tree is sorted, it can be properly
43
+ rebuilt.)
44
+ */
45
+ virtual bool newSolution(CbcModel * ) { return (false) ; }
46
+
47
+ /*! \brief Reconsider behaviour after discovering a new solution.
48
+
49
+ This allows any method to change its behaviour. It is called
50
+ after each solution.
51
+
52
+ The method should return true if changes are made which will
53
+ alter the evaluation criteria applied to a node. (So that in
54
+ cases where the search tree is sorted, it can be properly
55
+ rebuilt.)
56
+ */
57
+ virtual bool newSolution(CbcModel * ,
58
+ double ,
59
+ int ) { return (false) ; }
60
+
61
+ // This allows any method to change behavior as it is called
62
+ // after every 1000 nodes.
63
+ // Return true if want tree re-sorted
64
+ virtual bool every1000Nodes(CbcModel * , int ) {
65
+ return false;
66
+ }
67
+
68
+ /** Returns true if wants code to do scan with alternate criterion
69
+ NOTE - this is temporarily disabled
70
+ */
71
+ virtual bool fullScan() const {
72
+ return false;
73
+ }
74
+
75
+ virtual ~CbcCompareBase() {}
76
+ /// Create C++ lines to get to current state
77
+ virtual void generateCpp( FILE * ) {}
78
+
79
+ // Copy constructor
80
+ CbcCompareBase ( const CbcCompareBase & rhs) {
81
+ test_ = rhs.test_;
82
+ threaded_ = rhs.threaded_;
83
+ }
84
+
85
+ // Assignment operator
86
+ CbcCompareBase & operator=( const CbcCompareBase& rhs) {
87
+ if (this != &rhs) {
88
+ test_ = rhs.test_;
89
+ threaded_ = rhs.threaded_;
90
+ }
91
+ return *this;
92
+ }
93
+
94
+ /// Clone
95
+ virtual CbcCompareBase * clone() const {
96
+ abort();
97
+ return NULL;
98
+ }
99
+
100
+ /// This is test function
101
+ virtual bool test (CbcNode * , CbcNode * ) {
102
+ return true;
103
+ }
104
+
105
+ /// This is alternate test function
106
+ virtual bool alternateTest (CbcNode * x, CbcNode * y) {
107
+ return test(x, y);
108
+ }
109
+
110
+ bool operator() (CbcNode * x, CbcNode * y) {
111
+ return test(x, y);
112
+ }
113
+ /// Further test if everything else equal
114
+ inline bool equalityTest (CbcNode * x, CbcNode * y) const {
115
+ assert (x);
116
+ assert (y);
117
+ if (!threaded_) {
118
+ CbcNodeInfo * infoX = x->nodeInfo();
119
+ assert (infoX);
120
+ int nodeNumberX = infoX->nodeNumber();
121
+ CbcNodeInfo * infoY = y->nodeInfo();
122
+ assert (infoY);
123
+ int nodeNumberY = infoY->nodeNumber();
124
+ assert (nodeNumberX != nodeNumberY);
125
+ return (nodeNumberX > nodeNumberY);
126
+ } else {
127
+ assert (x->nodeNumber() != y->nodeNumber());
128
+ return (x->nodeNumber() > y->nodeNumber());
129
+ }
130
+ }
131
+ /// Say threaded
132
+ inline void sayThreaded() {
133
+ threaded_ = true;
134
+ }
135
+ protected:
136
+ CbcCompareBase * test_;
137
+ // If not threaded we can use better way to break ties
138
+ bool threaded_;
139
+ };
140
+
141
+ #endif
142
+
@@ -0,0 +1,120 @@
1
+ // $Id: CbcCompareDefault.hpp 1899 2013-04-09 18:12:08Z stefan $
2
+ // Copyright (C) 2002, 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
+ //Edwin 11/25/09 carved out of CbcCompareActual
7
+
8
+ #ifndef CbcCompareDefault_H
9
+ #define CbcCompareDefault_H
10
+
11
+
12
+ //#############################################################################
13
+ /* These are alternative strategies for node traversal.
14
+ They can take data etc for fine tuning
15
+
16
+ At present the node list is stored as a heap and the "test"
17
+ comparison function returns true if node y is better than node x.
18
+
19
+ */
20
+ #include "CbcNode.hpp"
21
+ #include "CbcCompareBase.hpp"
22
+ #include "CbcCompare.hpp"
23
+
24
+ class CbcModel;
25
+
26
+ /* This is an example of a more complex rule with data
27
+ It is default after first solution
28
+ If weight is 0.0 then it is computed to hit first solution
29
+ less 5%
30
+ */
31
+ class CbcCompareDefault : public CbcCompareBase {
32
+ public:
33
+ /// Default Constructor
34
+ CbcCompareDefault () ;
35
+ /// Constructor with weight
36
+ CbcCompareDefault (double weight);
37
+
38
+ /// Copy constructor
39
+ CbcCompareDefault ( const CbcCompareDefault &rhs);
40
+
41
+ /// Assignment operator
42
+ CbcCompareDefault & operator=( const CbcCompareDefault& rhs);
43
+
44
+ /// Clone
45
+ virtual CbcCompareBase * clone() const;
46
+ /// Create C++ lines to get to current state
47
+ virtual void generateCpp( FILE * fp);
48
+
49
+ ~CbcCompareDefault() ;
50
+ /* This returns true if weighted value of node y is less than
51
+ weighted value of node x */
52
+ virtual bool test (CbcNode * x, CbcNode * y) ;
53
+
54
+ using CbcCompareBase::newSolution ;
55
+ /// This allows method to change behavior as it is called
56
+ /// after each solution
57
+ virtual bool newSolution(CbcModel * model,
58
+ double objectiveAtContinuous,
59
+ int numberInfeasibilitiesAtContinuous) ;
60
+ /// This allows method to change behavior
61
+ /// Return true if want tree re-sorted
62
+ virtual bool every1000Nodes(CbcModel * model, int numberNodes);
63
+
64
+ /* if weight == -1.0 then fewest infeasibilities (before solution)
65
+ if -2.0 then do breadth first just for first 1000 nodes
66
+ if -3.0 then depth first before solution
67
+ */
68
+ inline double getWeight() const {
69
+ return weight_;
70
+ }
71
+ inline void setWeight(double weight) {
72
+ weight_ = weight;
73
+ }
74
+ /// Cutoff
75
+ inline double getCutoff() const {
76
+ return cutoff_;
77
+ }
78
+ inline void setCutoff(double cutoff) {
79
+ cutoff_ = cutoff;
80
+ }
81
+ /// Best possible solution
82
+ inline double getBestPossible() const {
83
+ return bestPossible_;
84
+ }
85
+ inline void setBestPossible(double bestPossible) {
86
+ bestPossible_ = bestPossible;
87
+ }
88
+ /// Depth above which want to explore first
89
+ inline void setBreadthDepth(int value) {
90
+ breadthDepth_ = value;
91
+ }
92
+ /// Start dive
93
+ void startDive(CbcModel * model);
94
+ /// Clean up diving (i.e. switch off or prepare)
95
+ void cleanDive();
96
+ protected:
97
+ /// Weight for each infeasibility
98
+ double weight_;
99
+ /// Weight for each infeasibility - computed from solution
100
+ double saveWeight_;
101
+ /// Cutoff
102
+ double cutoff_;
103
+ /// Best possible solution
104
+ double bestPossible_;
105
+ /// Number of solutions
106
+ int numberSolutions_;
107
+ /// Tree size (at last check)
108
+ int treeSize_;
109
+ /// Depth above which want to explore first
110
+ int breadthDepth_;
111
+ /// Chosen node from estimated (-1 is off)
112
+ int startNodeNumber_;
113
+ /// Node number when dive started
114
+ int afterNodeNumber_;
115
+ /// Indicates doing setup for diving
116
+ bool setupForDiving_ ;
117
+ };
118
+
119
+ #endif //CbcCompareDefault_H
120
+
@@ -0,0 +1,47 @@
1
+ // $Id: CbcCompareDepth.hpp 1899 2013-04-09 18:12:08Z stefan $
2
+ // Copyright (C) 2002, 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
+ //Edwin 11/24/09 carved out of CbcCompareActual
7
+
8
+ #ifndef CbcCompareDepth_H
9
+ #define CbcCompareDepth_H
10
+
11
+
12
+ //#############################################################################
13
+ /* These are alternative strategies for node traversal.
14
+ They can take data etc for fine tuning
15
+
16
+ At present the node list is stored as a heap and the "test"
17
+ comparison function returns true if node y is better than node x.
18
+
19
+ */
20
+ #include "CbcNode.hpp"
21
+ #include "CbcCompareBase.hpp"
22
+ #include "CbcCompare.hpp"
23
+ class CbcModel;
24
+ // This is default before first solution
25
+ class CbcCompareDepth : public CbcCompareBase {
26
+ public:
27
+ // Default Constructor
28
+ CbcCompareDepth () ;
29
+
30
+ ~CbcCompareDepth();
31
+ // Copy constructor
32
+ CbcCompareDepth ( const CbcCompareDepth &rhs);
33
+
34
+ // Assignment operator
35
+ CbcCompareDepth & operator=( const CbcCompareDepth& rhs);
36
+
37
+ /// Clone
38
+ virtual CbcCompareBase * clone() const;
39
+ /// Create C++ lines to get to current state
40
+ virtual void generateCpp( FILE * fp);
41
+
42
+ // This returns true if the depth of node y is greater than depth of node x
43
+ virtual bool test (CbcNode * x, CbcNode * y);
44
+ };
45
+
46
+ #endif
47
+
@@ -0,0 +1,48 @@
1
+ // $Id: CbcCompareEstimate.hpp 1899 2013-04-09 18:12:08Z stefan $
2
+ // Copyright (C) 2002, 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
+ //Edwin 11/25/09 carved out of CbcCompareActual
7
+
8
+ #ifndef CbcCompareEstimate_H
9
+ #define CbcCompareEstimate_H
10
+
11
+
12
+ //#############################################################################
13
+ /* These are alternative strategies for node traversal.
14
+ They can take data etc for fine tuning
15
+
16
+ At present the node list is stored as a heap and the "test"
17
+ comparison function returns true if node y is better than node x.
18
+
19
+ */
20
+ #include "CbcNode.hpp"
21
+ #include "CbcCompareBase.hpp"
22
+ #include "CbcCompare.hpp"
23
+ class CbcModel;
24
+
25
+ /* This is when rounding is being done
26
+ */
27
+ class CbcCompareEstimate : public CbcCompareBase {
28
+ public:
29
+ // Default Constructor
30
+ CbcCompareEstimate () ;
31
+ ~CbcCompareEstimate() ;
32
+ // Copy constructor
33
+ CbcCompareEstimate ( const CbcCompareEstimate &rhs);
34
+
35
+ // Assignment operator
36
+ CbcCompareEstimate & operator=( const CbcCompareEstimate& rhs);
37
+
38
+ /// Clone
39
+ virtual CbcCompareBase * clone() const;
40
+ /// Create C++ lines to get to current state
41
+ virtual void generateCpp( FILE * fp);
42
+
43
+ virtual bool test (CbcNode * x, CbcNode * y) ;
44
+ };
45
+
46
+
47
+ #endif //CbcCompareEstimate_H
48
+
@@ -0,0 +1,49 @@
1
+ // $Id: CbcCompareObjective.hpp 1899 2013-04-09 18:12:08Z stefan $
2
+ // Copyright (C) 2002, 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
+ //Edwin 11/25/09 carved out of CbcCompareActual
7
+
8
+ #ifndef CbcCompareObjective_H
9
+ #define CbcCompareObjective_H
10
+
11
+
12
+ //#############################################################################
13
+ /* These are alternative strategies for node traversal.
14
+ They can take data etc for fine tuning
15
+
16
+ At present the node list is stored as a heap and the "test"
17
+ comparison function returns true if node y is better than node x.
18
+
19
+ */
20
+ #include "CbcNode.hpp"
21
+ #include "CbcCompareBase.hpp"
22
+ #include "CbcCompare.hpp"
23
+
24
+ class CbcModel;
25
+
26
+ class CbcCompareObjective : public CbcCompareBase {
27
+ public:
28
+ // Default Constructor
29
+ CbcCompareObjective ();
30
+
31
+ virtual ~CbcCompareObjective();
32
+ // Copy constructor
33
+ CbcCompareObjective ( const CbcCompareObjective &rhs);
34
+
35
+ // Assignment operator
36
+ CbcCompareObjective & operator=( const CbcCompareObjective& rhs);
37
+
38
+ /// Clone
39
+ virtual CbcCompareBase * clone() const;
40
+ /// Create C++ lines to get to current state
41
+ virtual void generateCpp( FILE * fp);
42
+
43
+ /* This returns true if objective value of node y is less than
44
+ objective value of node x */
45
+ virtual bool test (CbcNode * x, CbcNode * y);
46
+ };
47
+
48
+ #endif //CbcCompareObjective_H
49
+
@@ -0,0 +1,14 @@
1
+ /* src/config_cbc.h. Generated by configure. */
2
+ /* src/config_cbc.h.in. */
3
+
4
+ /* Version number of project */
5
+ #define CBC_VERSION "2.9.7"
6
+
7
+ /* Major Version number of project */
8
+ #define CBC_VERSION_MAJOR 2
9
+
10
+ /* Minor Version number of project */
11
+ #define CBC_VERSION_MINOR 9
12
+
13
+ /* Release Version number of project */
14
+ #define CBC_VERSION_RELEASE 7
@@ -0,0 +1,49 @@
1
+ // $Id: CbcConsequence.hpp 1899 2013-04-09 18:12:08Z stefan $
2
+ // Copyright (C) 2002, 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
+ // Edwin 11/12/2009 carved from CbcBranchBase
7
+
8
+ #ifndef CbcConsequence_H
9
+ #define CbcConsequence_H
10
+
11
+ class OsiSolverInterface;
12
+
13
+ /** Abstract base class for consequent bounds.
14
+ When a variable is branched on it normally interacts with other variables by
15
+ means of equations. There are cases where we want to step outside LP and do something
16
+ more directly e.g. fix bounds. This class is for that.
17
+
18
+ At present it need not be virtual as only instance is CbcFixVariable, but ...
19
+
20
+ */
21
+
22
+ class CbcConsequence {
23
+
24
+ public:
25
+
26
+ // Default Constructor
27
+ CbcConsequence ();
28
+
29
+ // Copy constructor
30
+ CbcConsequence ( const CbcConsequence & rhs);
31
+
32
+ // Assignment operator
33
+ CbcConsequence & operator=( const CbcConsequence & rhs);
34
+
35
+ /// Clone
36
+ virtual CbcConsequence * clone() const = 0;
37
+
38
+ /// Destructor
39
+ virtual ~CbcConsequence ();
40
+
41
+ /** Apply to an LP solver. Action depends on state
42
+ */
43
+ virtual void applyToSolver(OsiSolverInterface * solver, int state) const = 0;
44
+
45
+ protected:
46
+ };
47
+
48
+ #endif
49
+
@@ -0,0 +1,168 @@
1
+ /* $Id: CbcCountRowCut.hpp 2094 2014-11-18 11:15:36Z forrest $ */
2
+ // Copyright (C) 2002, 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 CbcCountRowCut_H
7
+ #define CbcCountRowCut_H
8
+
9
+
10
+ class OsiCuts;
11
+ class OsiRowCut;
12
+ class CbcNodeInfo;
13
+
14
+ //#############################################################################
15
+ /** \brief OsiRowCut augmented with bookkeeping
16
+
17
+ CbcCountRowCut is an OsiRowCut object augmented with bookkeeping
18
+ information: a reference count and information that specifies the
19
+ the generator that created the cut and the node to which it's associated.
20
+
21
+ The general principles for handling the reference count are as follows:
22
+ <ul>
23
+ <li> Once it's determined how the node will branch, increment the
24
+ reference count under the assumption that all children will use
25
+ all cuts currently tight at the node and will survive to be placed
26
+ in the search tree.
27
+ <li> As this assumption is proven incorrect (a cut becomes loose, or a
28
+ child is fathomed), decrement the reference count accordingly.
29
+ </ul>
30
+ When all possible uses of a cut have been demonstrated to be unnecessary,
31
+ the reference count (#numberPointingToThis_) will fall to zero. The
32
+ CbcCountRowCut object (and its included OsiRowCut object) are then deleted.
33
+ */
34
+
35
+ class CbcCountRowCut : public OsiRowCut {
36
+
37
+ public:
38
+
39
+ /** @name Constructors & destructors */
40
+ //@{
41
+
42
+ /// Default Constructor
43
+ CbcCountRowCut ();
44
+
45
+ /// `Copy' constructor using an OsiRowCut
46
+ CbcCountRowCut ( const OsiRowCut &);
47
+
48
+ /// `Copy' constructor using an OsiRowCut and an CbcNodeInfo
49
+ CbcCountRowCut(const OsiRowCut &, CbcNodeInfo *, int whichOne,
50
+ int whichGenerator = -1, int numberPointingToThis = 0);
51
+
52
+ /** Destructor
53
+
54
+ \note The destructor will reach out (via #owner_) and NULL the
55
+ reference to the cut in the owner's
56
+ \link CbcNodeInfo::cuts_ cuts_ \endlink list.
57
+ */
58
+ virtual ~CbcCountRowCut ();
59
+ //@}
60
+
61
+ /// Increment the number of references
62
+ void increment(int change = 1);
63
+
64
+ /// Decrement the number of references and return the number left.
65
+ int decrement(int change = 1);
66
+
67
+ /** \brief Set the information associating this cut with a node
68
+
69
+ An CbcNodeInfo object and an index in the cut set of the node.
70
+ For locally valid cuts, the node will be the search tree node where the
71
+ cut was generated. For globally valid cuts, it's the node where the cut
72
+ was activated.
73
+ */
74
+ void setInfo(CbcNodeInfo *, int whichOne);
75
+
76
+ /// Number of other CbcNodeInfo objects pointing to this row cut
77
+ inline int numberPointingToThis() {
78
+ return numberPointingToThis_;
79
+ }
80
+
81
+ /// Which generator for cuts - as user order
82
+ inline int whichCutGenerator() const {
83
+ return whichCutGenerator_;
84
+ }
85
+
86
+ /// Returns true if can drop cut if slack basic
87
+ bool canDropCut(const OsiSolverInterface * solver, int row) const;
88
+
89
+ #ifdef CHECK_CUT_COUNTS
90
+ // Just for printing sanity checks
91
+ int tempNumber_;
92
+ #endif
93
+
94
+ private:
95
+
96
+ /// Standard copy is illegal (reference counts would be incorrect)
97
+ CbcCountRowCut(const CbcCountRowCut &);
98
+
99
+ /// Standard assignment is illegal (reference counts would be incorrect)
100
+ CbcCountRowCut & operator=(const CbcCountRowCut& rhs);
101
+
102
+ /// Backward pointer to owning CbcNodeInfo
103
+ CbcNodeInfo * owner_;
104
+
105
+ /// Index of cut in owner's cut set
106
+ /// (\link CbcNodeInfo::cuts_ cuts_ \endlink).
107
+ int ownerCut_;
108
+
109
+ /// Number of other CbcNodeInfo objects pointing to this cut
110
+ int numberPointingToThis_;
111
+
112
+ /** Which generator created this cut
113
+ (add 10000 if globally valid)
114
+ if -1 then from global cut pool
115
+ -2 cut branch
116
+ -3 unknown
117
+ */
118
+ int whichCutGenerator_;
119
+
120
+ };
121
+ /**
122
+ Really for Conflict cuts to -
123
+ a) stop duplicates
124
+ b) allow half baked cuts
125
+ The whichRow_ field in OsiRowCut2 is used for a type
126
+ 0 - normal
127
+ 1 - processed cut (conflict)
128
+ 2 - unprocessed cut i.e. dual ray computation
129
+ */
130
+ // for hashing
131
+ typedef struct {
132
+ int index, next;
133
+ } CoinHashLink;
134
+ class CbcRowCuts {
135
+ public:
136
+
137
+ CbcRowCuts(int initialMaxSize=0, int hashMultiplier=4 );
138
+ ~CbcRowCuts();
139
+ CbcRowCuts(const CbcRowCuts& rhs);
140
+ CbcRowCuts& operator=(const CbcRowCuts& rhs);
141
+ inline OsiRowCut2 * cut(int sequence) const
142
+ { return rowCut_[sequence];}
143
+ inline int numberCuts() const
144
+ { return numberCuts_;}
145
+ inline int sizeRowCuts() const
146
+ { return numberCuts_;}
147
+ inline OsiRowCut * rowCutPtr(int sequence)
148
+ { return rowCut_[sequence];}
149
+ void eraseRowCut(int sequence);
150
+ // Return 0 if added, 1 if not, -1 if not added because of space
151
+ int addCutIfNotDuplicate(const OsiRowCut & cut,int whichType=0);
152
+ // Return 0 if added, 1 if not, -1 if not added because of space
153
+ int addCutIfNotDuplicateWhenGreedy(const OsiRowCut & cut,int whichType=0);
154
+ // Add in cuts as normal cuts (and delete)
155
+ void addCuts(OsiCuts & cs);
156
+ // Truncate
157
+ void truncate(int numberAfter);
158
+ private:
159
+ OsiRowCut2 ** rowCut_;
160
+ /// Hash table
161
+ CoinHashLink *hash_;
162
+ int size_;
163
+ int hashMultiplier_;
164
+ int numberCuts_;
165
+ int lastHash_;
166
+ };
167
+ #endif
168
+