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,83 @@
1
+ // $Id: CbcSubProblem.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/10/2009-- carved out of CbcBranchActual
7
+
8
+ #ifndef CbcSubProblem_H
9
+ #define CbcSubProblem_H
10
+
11
+ #ifdef COIN_HAS_CLP
12
+ #include "ClpSimplex.hpp"
13
+ #include "ClpNode.hpp"
14
+
15
+ /** Defines a general subproblem
16
+ Basis will be made more compact later
17
+ */
18
+ class CoinWarmStartDiff;
19
+ class CbcSubProblem {
20
+
21
+ public:
22
+
23
+ /// Default constructor
24
+ CbcSubProblem ();
25
+
26
+ /// Constructor from model
27
+ CbcSubProblem (const OsiSolverInterface * solver,
28
+ const double * lowerBefore,
29
+ const double * upperBefore,
30
+ const unsigned char * status,
31
+ int depth);
32
+
33
+ /// Copy constructor
34
+ CbcSubProblem ( const CbcSubProblem &);
35
+
36
+ /// Assignment operator
37
+ CbcSubProblem & operator= (const CbcSubProblem& rhs);
38
+
39
+ /// Destructor
40
+ virtual ~CbcSubProblem ();
41
+
42
+ /// Take over
43
+ void takeOver ( CbcSubProblem &, bool cleanup);
44
+ /// Apply subproblem (1=bounds, 2=basis, 3=both)
45
+ void apply(OsiSolverInterface * model, int what = 3) const;
46
+
47
+ public:
48
+ /// Value of objective
49
+ double objectiveValue_;
50
+ /// Sum of infeasibilities
51
+ double sumInfeasibilities_;
52
+ /// Branch value
53
+ double branchValue_;
54
+ /// Dj on branching variable at end
55
+ double djValue_;
56
+ /** Which variable (top bit if upper bound changing)
57
+ next bit if changing on down branch only */
58
+ int * variables_;
59
+ /// New bound
60
+ double * newBounds_;
61
+ /// Status
62
+ mutable CoinWarmStartBasis * status_;
63
+ /// Depth
64
+ int depth_;
65
+ /// Number of Extra bound changes
66
+ int numberChangedBounds_;
67
+ /// Number of infeasibilities
68
+ int numberInfeasibilities_;
69
+ /** Status 1 bit going up on first, 2 bit set first branch infeasible on second, 4 bit redundant branch,
70
+ bits after 256 give reason for stopping (just last node)
71
+ 0 - solution
72
+ 1 - infeasible
73
+ 2 - maximum depth
74
+ >2 - error or max time or something
75
+ */
76
+ int problemStatus_;
77
+ /// Variable branched on
78
+ int branchVariable_;
79
+ };
80
+
81
+ #endif //COIN_HAS_CLP
82
+ #endif
83
+
@@ -0,0 +1,490 @@
1
+ /* $Id: CbcTree.hpp 1943 2013-07-21 09:05:45Z forrest $ */
2
+ // Copyright (C) 2004, 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 CbcTree_H
7
+ #define CbcTree_H
8
+
9
+ #include <vector>
10
+ #include <algorithm>
11
+ #include <cmath>
12
+
13
+ #include "CoinHelperFunctions.hpp"
14
+ #include "CbcCompare.hpp"
15
+
16
+ /*! \brief Using MS heap implementation
17
+
18
+ It's unclear if this is needed any longer, or even if it should be allowed.
19
+ Cbc occasionally tries to do things to the tree (typically tweaking the
20
+ comparison predicate) that can cause a violation of the heap property (parent better
21
+ than either child). In a debug build, Microsoft's heap implementation does checks that
22
+ detect this and fail. This symbol switched to an alternate implementation of CbcTree,
23
+ and there are clearly differences, but no explanation as to why or what for.
24
+
25
+ As of 100921, the code is cleaned up to make it through `cbc -unitTest' without
26
+ triggering `Invalid heap' in an MSVS debug build. The method validateHeap() can
27
+ be used for debugging if this turns up again.
28
+ */
29
+ //#define CBC_DUBIOUS_HEAP
30
+ #if defined(_MSC_VER) || defined(__MNO_CYGWIN)
31
+ //#define CBC_DUBIOUS_HEAP
32
+ #endif
33
+ #if 1 //ndef CBC_DUBIOUS_HEAP
34
+
35
+ /*! \brief Controls search tree debugging
36
+
37
+ In order to have validateHeap() available, set CBC_DEBUG_HEAP
38
+ to 1 or higher.
39
+
40
+ - 1 calls validateHeap() after each change to the heap
41
+ - 2 will print a line for major operations (clean, set comparison, etc.)
42
+ - 3 will print information about each push and pop
43
+
44
+ #define CBC_DEBUG_HEAP 1
45
+ */
46
+
47
+
48
+ /*! \class CbcTree
49
+ \brief Implementation of the live set as a heap.
50
+
51
+ This class is used to hold the set of live nodes in the search tree.
52
+ */
53
+ class CbcTree {
54
+
55
+ public:
56
+ /*! \name Constructors and related */
57
+ //@{
58
+ /// Default Constructor
59
+ CbcTree ();
60
+
61
+ /// Copy constructor
62
+ CbcTree (const CbcTree &rhs);
63
+
64
+ /// = operator
65
+ CbcTree & operator=(const CbcTree &rhs);
66
+
67
+ /// Destructor
68
+ virtual ~CbcTree();
69
+
70
+ /// Clone
71
+ virtual CbcTree * clone() const;
72
+
73
+ /// Create C++ lines to get to current state
74
+ virtual void generateCpp(FILE *) {}
75
+ //@}
76
+
77
+ /*! \name Heap access and maintenance methods */
78
+ //@{
79
+ /// Set comparison function and resort heap
80
+ void setComparison(CbcCompareBase &compare);
81
+
82
+ /// Return the top node of the heap
83
+ virtual CbcNode * top() const;
84
+
85
+ /// Add a node to the heap
86
+ virtual void push(CbcNode *x);
87
+
88
+ /// Remove the top node from the heap
89
+ virtual void pop() ;
90
+
91
+ /*! \brief Gets best node and takes off heap
92
+
93
+ Before returning the node from the top of the heap, the node
94
+ is offered an opportunity to reevaluate itself. Callers should
95
+ be prepared to check that the node returned is suitable for use.
96
+ */
97
+ virtual CbcNode * bestNode(double cutoff);
98
+
99
+ /*! \brief Rebuild the heap */
100
+ virtual void rebuild() ;
101
+ //@}
102
+
103
+ /*! \name Direct node access methods */
104
+ //@{
105
+ /// Test for an empty tree
106
+ virtual bool empty() ;
107
+
108
+ /// Return size
109
+ virtual int size() const { return static_cast<int>(nodes_.size()); }
110
+
111
+ /// Return a node pointer
112
+ inline CbcNode * operator [] (int i) const { return nodes_[i]; }
113
+
114
+ /// Return a node pointer
115
+ inline CbcNode * nodePointer (int i) const { return nodes_[i]; }
116
+ void realpop();
117
+ /** After changing data in the top node, fix the heap */
118
+ void fixTop();
119
+ void realpush(CbcNode * node);
120
+ //@}
121
+
122
+ /*! \name Search tree maintenance */
123
+ //@{
124
+ /*! \brief Prune the tree using an objective function cutoff
125
+
126
+ This routine removes all nodes with objective worse than the
127
+ specified cutoff value. It also sets bestPossibleObjective to
128
+ the best objective over remaining nodes.
129
+ */
130
+ virtual void cleanTree(CbcModel * model, double cutoff, double & bestPossibleObjective);
131
+
132
+ /// Get best on list using alternate method
133
+ CbcNode * bestAlternate();
134
+
135
+ /// We may have got an intelligent tree so give it one more chance
136
+ virtual void endSearch() {}
137
+
138
+ /// Get best possible objective function in the tree
139
+ virtual double getBestPossibleObjective();
140
+
141
+ /// Reset maximum node number
142
+ inline void resetNodeNumbers() { maximumNodeNumber_ = 0; }
143
+
144
+ /// Get maximum node number
145
+ inline int maximumNodeNumber() const { return maximumNodeNumber_; }
146
+
147
+ /// Set number of branches
148
+ inline void setNumberBranching(int value) { numberBranching_ = value; }
149
+
150
+ /// Get number of branches
151
+ inline int getNumberBranching() const { return numberBranching_; }
152
+
153
+ /// Set maximum branches
154
+ inline void setMaximumBranching(int value) { maximumBranching_ = value; }
155
+
156
+ /// Get maximum branches
157
+ inline int getMaximumBranching() const { return maximumBranching_; }
158
+
159
+ /// Get branched variables
160
+ inline unsigned int * branched() const { return branched_; }
161
+
162
+ /// Get bounds
163
+ inline int * newBounds() const { return newBound_; }
164
+
165
+ /// Last objective in branch-and-cut search tree
166
+ inline double lastObjective() const {
167
+ return lastObjective_;
168
+ }
169
+ /// Last depth in branch-and-cut search tree
170
+ inline int lastDepth() const {
171
+ return lastDepth_;
172
+ }
173
+ /// Last number of objects unsatisfied
174
+ inline int lastUnsatisfied() const {
175
+ return lastUnsatisfied_;
176
+ }
177
+ /// Adds branching information to complete state
178
+ void addBranchingInformation(const CbcModel * model, const CbcNodeInfo * nodeInfo,
179
+ const double * currentLower,
180
+ const double * currentUpper);
181
+ /// Increase space for data
182
+ void increaseSpace();
183
+ //@}
184
+
185
+ # if CBC_DEBUG_HEAP > 0
186
+ /*! \name Debugging methods */
187
+ //@{
188
+ /*! \brief Check that the heap property is satisfied. */
189
+ void validateHeap() ;
190
+ //@}
191
+ # endif
192
+
193
+ protected:
194
+ /// Storage vector for the heap
195
+ std::vector <CbcNode *> nodes_;
196
+ /// Sort predicate for heap ordering.
197
+ CbcCompare comparison_;
198
+ /// Maximum "node" number so far to split ties
199
+ int maximumNodeNumber_;
200
+ /// Size of variable list
201
+ int numberBranching_;
202
+ /// Maximum size of variable list
203
+ int maximumBranching_;
204
+ /// Objective of last node pushed on tree
205
+ double lastObjective_;
206
+ /// Depth of last node pushed on tree
207
+ int lastDepth_;
208
+ /// Number unsatisfied of last node pushed on tree
209
+ int lastUnsatisfied_;
210
+ /** Integer variables branched or bounded
211
+ top bit set if new upper bound
212
+ next bit set if a branch
213
+ */
214
+ unsigned int * branched_;
215
+ /// New bound
216
+ int * newBound_;
217
+ };
218
+
219
+ #ifdef JJF_ZERO // not used
220
+ /*! \brief Implementation of live set as a managed array.
221
+
222
+ This class is used to hold the set of live nodes in the search tree.
223
+ */
224
+ class CbcTreeArray : public CbcTree {
225
+
226
+ public:
227
+
228
+ // Default Constructor
229
+ CbcTreeArray ();
230
+
231
+ // Copy constructor
232
+ CbcTreeArray ( const CbcTreeArray & rhs);
233
+ // = operator
234
+ CbcTreeArray & operator=(const CbcTreeArray & rhs);
235
+
236
+ virtual ~CbcTreeArray();
237
+
238
+ /// Clone
239
+ virtual CbcTree * clone() const;
240
+ /// Create C++ lines to get to current state
241
+ virtual void generateCpp( FILE * ) {}
242
+
243
+ /*! \name Heap access and maintenance methods */
244
+ //@{
245
+
246
+ /// Set comparison function and resort heap
247
+ void setComparison(CbcCompareBase &compare);
248
+
249
+ /// Add a node to the heap
250
+ virtual void push(CbcNode * x);
251
+
252
+ /// Gets best node and takes off heap
253
+ virtual CbcNode * bestNode(double cutoff);
254
+
255
+ //@}
256
+ /*! \name vector methods */
257
+ //@{
258
+
259
+ /// Test if empty *** note may be overridden
260
+ virtual bool empty() ;
261
+
262
+ //@}
263
+
264
+ /*! \name Search tree maintenance */
265
+ //@{
266
+
267
+ /*! \brief Prune the tree using an objective function cutoff
268
+
269
+ This routine removes all nodes with objective worst than the
270
+ specified cutoff value.
271
+ It also sets bestPossibleObjective to best
272
+ of all on tree before deleting.
273
+ */
274
+
275
+ void cleanTree(CbcModel * model, double cutoff, double & bestPossibleObjective);
276
+ /// Get best possible objective function in the tree
277
+ virtual double getBestPossibleObjective();
278
+ //@}
279
+ protected:
280
+ /// Returns
281
+ /// Last node
282
+ CbcNode * lastNode_;
283
+ /// Last node popped
284
+ CbcNode * lastNodePopped_;
285
+ /// Not used yet
286
+ int switches_;
287
+
288
+ };
289
+
290
+ /// New style
291
+ #include "CoinSearchTree.hpp"
292
+ /*! \class tree
293
+ \brief Implementation of live set as a heap.
294
+
295
+ This class is used to hold the set of live nodes in the search tree.
296
+ */
297
+
298
+ class CbcNewTree : public CbcTree, public CoinSearchTreeManager {
299
+
300
+ public:
301
+
302
+ // Default Constructor
303
+ CbcNewTree ();
304
+
305
+ // Copy constructor
306
+ CbcNewTree ( const CbcNewTree & rhs);
307
+ // = operator
308
+ CbcNewTree & operator=(const CbcNewTree & rhs);
309
+
310
+ virtual ~CbcNewTree();
311
+
312
+ /// Clone
313
+ virtual CbcNewTree * clone() const;
314
+ /// Create C++ lines to get to current state
315
+ virtual void generateCpp( FILE * ) {}
316
+
317
+ /*! \name Heap access and maintenance methods */
318
+ //@{
319
+
320
+ /// Set comparison function and resort heap
321
+ void setComparison(CbcCompareBase &compare);
322
+
323
+ /// Return the top node of the heap
324
+ virtual CbcNode * top() const;
325
+
326
+ /// Add a node to the heap
327
+ virtual void push(CbcNode * x);
328
+
329
+ /// Remove the top node from the heap
330
+ virtual void pop() ;
331
+ /// Gets best node and takes off heap
332
+ virtual CbcNode * bestNode(double cutoff);
333
+
334
+ //@}
335
+ /*! \name vector methods */
336
+ //@{
337
+
338
+ /// Test if empty *** note may be overridden
339
+ virtual bool empty() ;
340
+
341
+ /// Return size
342
+ inline int size() const {
343
+ return nodes_.size();
344
+ }
345
+
346
+ /// [] operator
347
+ inline CbcNode * operator [] (int i) const {
348
+ return nodes_[i];
349
+ }
350
+
351
+ /// Return a node pointer
352
+ inline CbcNode * nodePointer (int i) const {
353
+ return nodes_[i];
354
+ }
355
+
356
+ //@}
357
+
358
+ /*! \name Search tree maintenance */
359
+ //@{
360
+
361
+ /*! \brief Prune the tree using an objective function cutoff
362
+
363
+ This routine removes all nodes with objective worst than the
364
+ specified cutoff value.
365
+ It also sets bestPossibleObjective to best
366
+ of all on tree before deleting.
367
+ */
368
+
369
+ void cleanTree(CbcModel * model, double cutoff, double & bestPossibleObjective);
370
+
371
+ /// Get best on list using alternate method
372
+ CbcNode * bestAlternate();
373
+
374
+ /// We may have got an intelligent tree so give it one more chance
375
+ virtual void endSearch() {}
376
+ //@}
377
+ protected:
378
+
379
+
380
+ };
381
+ #endif
382
+ #else
383
+ /* CBC_DUBIOUS_HEAP is defined
384
+
385
+ See note at top of file. This code is highly suspect.
386
+ -- lh, 100921 --
387
+ */
388
+ class CbcTree {
389
+
390
+ public:
391
+
392
+ // Default Constructor
393
+ CbcTree ();
394
+
395
+ // Copy constructor
396
+ CbcTree ( const CbcTree & rhs);
397
+ // = operator
398
+ CbcTree & operator=(const CbcTree & rhs);
399
+
400
+ virtual ~CbcTree();
401
+
402
+ /// Clone
403
+ virtual CbcTree * clone() const;
404
+ /// Create C++ lines to get to current state
405
+ virtual void generateCpp( FILE * fp) {}
406
+
407
+ /*! \name Heap access and maintenance methods */
408
+ //@{
409
+
410
+ /// Set comparison function and resort heap
411
+ void setComparison(CbcCompareBase &compare);
412
+
413
+ /// Return the top node of the heap
414
+ virtual CbcNode * top() const;
415
+
416
+ /// Add a node to the heap
417
+ virtual void push(CbcNode * x);
418
+
419
+ /// Remove the top node from the heap
420
+ virtual void pop() ;
421
+ /// Gets best node and takes off heap
422
+ virtual CbcNode * bestNode(double cutoff);
423
+
424
+ //@}
425
+ /*! \name vector methods */
426
+ //@{
427
+
428
+ /// Test if empty *** note may be overridden
429
+ //virtual bool empty() ;
430
+
431
+ /// Return size
432
+ inline int size() const {
433
+ return nodes_.size();
434
+ }
435
+
436
+ /// [] operator
437
+ inline CbcNode * operator [] (int i) const {
438
+ return nodes_[i];
439
+ }
440
+
441
+ /// Return a node pointer
442
+ inline CbcNode * nodePointer (int i) const {
443
+ return nodes_[i];
444
+ }
445
+
446
+ virtual bool empty();
447
+ //inline int size() const { return size_; }
448
+ void realpop();
449
+ /** After changing data in the top node, fix the heap */
450
+ void fixTop();
451
+ void realpush(CbcNode * node);
452
+ //@}
453
+
454
+ /*! \name Search tree maintenance */
455
+ //@{
456
+
457
+ /*! \brief Prune the tree using an objective function cutoff
458
+
459
+ This routine removes all nodes with objective worst than the
460
+ specified cutoff value.
461
+ It also sets bestPossibleObjective to best
462
+ of all on tree before deleting.
463
+ */
464
+
465
+ void cleanTree(CbcModel * model, double cutoff, double & bestPossibleObjective);
466
+
467
+ /// Get best on list using alternate method
468
+ CbcNode * bestAlternate();
469
+
470
+ /// We may have got an intelligent tree so give it one more chance
471
+ virtual void endSearch() {}
472
+ /// Reset maximum node number
473
+ inline void resetNodeNumbers() {
474
+ maximumNodeNumber_ = 0;
475
+ }
476
+
477
+ /// Get maximum node number
478
+ inline int maximumNodeNumber() const { return maximumNodeNumber_; }
479
+ //@}
480
+ protected:
481
+ std::vector <CbcNode *> nodes_;
482
+ CbcCompare comparison_; ///> Sort function for heap ordering.
483
+ /// Maximum "node" number so far to split ties
484
+ int maximumNodeNumber_;
485
+
486
+
487
+ };
488
+ #endif
489
+ #endif
490
+