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,476 @@
1
+ /* $Id: CoinSnapshot.hpp 1416 2011-04-17 09:57:29Z stefan $ */
2
+ // Copyright (C) 2006, 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 CoinSnapshot_H
7
+ #define CoinSnapshot_H
8
+
9
+ class CoinPackedMatrix;
10
+ #include "CoinTypes.hpp"
11
+
12
+ //#############################################################################
13
+
14
+ /** NON Abstract Base Class for interfacing with cut generators or branching code or ..
15
+ It is designed to be snapshot of a problem at a node in tree
16
+
17
+ The class may or may not own the arrays - see owned_
18
+
19
+
20
+ Querying a problem that has no data associated with it will result in
21
+ zeros for the number of rows and columns, and NULL pointers from
22
+ the methods that return arrays.
23
+ */
24
+
25
+ class CoinSnapshot {
26
+
27
+ public:
28
+
29
+ //---------------------------------------------------------------------------
30
+ /**@name Problem query methods
31
+
32
+ The Matrix pointers may be NULL
33
+ */
34
+ //@{
35
+ /// Get number of columns
36
+ inline int getNumCols() const
37
+ { return numCols_;}
38
+
39
+ /// Get number of rows
40
+ inline int getNumRows() const
41
+ { return numRows_;}
42
+
43
+ /// Get number of nonzero elements
44
+ inline int getNumElements() const
45
+ { return numElements_;}
46
+
47
+ /// Get number of integer variables
48
+ inline int getNumIntegers() const
49
+ { return numIntegers_;}
50
+
51
+ /// Get pointer to array[getNumCols()] of column lower bounds
52
+ inline const double * getColLower() const
53
+ { return colLower_;}
54
+
55
+ /// Get pointer to array[getNumCols()] of column upper bounds
56
+ inline const double * getColUpper() const
57
+ { return colUpper_;}
58
+
59
+ /// Get pointer to array[getNumRows()] of row lower bounds
60
+ inline const double * getRowLower() const
61
+ { return rowLower_;}
62
+
63
+ /// Get pointer to array[getNumRows()] of row upper bounds
64
+ inline const double * getRowUpper() const
65
+ { return rowUpper_;}
66
+
67
+ /** Get pointer to array[getNumRows()] of row right-hand sides
68
+ This gives same results as OsiSolverInterface for useful cases
69
+ If getRowUpper()[i] != infinity then
70
+ getRightHandSide()[i] == getRowUpper()[i]
71
+ else
72
+ getRightHandSide()[i] == getRowLower()[i]
73
+ */
74
+ inline const double * getRightHandSide() const
75
+ { return rightHandSide_;}
76
+
77
+ /// Get pointer to array[getNumCols()] of objective function coefficients
78
+ inline const double * getObjCoefficients() const
79
+ { return objCoefficients_;}
80
+
81
+ /// Get objective function sense (1 for min (default), -1 for max)
82
+ inline double getObjSense() const
83
+ { return objSense_;}
84
+
85
+ /// Return true if variable is continuous
86
+ inline bool isContinuous(int colIndex) const
87
+ { return colType_[colIndex]=='C';}
88
+
89
+ /// Return true if variable is binary
90
+ inline bool isBinary(int colIndex) const
91
+ { return colType_[colIndex]=='B';}
92
+
93
+ /// Return true if column is integer.
94
+ inline bool isInteger(int colIndex) const
95
+ { return colType_[colIndex]=='B'||colType_[colIndex]=='I';}
96
+
97
+ /// Return true if variable is general integer
98
+ inline bool isIntegerNonBinary(int colIndex) const
99
+ { return colType_[colIndex]=='I';}
100
+
101
+ /// Return true if variable is binary and not fixed at either bound
102
+ inline bool isFreeBinary(int colIndex) const
103
+ { return colType_[colIndex]=='B'&&colUpper_[colIndex]>colLower_[colIndex];}
104
+
105
+ /// Get colType array ('B', 'I', or 'C' for Binary, Integer and Continuous)
106
+ inline const char * getColType() const
107
+ { return colType_;}
108
+
109
+ /// Get pointer to row-wise copy of current matrix
110
+ inline const CoinPackedMatrix * getMatrixByRow() const
111
+ { return matrixByRow_;}
112
+
113
+ /// Get pointer to column-wise copy of current matrix
114
+ inline const CoinPackedMatrix * getMatrixByCol() const
115
+ { return matrixByCol_;}
116
+
117
+ /// Get pointer to row-wise copy of "original" matrix
118
+ inline const CoinPackedMatrix * getOriginalMatrixByRow() const
119
+ { return originalMatrixByRow_;}
120
+
121
+ /// Get pointer to column-wise copy of "original" matrix
122
+ inline const CoinPackedMatrix * getOriginalMatrixByCol() const
123
+ { return originalMatrixByCol_;}
124
+ //@}
125
+
126
+ /**@name Solution query methods */
127
+ //@{
128
+ /// Get pointer to array[getNumCols()] of primal variable values
129
+ inline const double * getColSolution() const
130
+ { return colSolution_;}
131
+
132
+ /// Get pointer to array[getNumRows()] of dual variable values
133
+ inline const double * getRowPrice() const
134
+ { return rowPrice_;}
135
+
136
+ /// Get a pointer to array[getNumCols()] of reduced costs
137
+ inline const double * getReducedCost() const
138
+ { return reducedCost_;}
139
+
140
+ /// Get pointer to array[getNumRows()] of row activity levels (constraint matrix times the solution vector).
141
+ inline const double * getRowActivity() const
142
+ { return rowActivity_;}
143
+
144
+ /// Get pointer to array[getNumCols()] of primal variable values which should not be separated (for debug)
145
+ inline const double * getDoNotSeparateThis() const
146
+ { return doNotSeparateThis_;}
147
+ //@}
148
+
149
+ /**@name Other scalar get methods */
150
+ //@{
151
+ /// Get solver's value for infinity
152
+ inline double getInfinity() const
153
+ { return infinity_;}
154
+
155
+ /** Get objective function value - includinbg any offset i.e.
156
+ sum c sub j * x subj - objValue = objOffset */
157
+ inline double getObjValue() const
158
+ { return objValue_;}
159
+
160
+ /// Get objective offset i.e. sum c sub j * x subj -objValue = objOffset
161
+ inline double getObjOffset() const
162
+ { return objOffset_;}
163
+
164
+ /// Get dual tolerance
165
+ inline double getDualTolerance() const
166
+ { return dualTolerance_;}
167
+
168
+ /// Get primal tolerance
169
+ inline double getPrimalTolerance() const
170
+ { return primalTolerance_;}
171
+
172
+ /// Get integer tolerance
173
+ inline double getIntegerTolerance() const
174
+ { return integerTolerance_;}
175
+
176
+ /// Get integer upper bound i.e. best solution * getObjSense
177
+ inline double getIntegerUpperBound() const
178
+ { return integerUpperBound_;}
179
+
180
+ /// Get integer lower bound i.e. best possible solution * getObjSense
181
+ inline double getIntegerLowerBound() const
182
+ { return integerLowerBound_;}
183
+ //@}
184
+
185
+ //---------------------------------------------------------------------------
186
+
187
+ /**@name Method to input a problem */
188
+ //@{
189
+ /** Load in an problem by copying the arguments (the constraints on the
190
+ rows are given by lower and upper bounds). If a pointer is NULL then the
191
+ following values are the default:
192
+ <ul>
193
+ <li> <code>colub</code>: all columns have upper bound infinity
194
+ <li> <code>collb</code>: all columns have lower bound 0
195
+ <li> <code>rowub</code>: all rows have upper bound infinity
196
+ <li> <code>rowlb</code>: all rows have lower bound -infinity
197
+ <li> <code>obj</code>: all variables have 0 objective coefficient
198
+ </ul>
199
+ All solution type arrays will be deleted
200
+ */
201
+ void loadProblem(const CoinPackedMatrix& matrix,
202
+ const double* collb, const double* colub,
203
+ const double* obj,
204
+ const double* rowlb, const double* rowub,
205
+ bool makeRowCopy=false);
206
+
207
+ //@}
208
+
209
+ //---------------------------------------------------------------------------
210
+
211
+ /**@name Methods to set data */
212
+ //@{
213
+ /// Set number of columns
214
+ inline void setNumCols(int value)
215
+ { numCols_ = value;}
216
+
217
+ /// Set number of rows
218
+ inline void setNumRows(int value)
219
+ { numRows_ = value;}
220
+
221
+ /// Set number of nonzero elements
222
+ inline void setNumElements(int value)
223
+ { numElements_ = value;}
224
+
225
+ /// Set number of integer variables
226
+ inline void setNumIntegers(int value)
227
+ { numIntegers_ = value;}
228
+
229
+ /// Set pointer to array[getNumCols()] of column lower bounds
230
+ void setColLower(const double * array, bool copyIn=true);
231
+
232
+ /// Set pointer to array[getNumCols()] of column upper bounds
233
+ void setColUpper(const double * array, bool copyIn=true);
234
+
235
+ /// Set pointer to array[getNumRows()] of row lower bounds
236
+ void setRowLower(const double * array, bool copyIn=true);
237
+
238
+ /// Set pointer to array[getNumRows()] of row upper bounds
239
+ void setRowUpper(const double * array, bool copyIn=true);
240
+
241
+ /** Set pointer to array[getNumRows()] of row right-hand sides
242
+ This gives same results as OsiSolverInterface for useful cases
243
+ If getRowUpper()[i] != infinity then
244
+ getRightHandSide()[i] == getRowUpper()[i]
245
+ else
246
+ getRightHandSide()[i] == getRowLower()[i]
247
+ */
248
+ void setRightHandSide(const double * array, bool copyIn=true);
249
+
250
+ /** Create array[getNumRows()] of row right-hand sides
251
+ using existing information
252
+ This gives same results as OsiSolverInterface for useful cases
253
+ If getRowUpper()[i] != infinity then
254
+ getRightHandSide()[i] == getRowUpper()[i]
255
+ else
256
+ getRightHandSide()[i] == getRowLower()[i]
257
+ */
258
+ void createRightHandSide();
259
+
260
+ /// Set pointer to array[getNumCols()] of objective function coefficients
261
+ void setObjCoefficients(const double * array, bool copyIn=true);
262
+
263
+ /// Set objective function sense (1 for min (default), -1 for max)
264
+ inline void setObjSense(double value)
265
+ { objSense_ = value;}
266
+
267
+ /// Set colType array ('B', 'I', or 'C' for Binary, Integer and Continuous)
268
+ void setColType(const char *array, bool copyIn=true);
269
+
270
+ /// Set pointer to row-wise copy of current matrix
271
+ void setMatrixByRow(const CoinPackedMatrix * matrix, bool copyIn=true);
272
+
273
+ /// Create row-wise copy from MatrixByCol
274
+ void createMatrixByRow();
275
+
276
+ /// Set pointer to column-wise copy of current matrix
277
+ void setMatrixByCol(const CoinPackedMatrix * matrix, bool copyIn=true);
278
+
279
+ /// Set pointer to row-wise copy of "original" matrix
280
+ void setOriginalMatrixByRow(const CoinPackedMatrix * matrix, bool copyIn=true);
281
+
282
+ /// Set pointer to column-wise copy of "original" matrix
283
+ void setOriginalMatrixByCol(const CoinPackedMatrix * matrix, bool copyIn=true);
284
+
285
+ /// Set pointer to array[getNumCols()] of primal variable values
286
+ void setColSolution(const double * array, bool copyIn=true);
287
+
288
+ /// Set pointer to array[getNumRows()] of dual variable values
289
+ void setRowPrice(const double * array, bool copyIn=true);
290
+
291
+ /// Set a pointer to array[getNumCols()] of reduced costs
292
+ void setReducedCost(const double * array, bool copyIn=true);
293
+
294
+ /// Set pointer to array[getNumRows()] of row activity levels (constraint matrix times the solution vector).
295
+ void setRowActivity(const double * array, bool copyIn=true);
296
+
297
+ /// Set pointer to array[getNumCols()] of primal variable values which should not be separated (for debug)
298
+ void setDoNotSeparateThis(const double * array, bool copyIn=true);
299
+
300
+ /// Set solver's value for infinity
301
+ inline void setInfinity(double value)
302
+ { infinity_ = value;}
303
+
304
+ /// Set objective function value (including any rhs offset)
305
+ inline void setObjValue(double value)
306
+ { objValue_ = value;}
307
+
308
+ /// Set objective offset i.e. sum c sub j * x subj -objValue = objOffset
309
+ inline void setObjOffset(double value)
310
+ { objOffset_ = value;}
311
+
312
+ /// Set dual tolerance
313
+ inline void setDualTolerance(double value)
314
+ { dualTolerance_ = value;}
315
+
316
+ /// Set primal tolerance
317
+ inline void setPrimalTolerance(double value)
318
+ { primalTolerance_ = value;}
319
+
320
+ /// Set integer tolerance
321
+ inline void setIntegerTolerance(double value)
322
+ { integerTolerance_ = value;}
323
+
324
+ /// Set integer upper bound i.e. best solution * getObjSense
325
+ inline void setIntegerUpperBound(double value)
326
+ { integerUpperBound_ = value;}
327
+
328
+ /// Set integer lower bound i.e. best possible solution * getObjSense
329
+ inline void setIntegerLowerBound(double value)
330
+ { integerLowerBound_ = value;}
331
+ //@}
332
+
333
+ //---------------------------------------------------------------------------
334
+
335
+ ///@name Constructors and destructors
336
+ //@{
337
+ /// Default Constructor
338
+ CoinSnapshot();
339
+
340
+ /// Copy constructor
341
+ CoinSnapshot(const CoinSnapshot &);
342
+
343
+ /// Assignment operator
344
+ CoinSnapshot & operator=(const CoinSnapshot& rhs);
345
+
346
+ /// Destructor
347
+ virtual ~CoinSnapshot ();
348
+
349
+ //@}
350
+
351
+ private:
352
+ ///@name private functions
353
+ //@{
354
+ /** Does main work of destructor - type (or'ed)
355
+ 1 - NULLify pointers
356
+ 2 - delete pointers
357
+ 4 - initialize scalars (tolerances etc)
358
+ 8 - initialize scalars (objValue etc0
359
+ */
360
+ void gutsOfDestructor(int type);
361
+ /// Does main work of copy
362
+ void gutsOfCopy(const CoinSnapshot & rhs);
363
+ //@}
364
+
365
+ ///@name Private member data
366
+
367
+ /// objective function sense (1 for min (default), -1 for max)
368
+ double objSense_;
369
+
370
+ /// solver's value for infinity
371
+ double infinity_;
372
+
373
+ /// objective function value (including any rhs offset)
374
+ double objValue_;
375
+
376
+ /// objective offset i.e. sum c sub j * x subj -objValue = objOffset
377
+ double objOffset_;
378
+
379
+ /// dual tolerance
380
+ double dualTolerance_;
381
+
382
+ /// primal tolerance
383
+ double primalTolerance_;
384
+
385
+ /// integer tolerance
386
+ double integerTolerance_;
387
+
388
+ /// integer upper bound i.e. best solution * getObjSense
389
+ double integerUpperBound_;
390
+
391
+ /// integer lower bound i.e. best possible solution * getObjSense
392
+ double integerLowerBound_;
393
+
394
+ /// pointer to array[getNumCols()] of column lower bounds
395
+ const double * colLower_;
396
+
397
+ /// pointer to array[getNumCols()] of column upper bounds
398
+ const double * colUpper_;
399
+
400
+ /// pointer to array[getNumRows()] of row lower bounds
401
+ const double * rowLower_;
402
+
403
+ /// pointer to array[getNumRows()] of row upper bounds
404
+ const double * rowUpper_;
405
+
406
+ /// pointer to array[getNumRows()] of rhs side values
407
+ const double * rightHandSide_;
408
+
409
+ /// pointer to array[getNumCols()] of objective function coefficients
410
+ const double * objCoefficients_;
411
+
412
+ /// colType array ('B', 'I', or 'C' for Binary, Integer and Continuous)
413
+ const char * colType_;
414
+
415
+ /// pointer to row-wise copy of current matrix
416
+ const CoinPackedMatrix * matrixByRow_;
417
+
418
+ /// pointer to column-wise copy of current matrix
419
+ const CoinPackedMatrix * matrixByCol_;
420
+
421
+ /// pointer to row-wise copy of "original" matrix
422
+ const CoinPackedMatrix * originalMatrixByRow_;
423
+
424
+ /// pointer to column-wise copy of "original" matrix
425
+ const CoinPackedMatrix * originalMatrixByCol_;
426
+
427
+ /// pointer to array[getNumCols()] of primal variable values
428
+ const double * colSolution_;
429
+
430
+ /// pointer to array[getNumRows()] of dual variable values
431
+ const double * rowPrice_;
432
+
433
+ /// a pointer to array[getNumCols()] of reduced costs
434
+ const double * reducedCost_;
435
+
436
+ /// pointer to array[getNumRows()] of row activity levels (constraint matrix times the solution vector).
437
+ const double * rowActivity_;
438
+
439
+ /// pointer to array[getNumCols()] of primal variable values which should not be separated (for debug)
440
+ const double * doNotSeparateThis_;
441
+
442
+ /// number of columns
443
+ int numCols_;
444
+
445
+ /// number of rows
446
+ int numRows_;
447
+
448
+ /// number of nonzero elements
449
+ int numElements_;
450
+
451
+ /// number of integer variables
452
+ int numIntegers_;
453
+
454
+ /// To say whether arrays etc are owned by CoinSnapshot
455
+ typedef struct {
456
+ unsigned int colLower:1;
457
+ unsigned int colUpper:1;
458
+ unsigned int rowLower:1;
459
+ unsigned int rowUpper:1;
460
+ unsigned int rightHandSide:1;
461
+ unsigned int objCoefficients:1;
462
+ unsigned int colType:1;
463
+ unsigned int matrixByRow:1;
464
+ unsigned int matrixByCol:1;
465
+ unsigned int originalMatrixByRow:1;
466
+ unsigned int originalMatrixByCol:1;
467
+ unsigned int colSolution:1;
468
+ unsigned int rowPrice:1;
469
+ unsigned int reducedCost:1;
470
+ unsigned int rowActivity:1;
471
+ unsigned int doNotSeparateThis:1;
472
+ } coinOwned;
473
+ coinOwned owned_;
474
+ //@}
475
+ };
476
+ #endif