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,419 @@
1
+ /* $Id: CoinDenseFactorization.hpp 1759 2014-11-18 11:07:23Z forrest $ */
2
+ // Copyright (C) 2008, 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
+
7
+ /*
8
+ Authors
9
+
10
+ John Forrest
11
+
12
+ */
13
+ #ifndef CoinDenseFactorization_H
14
+ #define CoinDenseFactorization_H
15
+
16
+ #include <iostream>
17
+ #include <string>
18
+ #include <cassert>
19
+ #include "CoinTypes.hpp"
20
+ #include "CoinIndexedVector.hpp"
21
+ #include "CoinFactorization.hpp"
22
+ #if COIN_FACTORIZATION_DENSE_CODE == 2
23
+ #undef COIN_FACTORIZATION_DENSE_CODE
24
+ #endif
25
+ class CoinPackedMatrix;
26
+ /// Abstract base class which also has some scalars so can be used from Dense or Simp
27
+ class CoinOtherFactorization {
28
+
29
+ public:
30
+
31
+ /**@name Constructors and destructor and copy */
32
+ //@{
33
+ /// Default constructor
34
+ CoinOtherFactorization ( );
35
+ /// Copy constructor
36
+ CoinOtherFactorization ( const CoinOtherFactorization &other);
37
+
38
+ /// Destructor
39
+ virtual ~CoinOtherFactorization ( );
40
+ /// = copy
41
+ CoinOtherFactorization & operator = ( const CoinOtherFactorization & other );
42
+
43
+ /// Clone
44
+ virtual CoinOtherFactorization * clone() const = 0;
45
+ //@}
46
+
47
+ /**@name general stuff such as status */
48
+ //@{
49
+ /// Returns status
50
+ inline int status ( ) const {
51
+ return status_;
52
+ }
53
+ /// Sets status
54
+ inline void setStatus ( int value)
55
+ { status_=value; }
56
+ /// Returns number of pivots since factorization
57
+ inline int pivots ( ) const {
58
+ return numberPivots_;
59
+ }
60
+ /// Sets number of pivots since factorization
61
+ inline void setPivots ( int value )
62
+ { numberPivots_=value; }
63
+ /// Set number of Rows after factorization
64
+ inline void setNumberRows(int value)
65
+ { numberRows_ = value; }
66
+ /// Number of Rows after factorization
67
+ inline int numberRows ( ) const {
68
+ return numberRows_;
69
+ }
70
+ /// Total number of columns in factorization
71
+ inline int numberColumns ( ) const {
72
+ return numberColumns_;
73
+ }
74
+ /// Number of good columns in factorization
75
+ inline int numberGoodColumns ( ) const {
76
+ return numberGoodU_;
77
+ }
78
+ /// Allows change of pivot accuracy check 1.0 == none >1.0 relaxed
79
+ inline void relaxAccuracyCheck(double value)
80
+ { relaxCheck_ = value;}
81
+ inline double getAccuracyCheck() const
82
+ { return relaxCheck_;}
83
+ /// Maximum number of pivots between factorizations
84
+ inline int maximumPivots ( ) const {
85
+ return maximumPivots_ ;
86
+ }
87
+ /// Set maximum pivots
88
+ virtual void maximumPivots ( int value );
89
+
90
+ /// Pivot tolerance
91
+ inline double pivotTolerance ( ) const {
92
+ return pivotTolerance_ ;
93
+ }
94
+ void pivotTolerance ( double value );
95
+ /// Zero tolerance
96
+ inline double zeroTolerance ( ) const {
97
+ return zeroTolerance_ ;
98
+ }
99
+ void zeroTolerance ( double value );
100
+ #ifndef COIN_FAST_CODE
101
+ /// Whether slack value is +1 or -1
102
+ inline double slackValue ( ) const {
103
+ return slackValue_ ;
104
+ }
105
+ void slackValue ( double value );
106
+ #endif
107
+ /// Returns array to put basis elements in
108
+ virtual CoinFactorizationDouble * elements() const;
109
+ /// Returns pivot row
110
+ virtual int * pivotRow() const;
111
+ /// Returns work area
112
+ virtual CoinFactorizationDouble * workArea() const;
113
+ /// Returns int work area
114
+ virtual int * intWorkArea() const;
115
+ /// Number of entries in each row
116
+ virtual int * numberInRow() const;
117
+ /// Number of entries in each column
118
+ virtual int * numberInColumn() const;
119
+ /// Returns array to put basis starts in
120
+ virtual CoinBigIndex * starts() const;
121
+ /// Returns permute back
122
+ virtual int * permuteBack() const;
123
+ /** Get solve mode e.g. 0 C++ code, 1 Lapack, 2 choose
124
+ If 4 set then values pass
125
+ if 8 set then has iterated
126
+ */
127
+ inline int solveMode() const
128
+ { return solveMode_ ;}
129
+ /** Set solve mode e.g. 0 C++ code, 1 Lapack, 2 choose
130
+ If 4 set then values pass
131
+ if 8 set then has iterated
132
+ */
133
+ inline void setSolveMode(int value)
134
+ { solveMode_ = value;}
135
+ /// Returns true if wants tableauColumn in replaceColumn
136
+ virtual bool wantsTableauColumn() const;
137
+ /** Useful information for factorization
138
+ 0 - iteration number
139
+ whereFrom is 0 for factorize and 1 for replaceColumn
140
+ */
141
+ virtual void setUsefulInformation(const int * info,int whereFrom);
142
+ /// Get rid of all memory
143
+ virtual void clearArrays() {}
144
+ //@}
145
+ /**@name virtual general stuff such as permutation */
146
+ //@{
147
+ /// Returns array to put basis indices in
148
+ virtual int * indices() const = 0;
149
+ /// Returns permute in
150
+ virtual int * permute() const = 0;
151
+ /// Total number of elements in factorization
152
+ virtual int numberElements ( ) const = 0;
153
+ //@}
154
+ /**@name Do factorization - public */
155
+ //@{
156
+ /// Gets space for a factorization
157
+ virtual void getAreas ( int numberRows,
158
+ int numberColumns,
159
+ CoinBigIndex maximumL,
160
+ CoinBigIndex maximumU ) = 0;
161
+
162
+ /// PreProcesses column ordered copy of basis
163
+ virtual void preProcess ( ) = 0;
164
+ /** Does most of factorization returning status
165
+ 0 - OK
166
+ -99 - needs more memory
167
+ -1 - singular - use numberGoodColumns and redo
168
+ */
169
+ virtual int factor ( ) = 0;
170
+ /// Does post processing on valid factorization - putting variables on correct rows
171
+ virtual void postProcess(const int * sequence, int * pivotVariable) = 0;
172
+ /// Makes a non-singular basis by replacing variables
173
+ virtual void makeNonSingular(int * sequence, int numberColumns) = 0;
174
+ //@}
175
+
176
+ /**@name rank one updates which do exist */
177
+ //@{
178
+
179
+ /** Replaces one Column to basis,
180
+ returns 0=OK, 1=Probably OK, 2=singular, 3=no room
181
+ If checkBeforeModifying is true will do all accuracy checks
182
+ before modifying factorization. Whether to set this depends on
183
+ speed considerations. You could just do this on first iteration
184
+ after factorization and thereafter re-factorize
185
+ partial update already in U */
186
+ virtual int replaceColumn ( CoinIndexedVector * regionSparse,
187
+ int pivotRow,
188
+ double pivotCheck ,
189
+ bool checkBeforeModifying=false,
190
+ double acceptablePivot=1.0e-8)=0;
191
+ //@}
192
+
193
+ /**@name various uses of factorization (return code number elements)
194
+ which user may want to know about */
195
+ //@{
196
+ /** Updates one column (FTRAN) from regionSparse2
197
+ Tries to do FT update
198
+ number returned is negative if no room
199
+ regionSparse starts as zero and is zero at end.
200
+ Note - if regionSparse2 packed on input - will be packed on output
201
+ */
202
+ virtual int updateColumnFT ( CoinIndexedVector * regionSparse,
203
+ CoinIndexedVector * regionSparse2,
204
+ bool noPermute=false) = 0;
205
+ /** This version has same effect as above with FTUpdate==false
206
+ so number returned is always >=0 */
207
+ virtual int updateColumn ( CoinIndexedVector * regionSparse,
208
+ CoinIndexedVector * regionSparse2,
209
+ bool noPermute=false) const = 0;
210
+ /// does FTRAN on two columns
211
+ virtual int updateTwoColumnsFT(CoinIndexedVector * regionSparse1,
212
+ CoinIndexedVector * regionSparse2,
213
+ CoinIndexedVector * regionSparse3,
214
+ bool noPermute=false) = 0;
215
+ /** Updates one column (BTRAN) from regionSparse2
216
+ regionSparse starts as zero and is zero at end
217
+ Note - if regionSparse2 packed on input - will be packed on output
218
+ */
219
+ virtual int updateColumnTranspose ( CoinIndexedVector * regionSparse,
220
+ CoinIndexedVector * regionSparse2) const = 0;
221
+ //@}
222
+
223
+ ////////////////// data //////////////////
224
+ protected:
225
+
226
+ /**@name data */
227
+ //@{
228
+ /// Pivot tolerance
229
+ double pivotTolerance_;
230
+ /// Zero tolerance
231
+ double zeroTolerance_;
232
+ #ifndef COIN_FAST_CODE
233
+ /// Whether slack value is +1 or -1
234
+ double slackValue_;
235
+ #else
236
+ #ifndef slackValue_
237
+ #define slackValue_ -1.0
238
+ #endif
239
+ #endif
240
+ /// Relax check on accuracy in replaceColumn
241
+ double relaxCheck_;
242
+ /// Number of elements after factorization
243
+ CoinBigIndex factorElements_;
244
+ /// Number of Rows in factorization
245
+ int numberRows_;
246
+ /// Number of Columns in factorization
247
+ int numberColumns_;
248
+ /// Number factorized in U (not row singletons)
249
+ int numberGoodU_;
250
+ /// Maximum number of pivots before factorization
251
+ int maximumPivots_;
252
+ /// Number pivots since last factorization
253
+ int numberPivots_;
254
+ /// Status of factorization
255
+ int status_;
256
+ /// Maximum rows ever (i.e. use to copy arrays etc)
257
+ int maximumRows_;
258
+ /// Maximum length of iterating area
259
+ CoinBigIndex maximumSpace_;
260
+ /// Pivot row
261
+ int * pivotRow_;
262
+ /** Elements of factorization and updates
263
+ length is maxR*maxR+maxSpace
264
+ will always be long enough so can have nR*nR ints in maxSpace
265
+ */
266
+ CoinFactorizationDouble * elements_;
267
+ /// Work area of numberRows_
268
+ CoinFactorizationDouble * workArea_;
269
+ /** Solve mode e.g. 0 C++ code, 1 Lapack, 2 choose
270
+ If 4 set then values pass
271
+ if 8 set then has iterated
272
+ */
273
+ int solveMode_;
274
+ //@}
275
+ };
276
+ /** This deals with Factorization and Updates
277
+ This is a simple dense version so other people can write a better one
278
+
279
+ I am assuming that 32 bits is enough for number of rows or columns, but CoinBigIndex
280
+ may be redefined to get 64 bits.
281
+ */
282
+
283
+
284
+
285
+ class CoinDenseFactorization : public CoinOtherFactorization {
286
+ friend void CoinDenseFactorizationUnitTest( const std::string & mpsDir );
287
+
288
+ public:
289
+
290
+ /**@name Constructors and destructor and copy */
291
+ //@{
292
+ /// Default constructor
293
+ CoinDenseFactorization ( );
294
+ /// Copy constructor
295
+ CoinDenseFactorization ( const CoinDenseFactorization &other);
296
+
297
+ /// Destructor
298
+ virtual ~CoinDenseFactorization ( );
299
+ /// = copy
300
+ CoinDenseFactorization & operator = ( const CoinDenseFactorization & other );
301
+ /// Clone
302
+ virtual CoinOtherFactorization * clone() const ;
303
+ //@}
304
+
305
+ /**@name Do factorization - public */
306
+ //@{
307
+ /// Gets space for a factorization
308
+ virtual void getAreas ( int numberRows,
309
+ int numberColumns,
310
+ CoinBigIndex maximumL,
311
+ CoinBigIndex maximumU );
312
+
313
+ /// PreProcesses column ordered copy of basis
314
+ virtual void preProcess ( );
315
+ /** Does most of factorization returning status
316
+ 0 - OK
317
+ -99 - needs more memory
318
+ -1 - singular - use numberGoodColumns and redo
319
+ */
320
+ virtual int factor ( );
321
+ /// Does post processing on valid factorization - putting variables on correct rows
322
+ virtual void postProcess(const int * sequence, int * pivotVariable);
323
+ /// Makes a non-singular basis by replacing variables
324
+ virtual void makeNonSingular(int * sequence, int numberColumns);
325
+ //@}
326
+
327
+ /**@name general stuff such as number of elements */
328
+ //@{
329
+ /// Total number of elements in factorization
330
+ virtual inline int numberElements ( ) const {
331
+ return numberRows_*(numberColumns_+numberPivots_);
332
+ }
333
+ /// Returns maximum absolute value in factorization
334
+ double maximumCoefficient() const;
335
+ //@}
336
+
337
+ /**@name rank one updates which do exist */
338
+ //@{
339
+
340
+ /** Replaces one Column to basis,
341
+ returns 0=OK, 1=Probably OK, 2=singular, 3=no room
342
+ If checkBeforeModifying is true will do all accuracy checks
343
+ before modifying factorization. Whether to set this depends on
344
+ speed considerations. You could just do this on first iteration
345
+ after factorization and thereafter re-factorize
346
+ partial update already in U */
347
+ virtual int replaceColumn ( CoinIndexedVector * regionSparse,
348
+ int pivotRow,
349
+ double pivotCheck ,
350
+ bool checkBeforeModifying=false,
351
+ double acceptablePivot=1.0e-8);
352
+ //@}
353
+
354
+ /**@name various uses of factorization (return code number elements)
355
+ which user may want to know about */
356
+ //@{
357
+ /** Updates one column (FTRAN) from regionSparse2
358
+ Tries to do FT update
359
+ number returned is negative if no room
360
+ regionSparse starts as zero and is zero at end.
361
+ Note - if regionSparse2 packed on input - will be packed on output
362
+ */
363
+ virtual inline int updateColumnFT ( CoinIndexedVector * regionSparse,
364
+ CoinIndexedVector * regionSparse2,
365
+ bool = false)
366
+ { return updateColumn(regionSparse,regionSparse2);}
367
+ /** This version has same effect as above with FTUpdate==false
368
+ so number returned is always >=0 */
369
+ virtual int updateColumn ( CoinIndexedVector * regionSparse,
370
+ CoinIndexedVector * regionSparse2,
371
+ bool noPermute=false) const;
372
+ /// does FTRAN on two columns
373
+ virtual int updateTwoColumnsFT(CoinIndexedVector * regionSparse1,
374
+ CoinIndexedVector * regionSparse2,
375
+ CoinIndexedVector * regionSparse3,
376
+ bool noPermute=false);
377
+ /** Updates one column (BTRAN) from regionSparse2
378
+ regionSparse starts as zero and is zero at end
379
+ Note - if regionSparse2 packed on input - will be packed on output
380
+ */
381
+ virtual int updateColumnTranspose ( CoinIndexedVector * regionSparse,
382
+ CoinIndexedVector * regionSparse2) const;
383
+ //@}
384
+ /// *** Below this user may not want to know about
385
+
386
+ /**@name various uses of factorization
387
+ which user may not want to know about (left over from my LP code) */
388
+ //@{
389
+ /// Get rid of all memory
390
+ inline void clearArrays()
391
+ { gutsOfDestructor();}
392
+ /// Returns array to put basis indices in
393
+ virtual inline int * indices() const
394
+ { return reinterpret_cast<int *> (elements_+numberRows_*numberRows_);}
395
+ /// Returns permute in
396
+ virtual inline int * permute() const
397
+ { return NULL;/*pivotRow_*/;}
398
+ //@}
399
+
400
+ /// The real work of desstructor
401
+ void gutsOfDestructor();
402
+ /// The real work of constructor
403
+ void gutsOfInitialize();
404
+ /// The real work of copy
405
+ void gutsOfCopy(const CoinDenseFactorization &other);
406
+
407
+ //@}
408
+ protected:
409
+ /** Returns accuracy status of replaceColumn
410
+ returns 0=OK, 1=Probably OK, 2=singular */
411
+ int checkPivot(double saveFromU, double oldPivot) const;
412
+ ////////////////// data //////////////////
413
+ protected:
414
+
415
+ /**@name data */
416
+ //@{
417
+ //@}
418
+ };
419
+ #endif