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,358 @@
1
+ /* $Id: ClpGubMatrix.hpp 1665 2011-01-04 17:55:54Z lou $ */
2
+ // Copyright (C) 2003, 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 ClpGubMatrix_H
7
+ #define ClpGubMatrix_H
8
+
9
+
10
+ #include "CoinPragma.hpp"
11
+
12
+ #include "ClpPackedMatrix.hpp"
13
+ class ClpSimplex;
14
+ /** This implements Gub rows plus a ClpPackedMatrix.
15
+
16
+ There will be a version using ClpPlusMinusOne matrix but
17
+ there is no point doing one with ClpNetworkMatrix (although
18
+ an embedded network is attractive).
19
+
20
+ */
21
+
22
+ class ClpGubMatrix : public ClpPackedMatrix {
23
+
24
+ public:
25
+ /**@name Main functions provided */
26
+ //@{
27
+ /** Returns a new matrix in reverse order without gaps (GUB wants NULL) */
28
+ virtual ClpMatrixBase * reverseOrderedCopy() const;
29
+ /// Returns number of elements in column part of basis
30
+ virtual CoinBigIndex countBasis(const int * whichColumn,
31
+ int & numberColumnBasic);
32
+ /// Fills in column part of basis
33
+ virtual void fillBasis(ClpSimplex * model,
34
+ const int * whichColumn,
35
+ int & numberColumnBasic,
36
+ int * row, int * start,
37
+ int * rowCount, int * columnCount,
38
+ CoinFactorizationDouble * element);
39
+ /** Unpacks a column into an CoinIndexedvector
40
+ */
41
+ virtual void unpack(const ClpSimplex * model, CoinIndexedVector * rowArray,
42
+ int column) const ;
43
+ /** Unpacks a column into an CoinIndexedvector
44
+ ** in packed foramt
45
+ Note that model is NOT const. Bounds and objective could
46
+ be modified if doing column generation (just for this variable) */
47
+ virtual void unpackPacked(ClpSimplex * model,
48
+ CoinIndexedVector * rowArray,
49
+ int column) const;
50
+ /** Adds multiple of a column into an CoinIndexedvector
51
+ You can use quickAdd to add to vector */
52
+ virtual void add(const ClpSimplex * model, CoinIndexedVector * rowArray,
53
+ int column, double multiplier) const ;
54
+ /** Adds multiple of a column into an array */
55
+ virtual void add(const ClpSimplex * model, double * array,
56
+ int column, double multiplier) const;
57
+ /// Partial pricing
58
+ virtual void partialPricing(ClpSimplex * model, double start, double end,
59
+ int & bestSequence, int & numberWanted);
60
+ /// Returns number of hidden rows e.g. gub
61
+ virtual int hiddenRows() const;
62
+ //@}
63
+
64
+ /**@name Matrix times vector methods */
65
+ //@{
66
+
67
+ using ClpPackedMatrix::transposeTimes ;
68
+ /** Return <code>x * scalar * A + y</code> in <code>z</code>.
69
+ Can use y as temporary array (will be empty at end)
70
+ Note - If x packed mode - then z packed mode
71
+ Squashes small elements and knows about ClpSimplex */
72
+ virtual void transposeTimes(const ClpSimplex * model, double scalar,
73
+ const CoinIndexedVector * x,
74
+ CoinIndexedVector * y,
75
+ CoinIndexedVector * z) const;
76
+ /** Return <code>x * scalar * A + y</code> in <code>z</code>.
77
+ Can use y as temporary array (will be empty at end)
78
+ Note - If x packed mode - then z packed mode
79
+ Squashes small elements and knows about ClpSimplex.
80
+ This version uses row copy*/
81
+ virtual void transposeTimesByRow(const ClpSimplex * model, double scalar,
82
+ const CoinIndexedVector * x,
83
+ CoinIndexedVector * y,
84
+ CoinIndexedVector * z) const;
85
+ /** Return <code>x *A</code> in <code>z</code> but
86
+ just for indices in y.
87
+ Note - z always packed mode */
88
+ virtual void subsetTransposeTimes(const ClpSimplex * model,
89
+ const CoinIndexedVector * x,
90
+ const CoinIndexedVector * y,
91
+ CoinIndexedVector * z) const;
92
+ /** expands an updated column to allow for extra rows which the main
93
+ solver does not know about and returns number added if mode 0.
94
+ If mode 1 deletes extra entries
95
+
96
+ This active in Gub
97
+ */
98
+ virtual int extendUpdated(ClpSimplex * model, CoinIndexedVector * update, int mode);
99
+ /**
100
+ mode=0 - Set up before "update" and "times" for primal solution using extended rows
101
+ mode=1 - Cleanup primal solution after "times" using extended rows.
102
+ mode=2 - Check (or report on) primal infeasibilities
103
+ */
104
+ virtual void primalExpanded(ClpSimplex * model, int mode);
105
+ /**
106
+ mode=0 - Set up before "updateTranspose" and "transposeTimes" for duals using extended
107
+ updates array (and may use other if dual values pass)
108
+ mode=1 - Update dual solution after "transposeTimes" using extended rows.
109
+ mode=2 - Compute all djs and compute key dual infeasibilities
110
+ mode=3 - Report on key dual infeasibilities
111
+ mode=4 - Modify before updateTranspose in partial pricing
112
+ */
113
+ virtual void dualExpanded(ClpSimplex * model, CoinIndexedVector * array,
114
+ double * other, int mode);
115
+ /**
116
+ mode=0 - Create list of non-key basics in pivotVariable_ using
117
+ number as numberBasic in and out
118
+ mode=1 - Set all key variables as basic
119
+ mode=2 - return number extra rows needed, number gives maximum number basic
120
+ mode=3 - before replaceColumn
121
+ mode=4 - return 1 if can do primal, 2 if dual, 3 if both
122
+ mode=5 - save any status stuff (when in good state)
123
+ mode=6 - restore status stuff
124
+ mode=7 - flag given variable (normally sequenceIn)
125
+ mode=8 - unflag all variables
126
+ mode=9 - synchronize costs
127
+ mode=10 - return 1 if there may be changing bounds on variable (column generation)
128
+ mode=11 - make sure set is clean (used when a variable rejected - but not flagged)
129
+ mode=12 - after factorize but before permute stuff
130
+ mode=13 - at end of simplex to delete stuff
131
+ */
132
+ virtual int generalExpanded(ClpSimplex * model, int mode, int & number);
133
+ /**
134
+ update information for a pivot (and effective rhs)
135
+ */
136
+ virtual int updatePivot(ClpSimplex * model, double oldInValue, double oldOutValue);
137
+ /// Sets up an effective RHS and does gub crash if needed
138
+ virtual void useEffectiveRhs(ClpSimplex * model, bool cheapest = true);
139
+ /** Returns effective RHS offset if it is being used. This is used for long problems
140
+ or big gub or anywhere where going through full columns is
141
+ expensive. This may re-compute */
142
+ virtual double * rhsOffset(ClpSimplex * model, bool forceRefresh = false,
143
+ bool check = false);
144
+ /** This is local to Gub to allow synchronization:
145
+ mode=0 when status of basis is good
146
+ mode=1 when variable is flagged
147
+ mode=2 when all variables unflagged (returns number flagged)
148
+ mode=3 just reset costs (primal)
149
+ mode=4 correct number of dual infeasibilities
150
+ mode=5 return 4 if time to re-factorize
151
+ mode=6 - return 1 if there may be changing bounds on variable (column generation)
152
+ mode=7 - do extra restores for column generation
153
+ mode=8 - make sure set is clean
154
+ mode=9 - adjust lower, upper on set by incoming
155
+ */
156
+ virtual int synchronize(ClpSimplex * model, int mode);
157
+ /// Correct sequence in and out to give true value
158
+ virtual void correctSequence(const ClpSimplex * model, int & sequenceIn, int & sequenceOut) ;
159
+ //@}
160
+
161
+
162
+
163
+ /**@name Constructors, destructor */
164
+ //@{
165
+ /** Default constructor. */
166
+ ClpGubMatrix();
167
+ /** Destructor */
168
+ virtual ~ClpGubMatrix();
169
+ //@}
170
+
171
+ /**@name Copy method */
172
+ //@{
173
+ /** The copy constructor. */
174
+ ClpGubMatrix(const ClpGubMatrix&);
175
+ /** The copy constructor from an CoinPackedMatrix. */
176
+ ClpGubMatrix(const CoinPackedMatrix&);
177
+ /** Subset constructor (without gaps). Duplicates are allowed
178
+ and order is as given */
179
+ ClpGubMatrix (const ClpGubMatrix & wholeModel,
180
+ int numberRows, const int * whichRows,
181
+ int numberColumns, const int * whichColumns);
182
+ ClpGubMatrix (const CoinPackedMatrix & wholeModel,
183
+ int numberRows, const int * whichRows,
184
+ int numberColumns, const int * whichColumns);
185
+
186
+ /** This takes over ownership (for space reasons) */
187
+ ClpGubMatrix(CoinPackedMatrix * matrix);
188
+
189
+ /** This takes over ownership (for space reasons) and is the
190
+ real constructor*/
191
+ ClpGubMatrix(ClpPackedMatrix * matrix, int numberSets,
192
+ const int * start, const int * end,
193
+ const double * lower, const double * upper,
194
+ const unsigned char * status = NULL);
195
+
196
+ ClpGubMatrix& operator=(const ClpGubMatrix&);
197
+ /// Clone
198
+ virtual ClpMatrixBase * clone() const ;
199
+ /** Subset clone (without gaps). Duplicates are allowed
200
+ and order is as given */
201
+ virtual ClpMatrixBase * subsetClone (
202
+ int numberRows, const int * whichRows,
203
+ int numberColumns, const int * whichColumns) const ;
204
+ /** redoes next_ for a set. */
205
+ void redoSet(ClpSimplex * model, int newKey, int oldKey, int iSet);
206
+ //@}
207
+ /**@name gets and sets */
208
+ //@{
209
+ /// Status
210
+ inline ClpSimplex::Status getStatus(int sequence) const {
211
+ return static_cast<ClpSimplex::Status> (status_[sequence] & 7);
212
+ }
213
+ inline void setStatus(int sequence, ClpSimplex::Status status) {
214
+ unsigned char & st_byte = status_[sequence];
215
+ st_byte = static_cast<unsigned char>(st_byte & ~7);
216
+ st_byte = static_cast<unsigned char>(st_byte | status);
217
+ }
218
+ /// To flag a variable
219
+ inline void setFlagged( int sequence) {
220
+ status_[sequence] = static_cast<unsigned char>(status_[sequence] | 64);
221
+ }
222
+ inline void clearFlagged( int sequence) {
223
+ status_[sequence] = static_cast<unsigned char>(status_[sequence] & ~64);
224
+ }
225
+ inline bool flagged(int sequence) const {
226
+ return ((status_[sequence] & 64) != 0);
227
+ }
228
+ /// To say key is above ub
229
+ inline void setAbove( int sequence) {
230
+ unsigned char iStat = status_[sequence];
231
+ iStat = static_cast<unsigned char>(iStat & ~24);
232
+ status_[sequence] = static_cast<unsigned char>(iStat | 16);
233
+ }
234
+ /// To say key is feasible
235
+ inline void setFeasible( int sequence) {
236
+ unsigned char iStat = status_[sequence];
237
+ iStat = static_cast<unsigned char>(iStat & ~24);
238
+ status_[sequence] = static_cast<unsigned char>(iStat | 8);
239
+ }
240
+ /// To say key is below lb
241
+ inline void setBelow( int sequence) {
242
+ unsigned char iStat = status_[sequence];
243
+ iStat = static_cast<unsigned char>(iStat & ~24);
244
+ status_[sequence] = iStat;
245
+ }
246
+ inline double weight( int sequence) const {
247
+ int iStat = status_[sequence] & 31;
248
+ iStat = iStat >> 3;
249
+ return static_cast<double> (iStat - 1);
250
+ }
251
+ /// Starts
252
+ inline int * start() const {
253
+ return start_;
254
+ }
255
+ /// End
256
+ inline int * end() const {
257
+ return end_;
258
+ }
259
+ /// Lower bounds on sets
260
+ inline double * lower() const {
261
+ return lower_;
262
+ }
263
+ /// Upper bounds on sets
264
+ inline double * upper() const {
265
+ return upper_;
266
+ }
267
+ /// Key variable of set
268
+ inline int * keyVariable() const {
269
+ return keyVariable_;
270
+ }
271
+ /// Backward pointer to set number
272
+ inline int * backward() const {
273
+ return backward_;
274
+ }
275
+ /// Number of sets (gub rows)
276
+ inline int numberSets() const {
277
+ return numberSets_;
278
+ }
279
+ /// Switches off dj checking each factorization (for BIG models)
280
+ void switchOffCheck();
281
+ //@}
282
+
283
+
284
+ protected:
285
+ /**@name Data members
286
+ The data members are protected to allow access for derived classes. */
287
+ //@{
288
+ /// Sum of dual infeasibilities
289
+ double sumDualInfeasibilities_;
290
+ /// Sum of primal infeasibilities
291
+ double sumPrimalInfeasibilities_;
292
+ /// Sum of Dual infeasibilities using tolerance based on error in duals
293
+ double sumOfRelaxedDualInfeasibilities_;
294
+ /// Sum of Primal infeasibilities using tolerance based on error in primals
295
+ double sumOfRelaxedPrimalInfeasibilities_;
296
+ /// Infeasibility weight when last full pass done
297
+ double infeasibilityWeight_;
298
+ /// Starts
299
+ int * start_;
300
+ /// End
301
+ int * end_;
302
+ /// Lower bounds on sets
303
+ double * lower_;
304
+ /// Upper bounds on sets
305
+ double * upper_;
306
+ /// Status of slacks
307
+ mutable unsigned char * status_;
308
+ /// Saved status of slacks
309
+ unsigned char * saveStatus_;
310
+ /// Saved key variables
311
+ int * savedKeyVariable_;
312
+ /// Backward pointer to set number
313
+ int * backward_;
314
+ /// Backward pointer to pivot row !!!
315
+ int * backToPivotRow_;
316
+ /// Change in costs for keys
317
+ double * changeCost_;
318
+ /// Key variable of set
319
+ mutable int * keyVariable_;
320
+ /** Next basic variable in set - starts at key and end with -(set+1).
321
+ Now changes to -(nonbasic+1).
322
+ next_ has extra space for 2* longest set */
323
+ mutable int * next_;
324
+ /// Backward pointer to index in CoinIndexedVector
325
+ int * toIndex_;
326
+ // Reverse pointer from index to set
327
+ int * fromIndex_;
328
+ /// Pointer back to model
329
+ ClpSimplex * model_;
330
+ /// Number of dual infeasibilities
331
+ int numberDualInfeasibilities_;
332
+ /// Number of primal infeasibilities
333
+ int numberPrimalInfeasibilities_;
334
+ /** If pricing will declare victory (i.e. no check every factorization).
335
+ -1 - always check
336
+ 0 - don't check
337
+ 1 - in don't check mode but looks optimal
338
+ */
339
+ int noCheck_;
340
+ /// Number of sets (gub rows)
341
+ int numberSets_;
342
+ /// Number in vector without gub extension
343
+ int saveNumber_;
344
+ /// Pivot row of possible next key
345
+ int possiblePivotKey_;
346
+ /// Gub slack in (set number or -1)
347
+ int gubSlackIn_;
348
+ /// First gub variables (same as start_[0] at present)
349
+ int firstGub_;
350
+ /// last gub variable (same as end_[numberSets_-1] at present)
351
+ int lastGub_;
352
+ /** type of gub - 0 not contiguous, 1 contiguous
353
+ add 8 bit to say no ubs on individual variables */
354
+ int gubType_;
355
+ //@}
356
+ };
357
+
358
+ #endif