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,441 @@
1
+ /* $Id: CoinModelUseful.hpp 1416 2011-04-17 09:57:29Z stefan $ */
2
+ // Copyright (C) 2005, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #ifndef CoinModelUseful_H
7
+ #define CoinModelUseful_H
8
+
9
+
10
+ #include <cstdlib>
11
+ #include <cmath>
12
+ #include <cassert>
13
+ #include <cfloat>
14
+ #include <cstring>
15
+ #include <cstdio>
16
+ #include <iostream>
17
+
18
+
19
+ #include "CoinPragma.hpp"
20
+
21
+ /**
22
+ This is for various structures/classes needed by CoinModel.
23
+
24
+ CoinModelLink
25
+ CoinModelLinkedList
26
+ CoinModelHash
27
+ */
28
+ /// for going through row or column
29
+
30
+ class CoinModelLink {
31
+
32
+ public:
33
+ /**@name Constructors, destructor */
34
+ //@{
35
+ /** Default constructor. */
36
+ CoinModelLink();
37
+ /** Destructor */
38
+ ~CoinModelLink();
39
+ //@}
40
+
41
+ /**@name Copy method */
42
+ //@{
43
+ /** The copy constructor. */
44
+ CoinModelLink(const CoinModelLink&);
45
+ /// =
46
+ CoinModelLink& operator=(const CoinModelLink&);
47
+ //@}
48
+
49
+ /**@name Sets and gets method */
50
+ //@{
51
+ /// Get row
52
+ inline int row() const
53
+ { return row_;}
54
+ /// Get column
55
+ inline int column() const
56
+ { return column_;}
57
+ /// Get value
58
+ inline double value() const
59
+ { return value_;}
60
+ /// Get value
61
+ inline double element() const
62
+ { return value_;}
63
+ /// Get position
64
+ inline int position() const
65
+ { return position_;}
66
+ /// Get onRow
67
+ inline bool onRow() const
68
+ { return onRow_;}
69
+ /// Set row
70
+ inline void setRow(int row)
71
+ { row_=row;}
72
+ /// Set column
73
+ inline void setColumn(int column)
74
+ { column_=column;}
75
+ /// Set value
76
+ inline void setValue(double value)
77
+ { value_=value;}
78
+ /// Set value
79
+ inline void setElement(double value)
80
+ { value_=value;}
81
+ /// Set position
82
+ inline void setPosition(int position)
83
+ { position_=position;}
84
+ /// Set onRow
85
+ inline void setOnRow(bool onRow)
86
+ { onRow_=onRow;}
87
+ //@}
88
+
89
+ private:
90
+ /**@name Data members */
91
+ //@{
92
+ /// Row
93
+ int row_;
94
+ /// Column
95
+ int column_;
96
+ /// Value as double
97
+ double value_;
98
+ /// Position in data
99
+ int position_;
100
+ /// If on row chain
101
+ bool onRow_;
102
+ //@}
103
+ };
104
+
105
+ /// for linked lists
106
+ // for specifying triple
107
+ typedef struct {
108
+ // top bit is nonzero if string
109
+ // rest is row
110
+ unsigned int row;
111
+ //CoinModelRowIndex row;
112
+ int column;
113
+ double value; // If string then index into strings
114
+ } CoinModelTriple;
115
+ inline int rowInTriple(const CoinModelTriple & triple)
116
+ { return triple.row&0x7fffffff;}
117
+ inline void setRowInTriple(CoinModelTriple & triple,int iRow)
118
+ { triple.row = iRow|(triple.row&0x80000000);}
119
+ inline bool stringInTriple(const CoinModelTriple & triple)
120
+ { return (triple.row&0x80000000)!=0;}
121
+ inline void setStringInTriple(CoinModelTriple & triple,bool string)
122
+ { triple.row = (string ? 0x80000000 : 0)|(triple.row&0x7fffffff);}
123
+ inline void setRowAndStringInTriple(CoinModelTriple & triple,
124
+ int iRow,bool string)
125
+ { triple.row = (string ? 0x80000000 : 0)|iRow;}
126
+ /// for names and hashing
127
+ // for hashing
128
+ typedef struct {
129
+ int index, next;
130
+ } CoinModelHashLink;
131
+
132
+ /* Function type. */
133
+ typedef double (*func_t) (double);
134
+
135
+ /// For string evaluation
136
+ /* Data type for links in the chain of symbols. */
137
+ struct symrec
138
+ {
139
+ char *name; /* name of symbol */
140
+ int type; /* type of symbol: either VAR or FNCT */
141
+ union
142
+ {
143
+ double var; /* value of a VAR */
144
+ func_t fnctptr; /* value of a FNCT */
145
+ } value;
146
+ struct symrec *next; /* link field */
147
+ };
148
+
149
+ typedef struct symrec symrec;
150
+
151
+ class CoinYacc {
152
+ private:
153
+ CoinYacc(const CoinYacc& rhs);
154
+ CoinYacc& operator=(const CoinYacc& rhs);
155
+
156
+ public:
157
+ CoinYacc() : symtable(NULL), symbuf(NULL), length(0), unsetValue(0) {}
158
+ ~CoinYacc()
159
+ {
160
+ if (length) {
161
+ free(symbuf);
162
+ symbuf = NULL;
163
+ }
164
+ symrec* s = symtable;
165
+ while (s) {
166
+ free(s->name);
167
+ symtable = s;
168
+ s = s->next;
169
+ free(symtable);
170
+ }
171
+ }
172
+
173
+ public:
174
+ symrec * symtable;
175
+ char * symbuf;
176
+ int length;
177
+ double unsetValue;
178
+ };
179
+
180
+ class CoinModelHash {
181
+
182
+ public:
183
+ /**@name Constructors, destructor */
184
+ //@{
185
+ /** Default constructor. */
186
+ CoinModelHash();
187
+ /** Destructor */
188
+ ~CoinModelHash();
189
+ //@}
190
+
191
+ /**@name Copy method */
192
+ //@{
193
+ /** The copy constructor. */
194
+ CoinModelHash(const CoinModelHash&);
195
+ /// =
196
+ CoinModelHash& operator=(const CoinModelHash&);
197
+ //@}
198
+
199
+ /**@name sizing (just increases) */
200
+ //@{
201
+ /// Resize hash (also re-hashs)
202
+ void resize(int maxItems,bool forceReHash=false);
203
+ /// Number of items i.e. rows if just row names
204
+ inline int numberItems() const
205
+ { return numberItems_;}
206
+ /// Set number of items
207
+ void setNumberItems(int number);
208
+ /// Maximum number of items
209
+ inline int maximumItems() const
210
+ { return maximumItems_;}
211
+ /// Names
212
+ inline const char *const * names() const
213
+ { return names_;}
214
+ //@}
215
+
216
+ /**@name hashing */
217
+ //@{
218
+ /// Returns index or -1
219
+ int hash(const char * name) const;
220
+ /// Adds to hash
221
+ void addHash(int index, const char * name);
222
+ /// Deletes from hash
223
+ void deleteHash(int index);
224
+ /// Returns name at position (or NULL)
225
+ const char * name(int which) const;
226
+ /// Returns non const name at position (or NULL)
227
+ char * getName(int which) const;
228
+ /// Sets name at position (does not create)
229
+ void setName(int which,char * name ) ;
230
+ /// Validates
231
+ void validateHash() const;
232
+ private:
233
+ /// Returns a hash value
234
+ int hashValue(const char * name) const;
235
+ public:
236
+ //@}
237
+ private:
238
+ /**@name Data members */
239
+ //@{
240
+ /// Names
241
+ char ** names_;
242
+ /// hash
243
+ CoinModelHashLink * hash_;
244
+ /// Number of items
245
+ int numberItems_;
246
+ /// Maximum number of items
247
+ int maximumItems_;
248
+ /// Last slot looked at
249
+ int lastSlot_;
250
+ //@}
251
+ };
252
+ /// For int,int hashing
253
+ class CoinModelHash2 {
254
+
255
+ public:
256
+ /**@name Constructors, destructor */
257
+ //@{
258
+ /** Default constructor. */
259
+ CoinModelHash2();
260
+ /** Destructor */
261
+ ~CoinModelHash2();
262
+ //@}
263
+
264
+ /**@name Copy method */
265
+ //@{
266
+ /** The copy constructor. */
267
+ CoinModelHash2(const CoinModelHash2&);
268
+ /// =
269
+ CoinModelHash2& operator=(const CoinModelHash2&);
270
+ //@}
271
+
272
+ /**@name sizing (just increases) */
273
+ //@{
274
+ /// Resize hash (also re-hashs)
275
+ void resize(int maxItems, const CoinModelTriple * triples,bool forceReHash=false);
276
+ /// Number of items
277
+ inline int numberItems() const
278
+ { return numberItems_;}
279
+ /// Set number of items
280
+ void setNumberItems(int number);
281
+ /// Maximum number of items
282
+ inline int maximumItems() const
283
+ { return maximumItems_;}
284
+ //@}
285
+
286
+ /**@name hashing */
287
+ //@{
288
+ /// Returns index or -1
289
+ int hash(int row, int column, const CoinModelTriple * triples) const;
290
+ /// Adds to hash
291
+ void addHash(int index, int row, int column, const CoinModelTriple * triples);
292
+ /// Deletes from hash
293
+ void deleteHash(int index, int row, int column);
294
+ private:
295
+ /// Returns a hash value
296
+ int hashValue(int row, int column) const;
297
+ public:
298
+ //@}
299
+ private:
300
+ /**@name Data members */
301
+ //@{
302
+ /// hash
303
+ CoinModelHashLink * hash_;
304
+ /// Number of items
305
+ int numberItems_;
306
+ /// Maximum number of items
307
+ int maximumItems_;
308
+ /// Last slot looked at
309
+ int lastSlot_;
310
+ //@}
311
+ };
312
+ class CoinModelLinkedList {
313
+
314
+ public:
315
+ /**@name Constructors, destructor */
316
+ //@{
317
+ /** Default constructor. */
318
+ CoinModelLinkedList();
319
+ /** Destructor */
320
+ ~CoinModelLinkedList();
321
+ //@}
322
+
323
+ /**@name Copy method */
324
+ //@{
325
+ /** The copy constructor. */
326
+ CoinModelLinkedList(const CoinModelLinkedList&);
327
+ /// =
328
+ CoinModelLinkedList& operator=(const CoinModelLinkedList&);
329
+ //@}
330
+
331
+ /**@name sizing (just increases) */
332
+ //@{
333
+ /** Resize list - for row list maxMajor is maximum rows.
334
+ */
335
+ void resize(int maxMajor,int maxElements);
336
+ /** Create list - for row list maxMajor is maximum rows.
337
+ type 0 row list, 1 column list
338
+ */
339
+ void create(int maxMajor,int maxElements,
340
+ int numberMajor, int numberMinor,
341
+ int type,
342
+ int numberElements, const CoinModelTriple * triples);
343
+ /// Number of major items i.e. rows if just row links
344
+ inline int numberMajor() const
345
+ { return numberMajor_;}
346
+ /// Maximum number of major items i.e. rows if just row links
347
+ inline int maximumMajor() const
348
+ { return maximumMajor_;}
349
+ /// Number of elements
350
+ inline int numberElements() const
351
+ { return numberElements_;}
352
+ /// Maximum number of elements
353
+ inline int maximumElements() const
354
+ { return maximumElements_;}
355
+ /// First on free chain
356
+ inline int firstFree() const
357
+ { return first_[maximumMajor_];}
358
+ /// Last on free chain
359
+ inline int lastFree() const
360
+ { return last_[maximumMajor_];}
361
+ /// First on chain
362
+ inline int first(int which) const
363
+ { return first_[which];}
364
+ /// Last on chain
365
+ inline int last(int which) const
366
+ { return last_[which];}
367
+ /// Next array
368
+ inline const int * next() const
369
+ { return next_;}
370
+ /// Previous array
371
+ inline const int * previous() const
372
+ { return previous_;}
373
+ //@}
374
+
375
+ /**@name does work */
376
+ //@{
377
+ /** Adds to list - easy case i.e. add row to row list
378
+ Returns where chain starts
379
+ */
380
+ int addEasy(int majorIndex, int numberOfElements, const int * indices,
381
+ const double * elements, CoinModelTriple * triples,
382
+ CoinModelHash2 & hash);
383
+ /** Adds to list - hard case i.e. add row to column list
384
+ */
385
+ void addHard(int minorIndex, int numberOfElements, const int * indices,
386
+ const double * elements, CoinModelTriple * triples,
387
+ CoinModelHash2 & hash);
388
+ /** Adds to list - hard case i.e. add row to column list
389
+ This is when elements have been added to other copy
390
+ */
391
+ void addHard(int first, const CoinModelTriple * triples,
392
+ int firstFree, int lastFree,const int * nextOther);
393
+ /** Deletes from list - same case i.e. delete row from row list
394
+ */
395
+ void deleteSame(int which, CoinModelTriple * triples,
396
+ CoinModelHash2 & hash, bool zapTriples);
397
+ /** Deletes from list - other case i.e. delete row from column list
398
+ This is when elements have been deleted from other copy
399
+ */
400
+ void updateDeleted(int which, CoinModelTriple * triples,
401
+ CoinModelLinkedList & otherList);
402
+ /** Deletes one element from Row list
403
+ */
404
+ void deleteRowOne(int position, CoinModelTriple * triples,
405
+ CoinModelHash2 & hash);
406
+ /** Update column list for one element when
407
+ one element deleted from row copy
408
+ */
409
+ void updateDeletedOne(int position, const CoinModelTriple * triples);
410
+ /// Fills first,last with -1
411
+ void fill(int first,int last);
412
+ /** Puts in free list from other list */
413
+ void synchronize(CoinModelLinkedList & other);
414
+ /// Checks that links are consistent
415
+ void validateLinks(const CoinModelTriple * triples) const;
416
+ //@}
417
+ private:
418
+ /**@name Data members */
419
+ //@{
420
+ /// Previous - maximumElements long
421
+ int * previous_;
422
+ /// Next - maximumElements long
423
+ int * next_;
424
+ /// First - maximumMajor+1 long (last free element chain)
425
+ int * first_;
426
+ /// Last - maximumMajor+1 long (last free element chain)
427
+ int * last_;
428
+ /// Number of major items i.e. rows if just row links
429
+ int numberMajor_;
430
+ /// Maximum number of major items i.e. rows if just row links
431
+ int maximumMajor_;
432
+ /// Number of elements
433
+ int numberElements_;
434
+ /// Maximum number of elements
435
+ int maximumElements_;
436
+ /// 0 row list, 1 column list
437
+ int type_;
438
+ //@}
439
+ };
440
+
441
+ #endif