ruby-cbc 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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,448 @@
1
+ // Last edit: 4/20/07
2
+ //
3
+ // Name: CglRedSplit.hpp
4
+ // Author: Francois Margot
5
+ // Tepper School of Business
6
+ // Carnegie Mellon University, Pittsburgh, PA 15213
7
+ // email: fmargot@andrew.cmu.edu
8
+ // Date: 2/6/05
9
+ //
10
+ // $Id: CglRedSplit.hpp 1119 2013-04-06 20:24:18Z stefan $
11
+ //-----------------------------------------------------------------------------
12
+ // Copyright (C) 2005, Francois Margot and others. All Rights Reserved.
13
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
14
+
15
+ #ifndef CglRedSplit_H
16
+ #define CglRedSplit_H
17
+
18
+ #include "CglCutGenerator.hpp"
19
+ #include "CglRedSplitParam.hpp"
20
+
21
+ /** Gomory Reduce-and-Split Cut Generator Class; See method generateCuts().
22
+ Based on the paper by K. Anderson, G. Cornuejols, Yanjun Li,
23
+ "Reduce-and-Split Cuts: Improving the Performance of Mixed Integer
24
+ Gomory Cuts", Management Science 51 (2005). */
25
+
26
+ class CglRedSplit : public CglCutGenerator {
27
+
28
+ friend void CglRedSplitUnitTest(const OsiSolverInterface * siP,
29
+ const std::string mpdDir);
30
+ public:
31
+ /**@name generateCuts */
32
+ //@{
33
+ /** Generate Reduce-and-Split Mixed Integer Gomory cuts
34
+ for the model of the solver interface si.
35
+
36
+ Insert the generated cuts into OsiCuts cs.
37
+
38
+ Warning: This generator currently works only with the Lp solvers Clp or
39
+ Cplex9.0 or higher. It requires access to the optimal tableau and
40
+ optimal basis inverse and makes assumptions on the way slack variables
41
+ are added by the solver. The Osi implementations for Clp and Cplex
42
+ verify these assumptions.
43
+
44
+ When calling the generator, the solver interface si
45
+ must contain an optimized
46
+ problem and information related to the optimal basis must be available
47
+ through the OsiSolverInterface methods (si->optimalBasisIsAvailable()
48
+ must return 'true'). It is also essential that the integrality of
49
+ structural variable i can be obtained using si->isInteger(i).
50
+
51
+ Reduce-and-Split cuts are variants of Gomory cuts: Starting from
52
+ the current optimal tableau, linear combinations of the rows of
53
+ the current optimal simplex tableau are used for generating Gomory
54
+ cuts. The choice of the linear combinations is driven by the objective
55
+ of reducing the coefficients of the non basic continuous variables
56
+ in the resulting row.
57
+ Note that this generator might not be able to generate cuts for some
58
+ solutions violating integrality constraints.
59
+
60
+ */
61
+ virtual void generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
62
+ const CglTreeInfo info = CglTreeInfo());
63
+
64
+ /// Return true if needs optimal basis to do cuts (will return true)
65
+ virtual bool needsOptimalBasis() const;
66
+ //@}
67
+
68
+
69
+ /**@name Public Methods */
70
+ //@{
71
+
72
+ // Set the parameters to the values of the given CglRedSplitParam object.
73
+ void setParam(const CglRedSplitParam &source);
74
+ // Return the CglRedSplitParam object of the generator.
75
+ inline CglRedSplitParam getParam() const {return param;}
76
+
77
+ // Compute entries of low_is_lub and up_is_lub.
78
+ void compute_is_lub();
79
+
80
+ // Compute entries of is_integer.
81
+ void compute_is_integer();
82
+
83
+ /// Set given_optsol to the given optimal solution given_sol.
84
+ /// If given_optsol is set using this method,
85
+ /// the code will stop as soon as
86
+ /// a generated cut is violated by the given solution; exclusively
87
+ /// for debugging purposes.
88
+ void set_given_optsol(const double *given_sol, const int card_sol);
89
+
90
+ /// Print some of the data members
91
+ void print() const;
92
+
93
+ /// Print the current simplex tableau
94
+ void printOptTab(OsiSolverInterface *solver) const;
95
+
96
+ //@}
97
+
98
+ /**@name Public Methods (soon to be obsolete)*/
99
+ //@{
100
+ //************************************************************
101
+ // TO BE REMOVED
102
+ /** Set limit, the maximum number of non zero coefficients in generated cut;
103
+ Default: 50 */
104
+ void setLimit(int limit);
105
+ /** Get value of limit */
106
+ int getLimit() const;
107
+
108
+ /** Set away, the minimum distance from being integer used for selecting
109
+ rows for cut generation; all rows whose pivot variable should be
110
+ integer but is more than away from integrality will be selected;
111
+ Default: 0.05 */
112
+ void setAway(double value);
113
+ /// Get value of away
114
+ double getAway() const;
115
+ /** Set the value of LUB, value considered large for the absolute value of
116
+ a lower or upper bound on a variable;
117
+ Default: 1000 */
118
+ void setLUB(double value);
119
+ /** Get the value of LUB */
120
+ double getLUB() const;
121
+
122
+ /** Set the value of EPS, epsilon for double computations;
123
+ Default: 1e-7 */
124
+ void setEPS(double value);
125
+ /** Get the value of EPS */
126
+ double getEPS() const;
127
+
128
+ /** Set the value of EPS_COEFF, epsilon for values of coefficients;
129
+ Default: 1e-8 */
130
+ void setEPS_COEFF(double value);
131
+ /** Get the value of EPS_COEFF */
132
+ double getEPS_COEFF() const;
133
+
134
+ /** Set the value of EPS_COEFF_LUB, epsilon for values of coefficients for
135
+ variables with absolute value of lower or upper bound larger than LUB;
136
+ Default: 1e-13 */
137
+ void setEPS_COEFF_LUB(double value);
138
+ /** Get the value of EPS_COEFF_LUB */
139
+ double getEPS_COEFF_LUB() const;
140
+
141
+ /** Set the value of EPS_RELAX, value used for relaxing the right hand side
142
+ of each generated cut;
143
+ Default: 1e-8 */
144
+ void setEPS_RELAX(double value);
145
+ /** Get the value of EPS_RELAX */
146
+ double getEPS_RELAX() const;
147
+
148
+ /** Set the value of normIsZero, the threshold for considering a norm to be
149
+ 0; Default: 1e-5 */
150
+ void setNormIsZero(double value);
151
+ /** Get the value of normIsZero */
152
+ double getNormIsZero() const;
153
+
154
+ /** Set the value of minReduc, threshold for relative norm improvement for
155
+ performing a reduction; Default: 0.05 */
156
+ void setMinReduc(double value);
157
+ /// Get the value of minReduc
158
+ double getMinReduc() const;
159
+
160
+ /** Set the maximum allowed value for (mTab * mTab * CoinMax(mTab, nTab)) where
161
+ mTab is the number of rows used in the combinations and nTab is the
162
+ number of continuous non basic variables. The work of the generator is
163
+ proportional to (mTab * mTab * CoinMax(mTab, nTab)). Reducing the value of
164
+ maxTab makes the generator faster, but weaker. Default: 1e7. */
165
+ void setMaxTab(double value);
166
+ /// Get the value of maxTab
167
+ double getMaxTab() const;
168
+ // END TO BE REMOVED
169
+ //************************************************************
170
+
171
+ //@}
172
+
173
+ /**@name Constructors and destructors */
174
+ //@{
175
+ /// Default constructor
176
+ CglRedSplit();
177
+
178
+ /// Constructor with specified parameters
179
+ CglRedSplit(const CglRedSplitParam &RS_param);
180
+
181
+ /// Copy constructor
182
+ CglRedSplit (const CglRedSplit &);
183
+
184
+ /// Clone
185
+ virtual CglCutGenerator * clone() const;
186
+
187
+ /// Assignment operator
188
+ CglRedSplit &
189
+ operator=(
190
+ const CglRedSplit& rhs);
191
+
192
+ /// Destructor
193
+ virtual
194
+ ~CglRedSplit ();
195
+ /// Create C++ lines to get to current state
196
+ virtual std::string generateCpp( FILE * fp);
197
+ //@}
198
+
199
+ private:
200
+
201
+ // Private member methods
202
+
203
+ /**@name Private member methods */
204
+
205
+ //@{
206
+
207
+ // Method generating the cuts after all CglRedSplit members are properly set.
208
+ void generateCuts(OsiCuts & cs);
209
+
210
+ /// Compute the fractional part of value, allowing for small error.
211
+ inline double rs_above_integer(double value);
212
+
213
+ /// Perform row r1 of pi := row r1 of pi - step * row r2 of pi.
214
+ void update_pi_mat(int r1, int r2, int step);
215
+
216
+ /// Perform row r1 of tab := row r1 of tab - step * row r2 of tab.
217
+ void update_redTab(int r1, int r2, int step);
218
+
219
+ /// Find optimal integer step for changing row r1 by adding to it a
220
+ /// multiple of another row r2.
221
+ void find_step(int r1, int r2, int *step,
222
+ double *reduc, double *norm);
223
+
224
+ /// Test if an ordered pair of rows yields a reduction. Perform the
225
+ /// reduction if it is acceptable.
226
+ int test_pair(int r1, int r2, double *norm);
227
+
228
+ /// Reduce rows of contNonBasicTab.
229
+ void reduce_contNonBasicTab();
230
+
231
+ /// Generate a row of the current LP tableau.
232
+ void generate_row(int index_row, double *row);
233
+
234
+ /// Generate a mixed integer Chvatal-Gomory cut, when all non basic
235
+ /// variables are non negative and at their lower bound.
236
+ int generate_cgcut(double *row, double *rhs);
237
+
238
+ /// Generate a mixed integer Chvatal-Gomory cut, when all non basic
239
+ /// variables are non negative and at their lower bound (different formula)
240
+ int generate_cgcut_2(int basic_ind, double *row, double *rhs);
241
+
242
+ /// Use multiples of the initial inequalities to cancel out the coefficients
243
+ /// of the slack variables.
244
+ void eliminate_slacks(double *row,
245
+ const double *elements,
246
+ const int *start,
247
+ const int *indices,
248
+ const int *rowLength,
249
+ const double *rhs, double *rowrhs);
250
+
251
+ /// Change the sign of the coefficients of the continuous non basic
252
+ /// variables at their upper bound.
253
+ void flip(double *row);
254
+
255
+ /// Change the sign of the coefficients of the continuous non basic
256
+ /// variables at their upper bound and do the translations restoring
257
+ /// the original bounds. Modify the right hand side
258
+ /// accordingly.
259
+ void unflip(double *row, double *rowrhs, double *slack_val);
260
+
261
+ /// Return the scale factor for the row.
262
+ /// Compute max_coeff: maximum absolute value of the coefficients.
263
+ /// Compute min_coeff: minimum absolute value of the coefficients
264
+ /// larger than EPS_COEFF.
265
+ /// Return -1 if max_coeff < EPS_COEFF or if max_coeff/min_coeff > MAXDYN
266
+ /// or MAXDYN_LUB (depending if the row has a non zero coeff. for a variable
267
+ /// with large lower/upper bound) */.
268
+ double row_scale_factor(double *row);
269
+
270
+ /// Generate the packed cut from the row representation.
271
+ int generate_packed_row(const double *xlp, double *row,
272
+ int *rowind, double *rowelem,
273
+ int *card_row, double & rhs);
274
+
275
+ /// Check that the generated cuts do not cut a given optimal solution.
276
+ void check_optsol(const int calling_place,
277
+ const double *xlp, const double *slack_val,
278
+ const int do_flip);
279
+
280
+ /// Check that the generated cuts do not cut a given optimal solution.
281
+ void check_optsol(const int calling_place,
282
+ const double *xlp, const double *slack_val,
283
+ const double *ck_row, const double ck_rhs,
284
+ const int cut_number, const int do_flip);
285
+
286
+ // Check that two vectors are different.
287
+ bool rs_are_different_vectors(const int *vect1,
288
+ const int *vect2,
289
+ const int dim);
290
+
291
+ // Check that two vectors are different.
292
+ bool rs_are_different_vectors(const double *vect1,
293
+ const double *vect2,
294
+ const int dim);
295
+
296
+ // Check that two matrices are different.
297
+ bool rs_are_different_matrices(const CoinPackedMatrix *mat1,
298
+ const CoinPackedMatrix *mat2,
299
+ const int nmaj,
300
+ const int nmin);
301
+ //@}
302
+
303
+
304
+ // Private member data
305
+
306
+ /**@name Private member data */
307
+
308
+ //@{
309
+
310
+ /// Object with CglRedSplitParam members.
311
+ CglRedSplitParam param;
312
+
313
+ /// Number of rows ( = number of slack variables) in the current LP.
314
+ int nrow;
315
+
316
+ /// Number of structural variables in the current LP.
317
+ int ncol;
318
+
319
+ /// Lower bounds for structural variables
320
+ const double *colLower;
321
+
322
+ /// Upper bounds for structural variables
323
+ const double *colUpper;
324
+
325
+ /// Lower bounds for constraints
326
+ const double *rowLower;
327
+
328
+ /// Upper bounds for constraints
329
+ const double *rowUpper;
330
+
331
+ /// Righ hand side for constraints (upper bound for ranged constraints).
332
+ const double *rowRhs;
333
+
334
+ /// Number of integer basic structural variables that are fractional in the
335
+ /// current lp solution (at least param.away_ from being integer).
336
+ int card_intBasicVar_frac;
337
+
338
+ /// Number of integer non basic structural variables in the
339
+ /// current lp solution.
340
+ int card_intNonBasicVar;
341
+
342
+ /// Number of continuous non basic variables (structural or slack) in the
343
+ /// current lp solution.
344
+ int card_contNonBasicVar;
345
+
346
+ /// Number of non basic variables (structural or slack) at their
347
+ /// upper bound in the current lp solution.
348
+ int card_nonBasicAtUpper;
349
+
350
+ /// Number of non basic variables (structural or slack) at their
351
+ /// lower bound in the current lp solution.
352
+ int card_nonBasicAtLower;
353
+
354
+ /// Characteristic vector for integer basic structural variables
355
+ /// with non integer value in the current lp solution.
356
+ int *cv_intBasicVar_frac;
357
+
358
+ /// List of integer structural basic variables
359
+ /// (in order of pivot in selected rows for cut generation).
360
+ int *intBasicVar_frac;
361
+
362
+ /// List of integer structural non basic variables.
363
+ int *intNonBasicVar;
364
+
365
+ /// List of continuous non basic variables (structural or slack).
366
+ // slacks are considered continuous (no harm if this is not the case).
367
+ int *contNonBasicVar;
368
+
369
+ /// List of non basic variables (structural or slack) at their
370
+ /// upper bound.
371
+ int *nonBasicAtUpper;
372
+
373
+ /// List of non basic variables (structural or slack) at their lower
374
+ /// bound.
375
+ int *nonBasicAtLower;
376
+
377
+ /// Number of rows in the reduced tableau (= card_intBasicVar_frac).
378
+ int mTab;
379
+
380
+ /// Number of columns in the reduced tableau (= card_contNonBasicVar)
381
+ int nTab;
382
+
383
+ /// Tableau of multipliers used to alter the rows used in generation.
384
+ /// Dimensions: mTab by mTab. Initially, pi_mat is the identity matrix.
385
+ int **pi_mat;
386
+
387
+ /// Current tableau for continuous non basic variables (structural or slack).
388
+ /// Only rows used for generation.
389
+ /// Dimensions: mTab by nTab.
390
+ double **contNonBasicTab;
391
+
392
+ /// Current tableau for integer non basic structural variables.
393
+ /// Only rows used for generation.
394
+ // Dimensions: mTab by card_intNonBasicVar.
395
+ double **intNonBasicTab;
396
+
397
+ /// Right hand side of the tableau.
398
+ /// Only rows used for generation.
399
+ double *rhsTab ;
400
+
401
+ /// Given optimal solution that should not be cut; only for debug.
402
+ const double *given_optsol;
403
+
404
+ /// Number of entries in given_optsol.
405
+ int card_given_optsol;
406
+
407
+ /// Characteristic vectors of structural integer variables or continuous
408
+ /// variables currently fixed to integer values.
409
+ int *is_integer;
410
+
411
+ /// Characteristic vector of the structural variables whose lower bound
412
+ /// in absolute value is larger than LUB.
413
+ int *low_is_lub;
414
+
415
+ /// Characteristic vector of the structural variables whose upper bound
416
+ /// in absolute value is larger than LUB.
417
+ int *up_is_lub;
418
+
419
+ /// Pointer on solver. Reset by each call to generateCuts().
420
+ OsiSolverInterface *solver;
421
+
422
+ /// Pointer on point to separate. Reset by each call to generateCuts().
423
+ const double *xlp;
424
+
425
+ /// Pointer on row activity. Reset by each call to generateCuts().
426
+ const double *rowActivity;
427
+
428
+ /// Pointer on column type. Reset by each call to generateCuts().
429
+ const char *colType;
430
+
431
+ /// Pointer on matrix of coefficient ordered by rows.
432
+ /// Reset by each call to generateCuts().
433
+ const CoinPackedMatrix *byRow;
434
+
435
+ //@}
436
+ };
437
+
438
+ //#############################################################################
439
+ /** A function that tests the methods in the CglRedSplit class. The
440
+ only reason for it not to be a member method is that this way it doesn't
441
+ have to be compiled into the library. And that's a gain, because the
442
+ library should be compiled with optimization on, but this method should be
443
+ compiled with debugging. */
444
+ void CglRedSplitUnitTest(const OsiSolverInterface * siP,
445
+ const std::string mpdDir );
446
+
447
+
448
+ #endif