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,236 @@
1
+ // $Id: CbcBranchingObject.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 CbcBranchingObject_H
9
+ #define CbcBranchingObject_H
10
+
11
+ #include <string>
12
+ #include <vector>
13
+ #include "CbcBranchBase.hpp"
14
+ #include "OsiBranchingObject.hpp"
15
+
16
+
17
+ // The types of objects that will be derived from this class.
18
+ enum CbcBranchObjType
19
+ {
20
+ SimpleIntegerBranchObj = 100,
21
+ SimpleIntegerDynamicPseudoCostBranchObj = 101,
22
+ CliqueBranchObj = 102,
23
+ LongCliqueBranchObj = 103,
24
+ SoSBranchObj = 104,
25
+ NWayBranchObj = 105,
26
+ FollowOnBranchObj = 106,
27
+ DummyBranchObj = 107,
28
+ GeneralDepthBranchObj = 108,
29
+ OneGeneralBranchingObj = 110,
30
+ CutBranchingObj = 200,
31
+ LotsizeBranchObj = 300,
32
+ DynamicPseudoCostBranchObj = 400
33
+ };
34
+
35
+ /** \brief Abstract branching object base class
36
+ Now just difference with OsiBranchingObject
37
+
38
+ In the abstract, an CbcBranchingObject contains instructions for how to
39
+ branch. We want an abstract class so that we can describe how to branch on
40
+ simple objects (<i>e.g.</i>, integers) and more exotic objects
41
+ (<i>e.g.</i>, cliques or hyperplanes).
42
+
43
+ The #branch() method is the crucial routine: it is expected to be able to
44
+ step through a set of branch arms, executing the actions required to create
45
+ each subproblem in turn. The base class is primarily virtual to allow for
46
+ a wide range of problem modifications.
47
+
48
+ See CbcObject for an overview of the three classes (CbcObject,
49
+ CbcBranchingObject, and CbcBranchDecision) which make up cbc's branching
50
+ model.
51
+ */
52
+
53
+ class CbcBranchingObject : public OsiBranchingObject {
54
+
55
+ public:
56
+
57
+ /// Default Constructor
58
+ CbcBranchingObject ();
59
+
60
+ /// Constructor
61
+ CbcBranchingObject (CbcModel * model, int variable, int way , double value);
62
+
63
+ /// Copy constructor
64
+ CbcBranchingObject ( const CbcBranchingObject &);
65
+
66
+ /// Assignment operator
67
+ CbcBranchingObject & operator=( const CbcBranchingObject& rhs);
68
+
69
+ /// Clone
70
+ virtual CbcBranchingObject * clone() const = 0;
71
+
72
+ /// Destructor
73
+ virtual ~CbcBranchingObject ();
74
+
75
+ /** Some branchingObjects may claim to be able to skip
76
+ strong branching. If so they have to fill in CbcStrongInfo.
77
+ The object mention in incoming CbcStrongInfo must match.
78
+ Returns nonzero if skip is wanted */
79
+ virtual int fillStrongInfo( CbcStrongInfo & ) {
80
+ return 0;
81
+ }
82
+ /// Reset number of branches left to original
83
+ inline void resetNumberBranchesLeft() {
84
+ branchIndex_ = 0;
85
+ }
86
+ /// Set number of branches to do
87
+ inline void setNumberBranches(int value) {
88
+ branchIndex_ = 0;
89
+ numberBranches_ = value;
90
+ }
91
+
92
+ /** \brief Execute the actions required to branch, as specified by the
93
+ current state of the branching object, and advance the object's
94
+ state. Mainly for diagnostics, whether it is true branch or
95
+ strong branching is also passed.
96
+ Returns change in guessed objective on next branch
97
+ */
98
+ virtual double branch() = 0;
99
+ /** \brief Execute the actions required to branch, as specified by the
100
+ current state of the branching object, and advance the object's
101
+ state. Mainly for diagnostics, whether it is true branch or
102
+ strong branching is also passed.
103
+ Returns change in guessed objective on next branch
104
+ */
105
+ virtual double branch(OsiSolverInterface * ) {
106
+ return branch();
107
+ }
108
+ /** Update bounds in solver as in 'branch' and update given bounds.
109
+ branchState is -1 for 'down' +1 for 'up' */
110
+ virtual void fix(OsiSolverInterface * ,
111
+ double * , double * ,
112
+ int ) const {}
113
+
114
+ /** Change (tighten) bounds in object to reflect bounds in solver.
115
+ Return true if now fixed */
116
+ virtual bool tighten(OsiSolverInterface * ) {return false;}
117
+
118
+ /** Reset every information so that the branching object appears to point to
119
+ the previous child. This method does not need to modify anything in any
120
+ solver. */
121
+ virtual void previousBranch() {
122
+ assert(branchIndex_ > 0);
123
+ branchIndex_--;
124
+ way_ = -way_;
125
+ }
126
+
127
+ using OsiBranchingObject::print ;
128
+ /** \brief Print something about branch - only if log level high
129
+ */
130
+ virtual void print() const {}
131
+
132
+ /** \brief Index identifying the associated CbcObject within its class.
133
+
134
+ The name is misleading, and typically the index will <i>not</i> refer
135
+ directly to a variable.
136
+ Rather, it identifies an CbcObject within the class of similar
137
+ CbcObjects
138
+
139
+ <i>E.g.</i>, for an CbcSimpleInteger, variable() is the index of the
140
+ integer variable in the set of integer variables (<i>not</i> the index of
141
+ the variable in the set of all variables).
142
+ */
143
+ inline int variable() const {
144
+ return variable_;
145
+ }
146
+
147
+ /** Get the state of the branching object
148
+
149
+ Returns a code indicating the active arm of the branching object.
150
+ The precise meaning is defined in the derived class.
151
+
152
+ \sa #way_
153
+ */
154
+ inline int way() const {
155
+ return way_;
156
+ }
157
+
158
+ /** Set the state of the branching object.
159
+
160
+ See #way()
161
+ */
162
+ inline void way(int way) {
163
+ way_ = way;
164
+ }
165
+
166
+ /// update model
167
+ inline void setModel(CbcModel * model) {
168
+ model_ = model;
169
+ }
170
+ /// Return model
171
+ inline CbcModel * model() const {
172
+ return model_;
173
+ }
174
+
175
+ /// Return pointer back to object which created
176
+ inline CbcObject * object() const {
177
+ return originalCbcObject_;
178
+ }
179
+ /// Set pointer back to object which created
180
+ inline void setOriginalObject(CbcObject * object) {
181
+ originalCbcObject_ = object;
182
+ }
183
+
184
+ // Methods used in heuristics
185
+
186
+ /** Return the type (an integer identifier) of \c this.
187
+ See definition of CbcBranchObjType above for possibilities
188
+ */
189
+
190
+ virtual CbcBranchObjType type() const = 0;
191
+
192
+ /** Compare the original object of \c this with the original object of \c
193
+ brObj. Assumes that there is an ordering of the original objects.
194
+ This method should be invoked only if \c this and brObj are of the same
195
+ type.
196
+ Return negative/0/positive depending on whether \c this is
197
+ smaller/same/larger than the argument.
198
+ */
199
+ virtual int compareOriginalObject(const CbcBranchingObject* brObj) const {
200
+ const CbcBranchingObject* br = dynamic_cast<const CbcBranchingObject*>(brObj);
201
+ return variable() - br->variable();
202
+ }
203
+
204
+ /** Compare the \c this with \c brObj. \c this and \c brObj must be of the
205
+ same type and must have the same original object, but they may have
206
+ different feasible regions.
207
+ Return the appropriate CbcRangeCompare value (first argument being the
208
+ sub/superset if that's the case). In case of overlap (and if \c
209
+ replaceIfOverlap is true) replace the current branching object with one
210
+ whose feasible region is the overlap.
211
+ */
212
+ virtual CbcRangeCompare compareBranchingObject
213
+ (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false) = 0;
214
+
215
+ protected:
216
+
217
+ /// The model that owns this branching object
218
+ CbcModel * model_;
219
+ /// Pointer back to object which created
220
+ CbcObject * originalCbcObject_;
221
+
222
+ /// Branching variable (0 is first integer)
223
+ int variable_;
224
+ // was - Way to branch - -1 down (first), 1 up, -2 down (second), 2 up (second)
225
+ /** The state of the branching object.
226
+
227
+ Specifies the active arm of the branching object. Coded as -1 to take
228
+ the `down' arm, +1 for the `up' arm. `Down' and `up' are defined based on
229
+ the natural meaning (floor and ceiling, respectively) for a simple integer.
230
+ The precise meaning is defined in the derived class.
231
+ */
232
+ int way_;
233
+
234
+ };
235
+ #endif
236
+
@@ -0,0 +1,303 @@
1
+ // $Id: CbcClique.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/9/2009-- carved out of CbcBranchActual
7
+
8
+ #ifndef CbcClique_H
9
+ #define CbcClique_H
10
+
11
+ /** \brief Branching object for cliques
12
+
13
+ A clique is defined to be a set of binary variables where fixing any one
14
+ variable to its `strong' value fixes all other variables. An example is the
15
+ most common SOS1 construction: a set of binary variables x_j s.t. SUM{j}
16
+ x_j = 1. Setting any one variable to 1 forces all other variables to 0.
17
+ (See comments for CbcSOS below.)
18
+
19
+ Other configurations are possible, however: Consider x1-x2+x3 <= 0.
20
+ Setting x1 (x3) to 1 forces x2 to 1 and x3 (x1) to 0. Setting x2 to 0
21
+ forces x1 and x3 to 0.
22
+
23
+ The proper point of view to take when interpreting CbcClique is
24
+ `generalisation of SOS1 on binary variables.' To get into the proper frame
25
+ of mind, here's an example.
26
+
27
+ Consider the following sequence, where x_j = (1-y_j):
28
+ \verbatim
29
+ x1 + x2 + x3 <= 1 all strong at 1
30
+ x1 - y2 + x3 <= 0 y2 strong at 0; x1, x3 strong at 1
31
+ -y1 - y2 + x3 <= -1 y1, y2 strong at 0, x3 strong at 1
32
+ -y1 - y2 - y3 <= -2 all strong at 0
33
+ \endverbatim
34
+ The first line is a standard SOS1 on binary variables.
35
+
36
+ Variables with +1 coefficients are `SOS-style' and variables with -1
37
+ coefficients are `non-SOS-style'. So #numberNonSOSMembers_ simply tells you
38
+ how many variables have -1 coefficients. The implicit rhs for a clique is
39
+ 1-numberNonSOSMembers_.
40
+ */
41
+ class CbcClique : public CbcObject {
42
+
43
+ public:
44
+
45
+ /// Default Constructor
46
+ CbcClique ();
47
+
48
+ /** Useful constructor (which are integer indices) slack can denote a slack
49
+ in set. If type == NULL then as if 1
50
+ */
51
+ CbcClique (CbcModel * model, int cliqueType, int numberMembers,
52
+ const int * which, const char * type,
53
+ int identifier, int slack = -1);
54
+
55
+ /// Copy constructor
56
+ CbcClique ( const CbcClique &);
57
+
58
+ /// Clone
59
+ virtual CbcObject * clone() const;
60
+
61
+ /// Assignment operator
62
+ CbcClique & operator=( const CbcClique& rhs);
63
+
64
+ /// Destructor
65
+ virtual ~CbcClique ();
66
+
67
+ /// Infeasibility - large is 0.5
68
+ virtual double infeasibility(const OsiBranchingInformation * info,
69
+ int &preferredWay) const;
70
+
71
+ using CbcObject::feasibleRegion ;
72
+ /// This looks at solution and sets bounds to contain solution
73
+ virtual void feasibleRegion();
74
+
75
+ /// Creates a branching object
76
+ virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
77
+ /// Number of members
78
+ inline int numberMembers() const {
79
+ return numberMembers_;
80
+ }
81
+ /** \brief Number of variables with -1 coefficient
82
+
83
+ Number of non-SOS members, i.e., fixing to zero is strong.
84
+ See comments at head of class, and comments for #type_.
85
+ */
86
+ inline int numberNonSOSMembers() const {
87
+ return numberNonSOSMembers_;
88
+ }
89
+
90
+ /// Members (indices in range 0 ... numberIntegers_-1)
91
+ inline const int * members() const {
92
+ return members_;
93
+ }
94
+
95
+ /*! \brief Type of each member, i.e., which way is strong.
96
+
97
+ This also specifies whether a variable has a +1 or -1 coefficient.
98
+ - 0 => -1 coefficient, 0 is strong value
99
+ - 1 => +1 coefficient, 1 is strong value
100
+ If unspecified, all coefficients are assumed to be positive.
101
+
102
+ Indexed as 0 .. numberMembers_-1
103
+ */
104
+ inline char type(int index) const {
105
+ if (type_) return type_[index];
106
+ else return 1;
107
+ }
108
+
109
+ /// Clique type: 0 is <=, 1 is ==
110
+ inline int cliqueType() const {
111
+ return cliqueType_;
112
+ }
113
+ /// Redoes data when sequence numbers change
114
+ virtual void redoSequenceEtc(CbcModel * model, int numberColumns, const int * originalColumns);
115
+
116
+ protected:
117
+ /// data
118
+ /// Number of members
119
+ int numberMembers_;
120
+
121
+ /// Number of Non SOS members i.e. fixing to zero is strong
122
+ int numberNonSOSMembers_;
123
+
124
+ /// Members (indices in range 0 ... numberIntegers_-1)
125
+ int * members_;
126
+
127
+ /** \brief Strong value for each member.
128
+
129
+ This also specifies whether a variable has a +1 or -1 coefficient.
130
+ - 0 => -1 coefficient, 0 is strong value
131
+ - 1 => +1 coefficient, 1 is strong value
132
+ If unspecified, all coefficients are assumed to be positive.
133
+
134
+ Indexed as 0 .. numberMembers_-1
135
+ */
136
+ char * type_;
137
+
138
+ /** \brief Clique type
139
+
140
+ 0 defines a <= relation, 1 an equality. The assumed value of the rhs is
141
+ numberNonSOSMembers_+1. (See comments for the class.)
142
+ */
143
+ int cliqueType_;
144
+
145
+ /** \brief Slack variable for the clique
146
+
147
+ Identifies the slack variable for the clique (typically added to convert
148
+ a <= relation to an equality). Value is sequence number within clique
149
+ menbers.
150
+ */
151
+ int slack_;
152
+ };
153
+
154
+ /** Branching object for unordered cliques
155
+
156
+ Intended for cliques which are long enough to make it worthwhile
157
+ but <= 64 members. There will also be ones for long cliques.
158
+
159
+ Variable_ is the clique id number (redundant, as the object also holds a
160
+ pointer to the clique.
161
+ */
162
+ class CbcCliqueBranchingObject : public CbcBranchingObject {
163
+
164
+ public:
165
+
166
+ // Default Constructor
167
+ CbcCliqueBranchingObject ();
168
+
169
+ // Useful constructor
170
+ CbcCliqueBranchingObject (CbcModel * model, const CbcClique * clique,
171
+ int way,
172
+ int numberOnDownSide, const int * down,
173
+ int numberOnUpSide, const int * up);
174
+
175
+ // Copy constructor
176
+ CbcCliqueBranchingObject ( const CbcCliqueBranchingObject &);
177
+
178
+ // Assignment operator
179
+ CbcCliqueBranchingObject & operator=( const CbcCliqueBranchingObject& rhs);
180
+
181
+ /// Clone
182
+ virtual CbcBranchingObject * clone() const;
183
+
184
+ // Destructor
185
+ virtual ~CbcCliqueBranchingObject ();
186
+
187
+ using CbcBranchingObject::branch ;
188
+ /// Does next branch and updates state
189
+ virtual double branch();
190
+
191
+ using CbcBranchingObject::print ;
192
+ /** \brief Print something about branch - only if log level high
193
+ */
194
+ virtual void print();
195
+
196
+ /** Return the type (an integer identifier) of \c this */
197
+ virtual CbcBranchObjType type() const {
198
+ return CliqueBranchObj;
199
+ }
200
+
201
+ /** Compare the original object of \c this with the original object of \c
202
+ brObj. Assumes that there is an ordering of the original objects.
203
+ This method should be invoked only if \c this and brObj are of the same
204
+ type.
205
+ Return negative/0/positive depending on whether \c this is
206
+ smaller/same/larger than the argument.
207
+ */
208
+ virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
209
+
210
+ /** Compare the \c this with \c brObj. \c this and \c brObj must be of the
211
+ same type and must have the same original object, but they may have
212
+ different feasible regions.
213
+ Return the appropriate CbcRangeCompare value (first argument being the
214
+ sub/superset if that's the case). In case of overlap (and if \c
215
+ replaceIfOverlap is true) replace the current branching object with one
216
+ whose feasible region is the overlap.
217
+ */
218
+ virtual CbcRangeCompare compareBranchingObject
219
+ (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
220
+
221
+ private:
222
+ /// data
223
+ const CbcClique * clique_;
224
+ /// downMask - bit set to fix to weak bounds, not set to leave unfixed
225
+ unsigned int downMask_[2];
226
+ /// upMask - bit set to fix to weak bounds, not set to leave unfixed
227
+ unsigned int upMask_[2];
228
+ };
229
+
230
+ /** Unordered Clique Branching Object class.
231
+ These are for cliques which are > 64 members
232
+ Variable is number of clique.
233
+ */
234
+ class CbcLongCliqueBranchingObject : public CbcBranchingObject {
235
+
236
+ public:
237
+
238
+ // Default Constructor
239
+ CbcLongCliqueBranchingObject ();
240
+
241
+ // Useful constructor
242
+ CbcLongCliqueBranchingObject (CbcModel * model, const CbcClique * clique,
243
+ int way,
244
+ int numberOnDownSide, const int * down,
245
+ int numberOnUpSide, const int * up);
246
+
247
+ // Copy constructor
248
+ CbcLongCliqueBranchingObject ( const CbcLongCliqueBranchingObject &);
249
+
250
+ // Assignment operator
251
+ CbcLongCliqueBranchingObject & operator=( const CbcLongCliqueBranchingObject& rhs);
252
+
253
+ /// Clone
254
+ virtual CbcBranchingObject * clone() const;
255
+
256
+ // Destructor
257
+ virtual ~CbcLongCliqueBranchingObject ();
258
+
259
+ using CbcBranchingObject::branch ;
260
+ /// Does next branch and updates state
261
+ virtual double branch();
262
+
263
+ using CbcBranchingObject::print ;
264
+ /** \brief Print something about branch - only if log level high
265
+ */
266
+ virtual void print();
267
+
268
+ /** Return the type (an integer identifier) of \c this */
269
+ virtual CbcBranchObjType type() const {
270
+ return LongCliqueBranchObj;
271
+ }
272
+
273
+ /** Compare the original object of \c this with the original object of \c
274
+ brObj. Assumes that there is an ordering of the original objects.
275
+ This method should be invoked only if \c this and brObj are of the same
276
+ type.
277
+ Return negative/0/positive depending on whether \c this is
278
+ smaller/same/larger than the argument.
279
+ */
280
+ virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
281
+
282
+ /** Compare the \c this with \c brObj. \c this and \c brObj must be os the
283
+ same type and must have the same original object, but they may have
284
+ different feasible regions.
285
+ Return the appropriate CbcRangeCompare value (first argument being the
286
+ sub/superset if that's the case). In case of overlap (and if \c
287
+ replaceIfOverlap is true) replace the current branching object with one
288
+ whose feasible region is the overlap.
289
+ */
290
+ virtual CbcRangeCompare compareBranchingObject
291
+ (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
292
+
293
+ private:
294
+ /// data
295
+ const CbcClique * clique_;
296
+ /// downMask - bit set to fix to weak bounds, not set to leave unfixed
297
+ unsigned int * downMask_;
298
+ /// upMask - bit set to fix to weak bounds, not set to leave unfixed
299
+ unsigned int * upMask_;
300
+ };
301
+
302
+ #endif
303
+
@@ -0,0 +1,39 @@
1
+ /* $Id: CbcCompare.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
+ #ifndef CbcCompare_H
7
+ #define CbcCompare_H
8
+
9
+ class CbcCompareBase;
10
+
11
+ class CbcCompare {
12
+ public:
13
+ CbcCompareBase * test_;
14
+ // Default Constructor
15
+ CbcCompare () {
16
+ test_ = NULL;
17
+ }
18
+
19
+ virtual ~CbcCompare() {}
20
+
21
+ bool operator() (CbcNode * x, CbcNode * y) {
22
+ return test_->test(x, y);
23
+ }
24
+ bool compareNodes (CbcNode * x, CbcNode * y) {
25
+ return test_->test(x, y);
26
+ }
27
+ /// This is alternate test function
28
+ inline bool alternateTest (CbcNode * x, CbcNode * y) {
29
+ return test_->alternateTest(x, y);
30
+ }
31
+
32
+ /// return comparison object
33
+ inline CbcCompareBase * comparisonObject() const {
34
+ return test_;
35
+ }
36
+ };
37
+
38
+ #endif
39
+
@@ -0,0 +1,14 @@
1
+ /* $Id: CbcCompareActual.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 CbcCompareActual_H
7
+ #define CbcCompareActual_H
8
+ #include "CbcNode.hpp"
9
+ #include "CbcCompareBase.hpp"
10
+ #include "CbcCompare.hpp"
11
+ #include "CbcCompareDepth.hpp"
12
+ #include "CbcCompareDefault.hpp"
13
+ #endif
14
+