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,247 @@
1
+ /* $Id: ClpPrimalColumnSteepest.hpp 1665 2011-01-04 17:55:54Z lou $ */
2
+ // Copyright (C) 2002, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #ifndef ClpPrimalColumnSteepest_H
7
+ #define ClpPrimalColumnSteepest_H
8
+
9
+ #include "ClpPrimalColumnPivot.hpp"
10
+ #include <bitset>
11
+
12
+ //#############################################################################
13
+ class CoinIndexedVector;
14
+
15
+
16
+ /** Primal Column Pivot Steepest Edge Algorithm Class
17
+
18
+ See Forrest-Goldfarb paper for algorithm
19
+
20
+ */
21
+
22
+
23
+ class ClpPrimalColumnSteepest : public ClpPrimalColumnPivot {
24
+
25
+ public:
26
+
27
+ ///@name Algorithmic methods
28
+ //@{
29
+
30
+ /** Returns pivot column, -1 if none.
31
+ The Packed CoinIndexedVector updates has cost updates - for normal LP
32
+ that is just +-weight where a feasibility changed. It also has
33
+ reduced cost from last iteration in pivot row
34
+ Parts of operation split out into separate functions for
35
+ profiling and speed
36
+ */
37
+ virtual int pivotColumn(CoinIndexedVector * updates,
38
+ CoinIndexedVector * spareRow1,
39
+ CoinIndexedVector * spareRow2,
40
+ CoinIndexedVector * spareColumn1,
41
+ CoinIndexedVector * spareColumn2);
42
+ /// For quadratic or funny nonlinearities
43
+ int pivotColumnOldMethod(CoinIndexedVector * updates,
44
+ CoinIndexedVector * spareRow1,
45
+ CoinIndexedVector * spareRow2,
46
+ CoinIndexedVector * spareColumn1,
47
+ CoinIndexedVector * spareColumn2);
48
+ /// Just update djs
49
+ void justDjs(CoinIndexedVector * updates,
50
+ CoinIndexedVector * spareRow2,
51
+ CoinIndexedVector * spareColumn1,
52
+ CoinIndexedVector * spareColumn2);
53
+ /// Update djs doing partial pricing (dantzig)
54
+ int partialPricing(CoinIndexedVector * updates,
55
+ CoinIndexedVector * spareRow2,
56
+ int numberWanted,
57
+ int numberLook);
58
+ /// Update djs, weights for Devex using djs
59
+ void djsAndDevex(CoinIndexedVector * updates,
60
+ CoinIndexedVector * spareRow2,
61
+ CoinIndexedVector * spareColumn1,
62
+ CoinIndexedVector * spareColumn2);
63
+ /// Update djs, weights for Steepest using djs
64
+ void djsAndSteepest(CoinIndexedVector * updates,
65
+ CoinIndexedVector * spareRow2,
66
+ CoinIndexedVector * spareColumn1,
67
+ CoinIndexedVector * spareColumn2);
68
+ /// Update djs, weights for Devex using pivot row
69
+ void djsAndDevex2(CoinIndexedVector * updates,
70
+ CoinIndexedVector * spareRow2,
71
+ CoinIndexedVector * spareColumn1,
72
+ CoinIndexedVector * spareColumn2);
73
+ /// Update djs, weights for Steepest using pivot row
74
+ void djsAndSteepest2(CoinIndexedVector * updates,
75
+ CoinIndexedVector * spareRow2,
76
+ CoinIndexedVector * spareColumn1,
77
+ CoinIndexedVector * spareColumn2);
78
+ /// Update weights for Devex
79
+ void justDevex(CoinIndexedVector * updates,
80
+ CoinIndexedVector * spareRow2,
81
+ CoinIndexedVector * spareColumn1,
82
+ CoinIndexedVector * spareColumn2);
83
+ /// Update weights for Steepest
84
+ void justSteepest(CoinIndexedVector * updates,
85
+ CoinIndexedVector * spareRow2,
86
+ CoinIndexedVector * spareColumn1,
87
+ CoinIndexedVector * spareColumn2);
88
+ /// Updates two arrays for steepest
89
+ void transposeTimes2(const CoinIndexedVector * pi1, CoinIndexedVector * dj1,
90
+ const CoinIndexedVector * pi2, CoinIndexedVector * dj2,
91
+ CoinIndexedVector * spare, double scaleFactor);
92
+
93
+ /// Updates weights - part 1 - also checks accuracy
94
+ virtual void updateWeights(CoinIndexedVector * input);
95
+
96
+ /// Checks accuracy - just for debug
97
+ void checkAccuracy(int sequence, double relativeTolerance,
98
+ CoinIndexedVector * rowArray1,
99
+ CoinIndexedVector * rowArray2);
100
+
101
+ /// Initialize weights
102
+ void initializeWeights();
103
+
104
+ /** Save weights - this may initialize weights as well
105
+ mode is -
106
+ 1) before factorization
107
+ 2) after factorization
108
+ 3) just redo infeasibilities
109
+ 4) restore weights
110
+ 5) at end of values pass (so need initialization)
111
+ */
112
+ virtual void saveWeights(ClpSimplex * model, int mode);
113
+ /// Gets rid of last update
114
+ virtual void unrollWeights();
115
+ /// Gets rid of all arrays
116
+ virtual void clearArrays();
117
+ /// Returns true if would not find any column
118
+ virtual bool looksOptimal() const;
119
+ /// Called when maximum pivots changes
120
+ virtual void maximumPivotsChanged();
121
+ //@}
122
+
123
+ /**@name gets and sets */
124
+ //@{
125
+ /// Mode
126
+ inline int mode() const {
127
+ return mode_;
128
+ }
129
+ /** Returns number of extra columns for sprint algorithm - 0 means off.
130
+ Also number of iterations before recompute
131
+ */
132
+ virtual int numberSprintColumns(int & numberIterations) const;
133
+ /// Switch off sprint idea
134
+ virtual void switchOffSprint();
135
+
136
+ //@}
137
+
138
+ /** enums for persistence
139
+ */
140
+ enum Persistence {
141
+ normal = 0x00, // create (if necessary) and destroy
142
+ keep = 0x01 // create (if necessary) and leave
143
+ };
144
+
145
+ ///@name Constructors and destructors
146
+ //@{
147
+ /** Default Constructor
148
+ 0 is exact devex, 1 full steepest, 2 is partial exact devex
149
+ 3 switches between 0 and 2 depending on factorization
150
+ 4 starts as partial dantzig/devex but then may switch between 0 and 2.
151
+ By partial exact devex is meant that the weights are updated as normal
152
+ but only part of the nonbasic variables are scanned.
153
+ This can be faster on very easy problems.
154
+ */
155
+ ClpPrimalColumnSteepest(int mode = 3);
156
+
157
+ /// Copy constructor
158
+ ClpPrimalColumnSteepest(const ClpPrimalColumnSteepest & rhs);
159
+
160
+ /// Assignment operator
161
+ ClpPrimalColumnSteepest & operator=(const ClpPrimalColumnSteepest& rhs);
162
+
163
+ /// Destructor
164
+ virtual ~ClpPrimalColumnSteepest ();
165
+
166
+ /// Clone
167
+ virtual ClpPrimalColumnPivot * clone(bool copyData = true) const;
168
+
169
+ //@}
170
+
171
+ ///@name Private functions to deal with devex
172
+ /** reference would be faster using ClpSimplex's status_,
173
+ but I prefer to keep modularity.
174
+ */
175
+ inline bool reference(int i) const {
176
+ return ((reference_[i>>5] >> (i & 31)) & 1) != 0;
177
+ }
178
+ inline void setReference(int i, bool trueFalse) {
179
+ unsigned int & value = reference_[i>>5];
180
+ int bit = i & 31;
181
+ if (trueFalse)
182
+ value |= (1 << bit);
183
+ else
184
+ value &= ~(1 << bit);
185
+ }
186
+ /// Set/ get persistence
187
+ inline void setPersistence(Persistence life) {
188
+ persistence_ = life;
189
+ }
190
+ inline Persistence persistence() const {
191
+ return persistence_ ;
192
+ }
193
+
194
+ //@}
195
+ //---------------------------------------------------------------------------
196
+
197
+ private:
198
+ ///@name Private member data
199
+ // Update weight
200
+ double devex_;
201
+ /// weight array
202
+ double * weights_;
203
+ /// square of infeasibility array (just for infeasible columns)
204
+ CoinIndexedVector * infeasible_;
205
+ /// alternate weight array (so we can unroll)
206
+ CoinIndexedVector * alternateWeights_;
207
+ /// save weight array (so we can use checkpoint)
208
+ double * savedWeights_;
209
+ // Array for exact devex to say what is in reference framework
210
+ unsigned int * reference_;
211
+ /** Status
212
+ 0) Normal
213
+ -1) Needs initialization
214
+ 1) Weights are stored by sequence number
215
+ */
216
+ int state_;
217
+ /**
218
+ 0 is exact devex, 1 full steepest, 2 is partial exact devex
219
+ 3 switches between 0 and 2 depending on factorization
220
+ 4 starts as partial dantzig/devex but then may switch between 0 and 2.
221
+ 5 is always partial dantzig
222
+ By partial exact devex is meant that the weights are updated as normal
223
+ but only part of the nonbasic variables are scanned.
224
+ This can be faster on very easy problems.
225
+
226
+ New dubious option is >=10 which does mini-sprint
227
+
228
+ */
229
+ int mode_;
230
+ /// Life of weights
231
+ Persistence persistence_;
232
+ /// Number of times switched from partial dantzig to 0/2
233
+ int numberSwitched_;
234
+ // This is pivot row (or pivot sequence round re-factorization)
235
+ int pivotSequence_;
236
+ // This is saved pivot sequence
237
+ int savedPivotSequence_;
238
+ // This is saved outgoing variable
239
+ int savedSequenceOut_;
240
+ // Iteration when last rectified
241
+ int lastRectified_;
242
+ // Size of factorization at invert (used to decide algorithm)
243
+ int sizeFactorization_;
244
+ //@}
245
+ };
246
+
247
+ #endif
@@ -0,0 +1,155 @@
1
+ /* $Id: ClpQuadraticObjective.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 ClpQuadraticObjective_H
7
+ #define ClpQuadraticObjective_H
8
+
9
+ #include "ClpObjective.hpp"
10
+ #include "CoinPackedMatrix.hpp"
11
+
12
+ //#############################################################################
13
+
14
+ /** Quadratic Objective Class
15
+
16
+ */
17
+
18
+ class ClpQuadraticObjective : public ClpObjective {
19
+
20
+ public:
21
+
22
+ ///@name Stuff
23
+ //@{
24
+
25
+ /** Returns gradient. If Quadratic then solution may be NULL,
26
+ also returns an offset (to be added to current one)
27
+ If refresh is false then uses last solution
28
+ Uses model for scaling
29
+ includeLinear 0 - no, 1 as is, 2 as feasible
30
+ */
31
+ virtual double * gradient(const ClpSimplex * model,
32
+ const double * solution, double & offset, bool refresh,
33
+ int includeLinear = 2);
34
+ /// Resize objective
35
+ /** Returns reduced gradient.Returns an offset (to be added to current one).
36
+ */
37
+ virtual double reducedGradient(ClpSimplex * model, double * region,
38
+ bool useFeasibleCosts);
39
+ /** Returns step length which gives minimum of objective for
40
+ solution + theta * change vector up to maximum theta.
41
+
42
+ arrays are numberColumns+numberRows
43
+ Also sets current objective, predicted and at maximumTheta
44
+ */
45
+ virtual double stepLength(ClpSimplex * model,
46
+ const double * solution,
47
+ const double * change,
48
+ double maximumTheta,
49
+ double & currentObj,
50
+ double & predictedObj,
51
+ double & thetaObj);
52
+ /// Return objective value (without any ClpModel offset) (model may be NULL)
53
+ virtual double objectiveValue(const ClpSimplex * model, const double * solution) const ;
54
+ virtual void resize(int newNumberColumns) ;
55
+ /// Delete columns in objective
56
+ virtual void deleteSome(int numberToDelete, const int * which) ;
57
+ /// Scale objective
58
+ virtual void reallyScale(const double * columnScale) ;
59
+ /** Given a zeroed array sets nonlinear columns to 1.
60
+ Returns number of nonlinear columns
61
+ */
62
+ virtual int markNonlinear(char * which);
63
+
64
+ //@}
65
+
66
+
67
+ ///@name Constructors and destructors
68
+ //@{
69
+ /// Default Constructor
70
+ ClpQuadraticObjective();
71
+
72
+ /// Constructor from objective
73
+ ClpQuadraticObjective(const double * linearObjective, int numberColumns,
74
+ const CoinBigIndex * start,
75
+ const int * column, const double * element,
76
+ int numberExtendedColumns_ = -1);
77
+
78
+ /** Copy constructor .
79
+ If type is -1 then make sure half symmetric,
80
+ if +1 then make sure full
81
+ */
82
+ ClpQuadraticObjective(const ClpQuadraticObjective & rhs, int type = 0);
83
+ /** Subset constructor. Duplicates are allowed
84
+ and order is as given.
85
+ */
86
+ ClpQuadraticObjective (const ClpQuadraticObjective &rhs, int numberColumns,
87
+ const int * whichColumns) ;
88
+
89
+ /// Assignment operator
90
+ ClpQuadraticObjective & operator=(const ClpQuadraticObjective& rhs);
91
+
92
+ /// Destructor
93
+ virtual ~ClpQuadraticObjective ();
94
+
95
+ /// Clone
96
+ virtual ClpObjective * clone() const;
97
+ /** Subset clone. Duplicates are allowed
98
+ and order is as given.
99
+ */
100
+ virtual ClpObjective * subsetClone (int numberColumns,
101
+ const int * whichColumns) const;
102
+
103
+ /** Load up quadratic objective. This is stored as a CoinPackedMatrix */
104
+ void loadQuadraticObjective(const int numberColumns,
105
+ const CoinBigIndex * start,
106
+ const int * column, const double * element,
107
+ int numberExtendedColumns = -1);
108
+ void loadQuadraticObjective ( const CoinPackedMatrix& matrix);
109
+ /// Get rid of quadratic objective
110
+ void deleteQuadraticObjective();
111
+ //@}
112
+ ///@name Gets and sets
113
+ //@{
114
+ /// Quadratic objective
115
+ inline CoinPackedMatrix * quadraticObjective() const {
116
+ return quadraticObjective_;
117
+ }
118
+ /// Linear objective
119
+ inline double * linearObjective() const {
120
+ return objective_;
121
+ }
122
+ /// Length of linear objective which could be bigger
123
+ inline int numberExtendedColumns() const {
124
+ return numberExtendedColumns_;
125
+ }
126
+ /// Number of columns in quadratic objective
127
+ inline int numberColumns() const {
128
+ return numberColumns_;
129
+ }
130
+ /// If a full or half matrix
131
+ inline bool fullMatrix() const {
132
+ return fullMatrix_;
133
+ }
134
+ //@}
135
+
136
+ //---------------------------------------------------------------------------
137
+
138
+ private:
139
+ ///@name Private member data
140
+ /// Quadratic objective
141
+ CoinPackedMatrix * quadraticObjective_;
142
+ /// Objective
143
+ double * objective_;
144
+ /// Gradient
145
+ double * gradient_;
146
+ /// Useful to have number of columns about
147
+ int numberColumns_;
148
+ /// Also length of linear objective which could be bigger
149
+ int numberExtendedColumns_;
150
+ /// True if full symmetric matrix, false if half
151
+ bool fullMatrix_;
152
+ //@}
153
+ };
154
+
155
+ #endif