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,427 @@
1
+ // LAST EDIT:
2
+ //-----------------------------------------------------------------------------
3
+ // name: Mixed Integer Rounding Cut Generator
4
+ // authors: Joao Goncalves (jog7@lehigh.edu)
5
+ // Laszlo Ladanyi (ladanyi@us.ibm.com)
6
+ // date: August 11, 2004
7
+ //-----------------------------------------------------------------------------
8
+ // Copyright (C) 2004, International Business Machines Corporation and others.
9
+ // All Rights Reserved.
10
+ // This code is published under the Eclipse Public License.
11
+
12
+ #ifndef CglMixedIntegerRounding2_H
13
+ #define CglMixedIntegerRounding2_H
14
+
15
+ #include <iostream>
16
+ #include <fstream>
17
+ //#include <vector>
18
+
19
+ #include "CoinError.hpp"
20
+
21
+ #include "CglCutGenerator.hpp"
22
+ #include "CoinIndexedVector.hpp"
23
+
24
+ //=============================================================================
25
+
26
+ #ifndef CGL_DEBUG
27
+ #define CGL_DEBUG 0
28
+ #endif
29
+
30
+ //=============================================================================
31
+
32
+ // Class to store variable upper bounds (VUB)
33
+ class CglMixIntRoundVUB2
34
+ {
35
+ // Variable upper bounds have the form x_j <= a y_j, where x_j is
36
+ // a continuous variable and y_j is an integer variable
37
+
38
+ protected:
39
+ int var_; // The index of y_j
40
+ double val_; // The value of a
41
+
42
+ public:
43
+ // Default constructor
44
+ CglMixIntRoundVUB2() : var_(-1), val_(-1) {}
45
+
46
+ // Copy constructor
47
+ CglMixIntRoundVUB2(const CglMixIntRoundVUB2& source) {
48
+ var_ = source.var_;
49
+ val_ = source.val_;
50
+ }
51
+
52
+ // Assignment operator
53
+ CglMixIntRoundVUB2& operator=(const CglMixIntRoundVUB2& rhs) {
54
+ if (this != &rhs) {
55
+ var_ = rhs.var_;
56
+ val_ = rhs.val_;
57
+ }
58
+ return *this;
59
+ }
60
+
61
+ // Destructor
62
+ ~CglMixIntRoundVUB2() {}
63
+
64
+ // Query and set functions
65
+ int getVar() const { return var_; }
66
+ double getVal() const { return val_; }
67
+ void setVar(const int v) { var_ = v; }
68
+ void setVal(const double v) { val_ = v; }
69
+ };
70
+
71
+ //=============================================================================
72
+
73
+ // Class to store variable lower bounds (VLB).
74
+ // It is the same as the class to store variable upper bounds
75
+ typedef CglMixIntRoundVUB2 CglMixIntRoundVLB2;
76
+
77
+ //=============================================================================
78
+
79
+ /** Mixed Integer Rounding Cut Generator Class */
80
+
81
+ // Reference:
82
+ // Hugues Marchand and Laurence A. Wolsey
83
+ // Aggregation and Mixed Integer Rounding to Solve MIPs
84
+ // Operations Research, 49(3), May-June 2001.
85
+ // Also published as CORE Dicusion Paper 9839, June 1998.
86
+
87
+ class CglMixedIntegerRounding2 : public CglCutGenerator {
88
+
89
+ friend void CglMixedIntegerRounding2UnitTest(const OsiSolverInterface * siP,
90
+ const std::string mpdDir);
91
+
92
+
93
+ private:
94
+ //---------------------------------------------------------------------------
95
+ // Enumeration constants that describe the various types of rows
96
+ enum RowType {
97
+ // The row type of this row is NOT defined yet.
98
+ ROW_UNDEFINED,
99
+ /** After the row is flipped to 'L', the row has exactly two variables:
100
+ one is negative binary and the other is a continous,
101
+ and the RHS is zero.*/
102
+ ROW_VARUB,
103
+ /** After the row is flipped to 'L', the row has exactly two variables:
104
+ one is positive binary and the other is a continous,
105
+ and the RHS is zero.*/
106
+ ROW_VARLB,
107
+ /** The row sense is 'E', the row has exactly two variables:
108
+ one is binary and the other is a continous, and the RHS is zero.*/
109
+ ROW_VAREQ,
110
+ // The row contains continuous and integer variables;
111
+ // the total number of variables is at least 2
112
+ ROW_MIX,
113
+ // The row contains only continuous variables
114
+ ROW_CONT,
115
+ // The row contains only integer variables
116
+ ROW_INT,
117
+ // The row contains other types of rows
118
+ ROW_OTHER
119
+ };
120
+
121
+
122
+ public:
123
+
124
+ /**@name Generate Cuts */
125
+ //@{
126
+ /** Generate Mixed Integer Rounding cuts for the model data
127
+ contained in si. The generated cuts are inserted
128
+ in the collection of cuts cs.
129
+ */
130
+ virtual void generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
131
+ const CglTreeInfo info = CglTreeInfo());
132
+ //@}
133
+
134
+ //---------------------------------------------------------------------------
135
+ /**@name Constructors and destructors */
136
+ //@{
137
+ /// Default constructor
138
+ CglMixedIntegerRounding2 ();
139
+
140
+ /// Alternate Constructor
141
+ CglMixedIntegerRounding2 (const int maxaggr,
142
+ const bool multiply,
143
+ const int criterion,
144
+ const int preproc = -1);
145
+
146
+ /// Copy constructor
147
+ CglMixedIntegerRounding2 (
148
+ const CglMixedIntegerRounding2 &);
149
+
150
+ /// Clone
151
+ virtual CglCutGenerator * clone() const;
152
+
153
+ /// Assignment operator
154
+ CglMixedIntegerRounding2 &
155
+ operator=(
156
+ const CglMixedIntegerRounding2& rhs);
157
+
158
+ /// Destructor
159
+ virtual
160
+ ~CglMixedIntegerRounding2 ();
161
+ /// This can be used to refresh any inforamtion
162
+ virtual void refreshSolver(OsiSolverInterface * solver);
163
+ /// Create C++ lines to get to current state
164
+ virtual std::string generateCpp( FILE * fp);
165
+ //@}
166
+
167
+ //---------------------------------------------------------------------------
168
+ /**@name Set and get methods */
169
+ //@{
170
+ /// Set MAXAGGR_
171
+ inline void setMAXAGGR_ (int maxaggr) {
172
+ if (maxaggr > 0) {
173
+ MAXAGGR_ = maxaggr;
174
+ }
175
+ else {
176
+ throw CoinError("Unallowable value. maxaggr must be > 0",
177
+ "gutsOfConstruct","CglMixedIntegerRounding2");
178
+ }
179
+ }
180
+
181
+ /// Get MAXAGGR_
182
+ inline int getMAXAGGR_ () const { return MAXAGGR_; }
183
+
184
+ /// Set MULTIPLY_
185
+ inline void setMULTIPLY_ (bool multiply) { MULTIPLY_ = multiply; }
186
+
187
+ /// Get MULTIPLY_
188
+ inline bool getMULTIPLY_ () const { return MULTIPLY_; }
189
+
190
+ /// Set CRITERION_
191
+ inline void setCRITERION_ (int criterion) {
192
+ if ((criterion >= 1) && (criterion <= 3)) {
193
+ CRITERION_ = criterion;
194
+ }
195
+ else {
196
+ throw CoinError("Unallowable value. criterion must be 1, 2 or 3",
197
+ "gutsOfConstruct","CglMixedIntegerRounding2");
198
+ }
199
+ }
200
+
201
+ /// Get CRITERION_
202
+ inline int getCRITERION_ () const { return CRITERION_; }
203
+
204
+ /// Set doPreproc
205
+ void setDoPreproc(int value);
206
+ /// Get doPreproc
207
+ bool getDoPreproc() const;
208
+ //@}
209
+
210
+ private:
211
+ //--------------------------------------------------------------------------
212
+ // Private member methods
213
+
214
+ // Construct
215
+ void gutsOfConstruct ( const int maxaggr,
216
+ const bool multiply,
217
+ const int criterion,
218
+ const int preproc);
219
+
220
+ // Delete
221
+ void gutsOfDelete();
222
+
223
+ // Copy
224
+ void gutsOfCopy (const CglMixedIntegerRounding2& rhs);
225
+
226
+ // Do preprocessing.
227
+ // It determines the type of each row. It also identifies the variable
228
+ // upper bounds and variable lower bounds.
229
+ // It may change sense and RHS for ranged rows
230
+ void mixIntRoundPreprocess(const OsiSolverInterface& si);
231
+
232
+ // Determine the type of a given row.
233
+ RowType determineRowType(//const OsiSolverInterface& si,
234
+ const int rowLen, const int* ind,
235
+ const double* coef, const char sense,
236
+ const double rhs) const;
237
+
238
+ // Generate MIR cuts
239
+ void generateMirCuts( const OsiSolverInterface& si,
240
+ const double* xlp,
241
+ const double* colUpperBound,
242
+ const double* colLowerBound,
243
+ const CoinPackedMatrix& matrixByRow,
244
+ const double* LHS,
245
+ //const double* coefByRow,
246
+ //const int* colInds,
247
+ //const int* rowStarts,
248
+ //const CoinPackedMatrix& matrixByCol,
249
+ const double* coefByCol,
250
+ const int* rowInds,
251
+ const int* colStarts,
252
+ OsiCuts& cs ) const;
253
+
254
+ // Copy row selected to CoinIndexedVector
255
+ void copyRowSelected( const int iAggregate,
256
+ const int rowSelected,
257
+ CoinIndexedVector& setRowsAggregated,
258
+ int* listRowsAggregated,
259
+ double* xlpExtra,
260
+ const char sen,
261
+ const double rhs,
262
+ const double lhs,
263
+ const CoinPackedMatrix& matrixByRow,
264
+ CoinIndexedVector& rowToAggregate,
265
+ double& rhsToAggregate) const;
266
+
267
+ // Select a row to aggregate
268
+ bool selectRowToAggregate( //const OsiSolverInterface& si,
269
+ const CoinIndexedVector& rowAggregated,
270
+ const double* colUpperBound,
271
+ const double* colLowerBound,
272
+ const CoinIndexedVector& setRowsAggregated,
273
+ const double* xlp, const double* coefByCol,
274
+ const int* rowInds, const int* colStarts,
275
+ int& rowSelected,
276
+ int& colSelected ) const;
277
+
278
+ // Aggregation heuristic.
279
+ // Combines one or more rows of the original matrix
280
+ void aggregateRow( const int colSelected,
281
+ CoinIndexedVector& rowToAggregate, double rhs,
282
+ CoinIndexedVector& rowAggregated,
283
+ double& rhsAggregated ) const;
284
+
285
+ // Choose the bound substitution based on the criteria defined by the user
286
+ inline bool isLowerSubst(const double inf,
287
+ const double aj,
288
+ const double xlp,
289
+ const double LB,
290
+ const double UB) const;
291
+
292
+ // Bound substitution heuristic
293
+ bool boundSubstitution( const OsiSolverInterface& si,
294
+ const CoinIndexedVector& rowAggregated,
295
+ const double* xlp,
296
+ const double* xlpExtra,
297
+ const double* colUpperBound,
298
+ const double* colLowerBound,
299
+ CoinIndexedVector& mixedKnapsack,
300
+ double& rhsMixedKnapsack, double& sStar,
301
+ CoinIndexedVector& contVariablesInS ) const;
302
+
303
+ // c-MIR separation heuristic
304
+ bool cMirSeparation ( const OsiSolverInterface& si,
305
+ const CoinPackedMatrix& matrixByRow,
306
+ const CoinIndexedVector& rowAggregated,
307
+ const int* listRowsAggregated,
308
+ const char* sense, const double* RHS,
309
+ //const double* coefByRow,
310
+ //const int* colInds, const int* rowStarts,
311
+ const double* xlp, const double sStar,
312
+ const double* colUpperBound,
313
+ const double* colLowerBound,
314
+ const CoinIndexedVector& mixedKnapsack,
315
+ const double& rhsMixedKnapsack,
316
+ const CoinIndexedVector& contVariablesInS,
317
+ CoinIndexedVector * workVector,
318
+ OsiRowCut& flowCut ) const;
319
+
320
+ // function to create one c-MIR inequality
321
+ void cMirInequality( const int numInt,
322
+ const double delta,
323
+ const double numeratorBeta,
324
+ const int *knapsackIndices,
325
+ const double* knapsackElements,
326
+ const double* xlp,
327
+ const double sStar,
328
+ const double* colUpperBound,
329
+ const CoinIndexedVector& setC,
330
+ CoinIndexedVector& cMIR,
331
+ double& rhscMIR,
332
+ double& sCoef,
333
+ double& violation) const;
334
+
335
+ // function to compute G
336
+ inline double functionG( const double d, const double f ) const;
337
+
338
+ // function to print statistics (used only in debug mode)
339
+ void printStats(
340
+ std::ofstream & fout,
341
+ const bool hasCut,
342
+ const OsiSolverInterface& si,
343
+ const CoinIndexedVector& rowAggregated,
344
+ const double& rhsAggregated, const double* xlp,
345
+ const double* xlpExtra,
346
+ const int* listRowsAggregated,
347
+ const int* listColsSelected,
348
+ const int level,
349
+ const double* colUpperBound,
350
+ const double* colLowerBound ) const;
351
+
352
+
353
+ private:
354
+ //---------------------------------------------------------------------------
355
+ // Private member data
356
+
357
+ // Maximum number of rows to aggregate
358
+ int MAXAGGR_;
359
+ // Flag that indicates if an aggregated row is also multiplied by -1
360
+ bool MULTIPLY_;
361
+ // The criterion to use in the bound substitution
362
+ int CRITERION_;
363
+ // Tolerance used for numerical purposes
364
+ double EPSILON_;
365
+ /// There is no variable upper bound or variable lower bound defined
366
+ int UNDEFINED_;
367
+ // If violation of a cut is greater that this number, the cut is accepted
368
+ double TOLERANCE_;
369
+ /** Controls the preprocessing of the matrix to identify rows suitable for
370
+ cut generation.<UL>
371
+ <LI> -1: preprocess according to solver settings;
372
+ <LI> 0: Do preprocessing only if it has not yet been done;
373
+ <LI> 1: Do preprocessing.
374
+ </UL>
375
+ Default value: -1 **/
376
+ int doPreproc_;
377
+ // The number of rows of the problem.
378
+ int numRows_;
379
+ // The number columns of the problem.
380
+ int numCols_;
381
+ // Indicates whether preprocessing has been done.
382
+ bool doneInitPre_;
383
+ // The array of CglMixIntRoundVUB2s.
384
+ CglMixIntRoundVUB2* vubs_;
385
+ // The array of CglMixIntRoundVLB2s.
386
+ CglMixIntRoundVLB2* vlbs_;
387
+ // Array with the row types of the rows in the model.
388
+ RowType* rowTypes_;
389
+ // The indices of the rows of the initial matrix
390
+ int* indRows_;
391
+ // The number of rows of type ROW_MIX
392
+ int numRowMix_;
393
+ // The indices of the rows of type ROW_MIX
394
+ int* indRowMix_;
395
+ // The number of rows of type ROW_CONT
396
+ int numRowCont_;
397
+ // The indices of the rows of type ROW_CONT
398
+ int* indRowCont_;
399
+ // The number of rows of type ROW_INT
400
+ int numRowInt_;
401
+ // The indices of the rows of type ROW_INT
402
+ int* indRowInt_;
403
+ // The number of rows of type ROW_CONT that have at least one variable
404
+ // with variable upper or lower bound
405
+ int numRowContVB_;
406
+ // The indices of the rows of type ROW_CONT that have at least one variable
407
+ // with variable upper or lower bound
408
+ int* indRowContVB_;
409
+ // If integer - for speed
410
+ char * integerType_;
411
+ // Sense of rows (modified if ranges)
412
+ char * sense_;
413
+ // RHS of rows (modified if ranges)
414
+ double * RHS_;
415
+
416
+ };
417
+
418
+ //#############################################################################
419
+ // A function that tests the methods in the CglMixedIntegerRounding2 class. The
420
+ // only reason for it not to be a member method is that this way it doesn't
421
+ // have to be compiled into the library. And that's a gain, because the
422
+ // library should be compiled with optimization on, but this method should be
423
+ // compiled with debugging.
424
+ void CglMixedIntegerRounding2UnitTest(const OsiSolverInterface * siP,
425
+ const std::string mpdDir);
426
+
427
+ #endif
@@ -0,0 +1,160 @@
1
+ // $Id: CglOddHole.hpp 1119 2013-04-06 20:24:18Z stefan $
2
+ // Copyright (C) 2000, 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 CglOddHole_H
7
+ #define CglOddHole_H
8
+
9
+ #include <string>
10
+
11
+ #include "CglCutGenerator.hpp"
12
+
13
+ /** Odd Hole Cut Generator Class */
14
+ class CglOddHole : public CglCutGenerator {
15
+ friend void CglOddHoleUnitTest(const OsiSolverInterface * siP,
16
+ const std::string mpdDir );
17
+
18
+ public:
19
+
20
+
21
+ /**@name Generate Cuts */
22
+ //@{
23
+ /** Generate odd hole cuts for the model of the solver interface, si.
24
+ This looks at all rows of type sum x(i) <= 1 (or == 1) (x 0-1)
25
+ and sees if there is an odd cycle cut. See Grotschel, Lovasz
26
+ and Schrijver (1988) for method.
27
+ This is then lifted by using the corresponding Chvatal cut i.e.
28
+ Take all rows in cycle and add them together. RHS will be odd so
29
+ weaken all odd coefficients so 1.0 goes to 0.0 etc - then
30
+ constraint is sum even(j)*x(j) <= odd which can be replaced by
31
+ sum (even(j)/2)*x(j) <= (odd-1.0)/2.
32
+ A similar cut can be generated for sum x(i) >= 1.
33
+
34
+ Insert the generated cuts into OsiCut, cs.
35
+
36
+ This is only done for rows with unsatisfied 0-1 variables. If there
37
+ are many of these it will be slow. Improvements would do a
38
+ randomized subset and also speed up shortest path algorithm used.
39
+
40
+ */
41
+ virtual void generateCuts( const OsiSolverInterface & si, OsiCuts & cs,
42
+ const CglTreeInfo info = CglTreeInfo());
43
+ //@}
44
+
45
+ /**@name Create Row List */
46
+ //@{
47
+ /// Create a list of rows which might yield cuts
48
+ /// this is to speed up process
49
+ /// The possible parameter is a list to cut down search
50
+ void createRowList( const OsiSolverInterface & si,
51
+ const int * possible=NULL);
52
+ /// This version passes in a list - 1 marks possible
53
+ void createRowList(int numberRows, const int * whichRow);
54
+ //@}
55
+
56
+ /**@name Create Clique List */
57
+ //@{
58
+ /// Create a list of extra row cliques which may not be in matrix
59
+ /// At present these are classical cliques
60
+ void createCliqueList(int numberCliques, const int * cliqueStart,
61
+ const int * cliqueMember);
62
+ //@}
63
+
64
+ /**@name Number Possibilities */
65
+ //@{
66
+ /// Returns how many rows might give odd hole cuts
67
+ int numberPossible();
68
+ //@}
69
+ /**@name Gets and Sets */
70
+ //@{
71
+ /// Minimum violation
72
+ double getMinimumViolation() const;
73
+ void setMinimumViolation(double value);
74
+ /// Minimum violation per entry
75
+ double getMinimumViolationPer() const;
76
+ void setMinimumViolationPer(double value);
77
+ /// Maximum number of entries in a cut
78
+ int getMaximumEntries() const;
79
+ void setMaximumEntries(int value);
80
+ //@}
81
+
82
+ /**@name Constructors and destructors */
83
+ //@{
84
+ /// Default constructor
85
+ CglOddHole ();
86
+
87
+ /// Copy constructor
88
+ CglOddHole (
89
+ const CglOddHole &);
90
+
91
+ /// Clone
92
+ virtual CglCutGenerator * clone() const;
93
+
94
+ /// Assignment operator
95
+ CglOddHole &
96
+ operator=(
97
+ const CglOddHole& rhs);
98
+
99
+ /// Destructor
100
+ virtual
101
+ ~CglOddHole ();
102
+
103
+ /// This can be used to refresh any inforamtion
104
+ virtual void refreshSolver(OsiSolverInterface * solver);
105
+ //@}
106
+
107
+ private:
108
+
109
+ // Private member methods
110
+
111
+
112
+ /**@name Private methods */
113
+ //@{
114
+ /// Generate cuts from matrix copy and solution
115
+ /// If packed true then <=1 rows, otherwise >=1 rows.
116
+ void generateCuts(const OsiRowCutDebugger * debugger,
117
+ const CoinPackedMatrix & rowCopy,
118
+ const double * solution, const double * dj,
119
+ OsiCuts & cs, const int * suitableRow,
120
+ const int * fixedColumn,const CglTreeInfo info,
121
+ bool packed);
122
+ //@}
123
+
124
+ // Private member data
125
+
126
+ /**@name Private member data */
127
+ //@{
128
+ /// list of suitableRows
129
+ int * suitableRows_;
130
+ /// start of each clique
131
+ int * startClique_;
132
+ /// clique members
133
+ int * member_;
134
+ /// epsilon
135
+ double epsilon_;
136
+ /// 1-epsilon
137
+ double onetol_;
138
+ /// Minimum violation
139
+ double minimumViolation_;
140
+ /// Minimum violation per entry
141
+ double minimumViolationPer_;
142
+ /// Maximum number of entries in a cut
143
+ int maximumEntries_;
144
+ /// number of rows when suitability tested
145
+ int numberRows_;
146
+ /// number of cliques
147
+ int numberCliques_;
148
+ //@}
149
+ };
150
+
151
+ //#############################################################################
152
+ /** A function that tests the methods in the CglOddHole class. The
153
+ only reason for it not to be a member method is that this way it doesn't
154
+ have to be compiled into the library. And that's a gain, because the
155
+ library should be compiled with optimization on, but this method should be
156
+ compiled with debugging. */
157
+ void CglOddHoleUnitTest(const OsiSolverInterface * siP,
158
+ const std::string mpdDir );
159
+
160
+ #endif
@@ -0,0 +1,93 @@
1
+ // Name: CglParam.hpp
2
+ // Author: Francois Margot
3
+ // Tepper School of Business
4
+ // Carnegie Mellon University, Pittsburgh, PA 15213
5
+ // email: fmargot@andrew.cmu.edu
6
+ // Date: 11/24/06
7
+ //
8
+ // $Id: CglParam.hpp 1122 2013-04-06 20:39:53Z stefan $
9
+ //
10
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
11
+ //-----------------------------------------------------------------------------
12
+ // Copyright (C) 2006, Francois Margot and others. All Rights Reserved.
13
+
14
+ #ifndef CglParam_H
15
+ #define CglParam_H
16
+ #include "CglConfig.h"
17
+ #include "CoinFinite.hpp"
18
+ /** Class collecting parameters for all cut generators. Each generator
19
+ may have a derived class to add parameters. Each generator might
20
+ also set different default values for the parameters in CglParam. */
21
+
22
+ class CglParam {
23
+
24
+ public:
25
+
26
+ /**@name Public Set/get methods */
27
+ //@{
28
+
29
+ /** Set INFINIT */
30
+ virtual void setINFINIT(const double inf);
31
+ /** Get value of INFINIT */
32
+ inline double getINFINIT() const {return INFINIT;}
33
+
34
+ /** Set EPS */
35
+ virtual void setEPS(const double eps);
36
+ /** Get value of EPS */
37
+ inline double getEPS() const {return EPS;}
38
+
39
+ /** Set EPS_COEFF */
40
+ virtual void setEPS_COEFF(const double eps_c);
41
+ /** Get value of EPS_COEFF */
42
+ inline double getEPS_COEFF() const {return EPS_COEFF;}
43
+
44
+ /** Set MAX_SUPPORT */
45
+ virtual void setMAX_SUPPORT(const int max_s);
46
+ /** Get value of MAX_SUPPORT */
47
+ inline int getMAX_SUPPORT() const {return MAX_SUPPORT;}
48
+ //@}
49
+
50
+ /**@name Constructors and destructors */
51
+ //@{
52
+ /// Default constructor
53
+ CglParam(const double inf = COIN_DBL_MAX, const double eps = 1e-6,
54
+ const double eps_c = 1e-5, const int max_s = COIN_INT_MAX);
55
+
56
+ /// Copy constructor
57
+ CglParam(const CglParam&);
58
+
59
+ /// Clone
60
+ virtual CglParam* clone() const;
61
+
62
+ /// Assignment operator
63
+ CglParam& operator=(const CglParam &rhs);
64
+
65
+ /// Destructor
66
+ virtual ~CglParam();
67
+ //@}
68
+
69
+ protected:
70
+
71
+ // Protected member data
72
+
73
+ /**@name Protected member data */
74
+
75
+ //@{
76
+ // Value for infinity. Default: COIN_DBL_MAX.
77
+ double INFINIT;
78
+
79
+ // EPSILON for double comparisons. Default: 1e-6.
80
+ double EPS;
81
+
82
+ // Returned cuts do not have coefficients with absolute value smaller
83
+ // than EPS_COEFF. Default: 1e-5.
84
+ double EPS_COEFF;
85
+
86
+ /** Maximum number of non zero coefficients in a generated cut;
87
+ Default: COIN_INT_MAX */
88
+ int MAX_SUPPORT;
89
+ //@}
90
+
91
+ };
92
+
93
+ #endif