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,324 @@
1
+ // Copyright (C) 2000, International Business Machines
2
+ // Corporation and others. All Rights Reserved.
3
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
4
+
5
+ #ifndef OsiColCut_H
6
+ #define OsiColCut_H
7
+
8
+ #include <string>
9
+
10
+ #include "CoinPackedVector.hpp"
11
+
12
+ #include "OsiCollections.hpp"
13
+ #include "OsiCut.hpp"
14
+
15
+ /** Column Cut Class
16
+
17
+ Column Cut Class has:
18
+ <ul>
19
+ <li>a sparse vector of column lower bounds
20
+ <li>a sparse vector of column upper bounds
21
+ </ul>
22
+ */
23
+ class OsiColCut : public OsiCut {
24
+ friend void OsiColCutUnitTest(const OsiSolverInterface * baseSiP,
25
+ const std::string & mpsDir);
26
+
27
+ public:
28
+
29
+ //----------------------------------------------------------------
30
+
31
+ /**@name Setting column bounds */
32
+ //@{
33
+ /// Set column lower bounds
34
+ inline void setLbs(
35
+ int nElements,
36
+ const int * colIndices,
37
+ const double * lbElements );
38
+
39
+ /// Set column lower bounds from a packed vector
40
+ inline void setLbs( const CoinPackedVector & lbs );
41
+
42
+ /// Set column upper bounds
43
+ inline void setUbs(
44
+ int nElements,
45
+ const int * colIndices,
46
+ const double * ubElements );
47
+
48
+ /// Set column upper bounds from a packed vector
49
+ inline void setUbs( const CoinPackedVector & ubs );
50
+ //@}
51
+
52
+ //----------------------------------------------------------------
53
+
54
+ /**@name Getting column bounds */
55
+ //@{
56
+ /// Get column lower bounds
57
+ inline const CoinPackedVector & lbs() const;
58
+ /// Get column upper bounds
59
+ inline const CoinPackedVector & ubs() const;
60
+ //@}
61
+
62
+ /**@name Comparison operators */
63
+ //@{
64
+ #if __GNUC__ != 2
65
+ using OsiCut::operator== ;
66
+ #endif
67
+ /** equal - true if lower bounds, upper bounds,
68
+ and OsiCut are equal.
69
+ */
70
+ inline virtual bool operator==(const OsiColCut& rhs) const;
71
+
72
+ #if __GNUC__ != 2
73
+ using OsiCut::operator!= ;
74
+ #endif
75
+ /// not equal
76
+ inline virtual bool operator!=(const OsiColCut& rhs) const;
77
+ //@}
78
+
79
+
80
+ //----------------------------------------------------------------
81
+
82
+ /**@name Sanity checks on cut */
83
+ //@{
84
+ /** Returns true if the cut is consistent with respect to itself.
85
+ This checks to ensure that:
86
+ <ul>
87
+ <li>The bound vectors do not have duplicate indices,
88
+ <li>The bound vectors indices are >=0
89
+ </ul>
90
+ */
91
+ inline virtual bool consistent() const;
92
+
93
+ /** Returns true if cut is consistent with respect to the solver
94
+ interface's model. This checks to ensure that
95
+ the lower & upperbound packed vectors:
96
+ <ul>
97
+ <li>do not have an index >= the number of column is the model.
98
+ </ul>
99
+ */
100
+ inline virtual bool consistent(const OsiSolverInterface& im) const;
101
+
102
+ /** Returns true if the cut is infeasible with respect to its bounds and the
103
+ column bounds in the solver interface's models.
104
+ This checks whether:
105
+ <ul>
106
+ <li>the maximum of the new and existing lower bounds is strictly
107
+ greater than the minimum of the new and existing upper bounds.
108
+ </ul>
109
+ */
110
+ inline virtual bool infeasible(const OsiSolverInterface &im) const;
111
+ /** Returns infeasibility of the cut with respect to solution
112
+ passed in i.e. is positive if cuts off that solution.
113
+ solution is getNumCols() long..
114
+ */
115
+ virtual double violated(const double * solution) const;
116
+ //@}
117
+
118
+ //----------------------------------------------------------------
119
+
120
+ /**@name Constructors and destructors */
121
+ //@{
122
+ /// Assignment operator
123
+ OsiColCut & operator=( const OsiColCut& rhs);
124
+
125
+ /// Copy constructor
126
+ OsiColCut ( const OsiColCut &);
127
+
128
+ /// Default Constructor
129
+ OsiColCut ();
130
+
131
+ /// Clone
132
+ virtual OsiColCut * clone() const;
133
+
134
+ /// Destructor
135
+ virtual ~OsiColCut ();
136
+ //@}
137
+
138
+ /**@name Debug stuff */
139
+ //@{
140
+ /// Print cuts in collection
141
+ virtual void print() const;
142
+ //@}
143
+
144
+ private:
145
+
146
+ /**@name Private member data */
147
+ //@{
148
+ /// Lower bounds
149
+ CoinPackedVector lbs_;
150
+ /// Upper bounds
151
+ CoinPackedVector ubs_;
152
+ //@}
153
+
154
+ };
155
+
156
+
157
+
158
+ //-------------------------------------------------------------------
159
+ // Set lower & upper bound vectors
160
+ //-------------------------------------------------------------------
161
+ void OsiColCut::setLbs(
162
+ int size,
163
+ const int * colIndices,
164
+ const double * lbElements )
165
+ {
166
+ lbs_.setVector(size,colIndices,lbElements);
167
+ }
168
+ //
169
+ void OsiColCut::setUbs(
170
+ int size,
171
+ const int * colIndices,
172
+ const double * ubElements )
173
+ {
174
+ ubs_.setVector(size,colIndices,ubElements);
175
+ }
176
+ //
177
+ void OsiColCut::setLbs( const CoinPackedVector & lbs )
178
+ {
179
+ lbs_ = lbs;
180
+ }
181
+ //
182
+ void OsiColCut::setUbs( const CoinPackedVector & ubs )
183
+ {
184
+ ubs_ = ubs;
185
+ }
186
+
187
+ //-------------------------------------------------------------------
188
+ // Get Column Lower Bounds and Column Upper Bounds
189
+ //-------------------------------------------------------------------
190
+ const CoinPackedVector & OsiColCut::lbs() const
191
+ {
192
+ return lbs_;
193
+ }
194
+ //
195
+ const CoinPackedVector & OsiColCut::ubs() const
196
+ {
197
+ return ubs_;
198
+ }
199
+
200
+ //----------------------------------------------------------------
201
+ // == operator
202
+ //-------------------------------------------------------------------
203
+ bool
204
+ OsiColCut::operator==(
205
+ const OsiColCut& rhs) const
206
+ {
207
+ if ( this->OsiCut::operator!=(rhs) )
208
+ return false;
209
+ if ( lbs() != rhs.lbs() )
210
+ return false;
211
+ if ( ubs() != rhs.ubs() )
212
+ return false;
213
+ return true;
214
+ }
215
+ //
216
+ bool
217
+ OsiColCut::operator!=(
218
+ const OsiColCut& rhs) const
219
+ {
220
+ return !( (*this)==rhs );
221
+ }
222
+
223
+ //----------------------------------------------------------------
224
+ // consistent & infeasible
225
+ //-------------------------------------------------------------------
226
+ bool OsiColCut::consistent() const
227
+ {
228
+ const CoinPackedVector & lb = lbs();
229
+ const CoinPackedVector & ub = ubs();
230
+ // Test for consistent cut.
231
+ // Are packed vectors consistent?
232
+ lb.duplicateIndex("consistent", "OsiColCut");
233
+ ub.duplicateIndex("consistent", "OsiColCut");
234
+ if ( lb.getMinIndex() < 0 ) return false;
235
+ if ( ub.getMinIndex() < 0 ) return false;
236
+ return true;
237
+ }
238
+ //
239
+ bool OsiColCut::consistent(const OsiSolverInterface& im) const
240
+ {
241
+ const CoinPackedVector & lb = lbs();
242
+ const CoinPackedVector & ub = ubs();
243
+
244
+ // Test for consistent cut.
245
+ if ( lb.getMaxIndex() >= im.getNumCols() ) return false;
246
+ if ( ub.getMaxIndex() >= im.getNumCols() ) return false;
247
+
248
+ return true;
249
+ }
250
+
251
+ #if 0
252
+ bool OsiColCut::feasible(const OsiSolverInterface &im) const
253
+ {
254
+ const double * oldColLb = im.getColLower();
255
+ const double * oldColUb = im.getColUpper();
256
+ const CoinPackedVector & cutLbs = lbs();
257
+ const CoinPackedVector & cutUbs = ubs();
258
+ int i;
259
+
260
+ for ( i=0; i<cutLbs.size(); i++ ) {
261
+ int colIndx = cutLbs.indices()[i];
262
+ double newLb;
263
+ if ( cutLbs.elements()[i] > oldColLb[colIndx] )
264
+ newLb = cutLbs.elements()[i];
265
+ else
266
+ newLb = oldColLb[colIndx];
267
+
268
+ double newUb = oldColUb[colIndx];
269
+ if ( cutUbs.indexExists(colIndx) )
270
+ if ( cutUbs[colIndx] < newUb ) newUb = cutUbs[colIndx];
271
+ if ( newLb > newUb )
272
+ return false;
273
+ }
274
+
275
+ for ( i=0; i<cutUbs.size(); i++ ) {
276
+ int colIndx = cutUbs.indices()[i];
277
+ double newUb = cutUbs.elements()[i] < oldColUb[colIndx] ? cutUbs.elements()[i] : oldColUb[colIndx];
278
+ double newLb = oldColLb[colIndx];
279
+ if ( cutLbs.indexExists(colIndx) )
280
+ if ( cutLbs[colIndx] > newLb ) newLb = cutLbs[colIndx];
281
+ if ( newUb < newLb )
282
+ return false;
283
+ }
284
+
285
+ return true;
286
+ }
287
+ #endif
288
+
289
+
290
+ bool OsiColCut::infeasible(const OsiSolverInterface &im) const
291
+ {
292
+ const double * oldColLb = im.getColLower();
293
+ const double * oldColUb = im.getColUpper();
294
+ const CoinPackedVector & cutLbs = lbs();
295
+ const CoinPackedVector & cutUbs = ubs();
296
+ int i;
297
+
298
+ for ( i=0; i<cutLbs.getNumElements(); i++ ) {
299
+ int colIndx = cutLbs.getIndices()[i];
300
+ double newLb= cutLbs.getElements()[i] > oldColLb[colIndx] ?
301
+ cutLbs.getElements()[i] : oldColLb[colIndx];
302
+
303
+ double newUb = oldColUb[colIndx];
304
+ if ( cutUbs.isExistingIndex(colIndx) )
305
+ if ( cutUbs[colIndx] < newUb ) newUb = cutUbs[colIndx];
306
+ if ( newLb > newUb )
307
+ return true;
308
+ }
309
+
310
+ for ( i=0; i<cutUbs.getNumElements(); i++ ) {
311
+ int colIndx = cutUbs.getIndices()[i];
312
+ double newUb = cutUbs.getElements()[i] < oldColUb[colIndx] ?
313
+ cutUbs.getElements()[i] : oldColUb[colIndx];
314
+ double newLb = oldColLb[colIndx];
315
+ if ( cutLbs.isExistingIndex(colIndx) )
316
+ if ( cutLbs[colIndx] > newLb ) newLb = cutLbs[colIndx];
317
+ if ( newUb < newLb )
318
+ return true;
319
+ }
320
+
321
+ return false;
322
+ }
323
+
324
+ #endif
@@ -0,0 +1,35 @@
1
+ // Copyright (C) 2000, International Business Machines
2
+ // Corporation and others. All Rights Reserved.
3
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
4
+
5
+ #ifndef OsiCollections_H
6
+ #define OsiCollections_H
7
+
8
+ #include <vector>
9
+
10
+ //Forward declarations
11
+ class OsiColCut;
12
+ class OsiRowCut;
13
+ class OsiCut;
14
+
15
+
16
+
17
+ /* Collection Classes */
18
+
19
+ /**@name Typedefs for Standard Template Library collections of Osi Objects. */
20
+ //@{
21
+ /// Vector of int
22
+ typedef std::vector<int> OsiVectorInt;
23
+ /// Vector of double
24
+ typedef std::vector<double> OsiVectorDouble;
25
+ /// Vector of OsiColCut pointers
26
+ typedef std::vector<OsiColCut *> OsiVectorColCutPtr;
27
+ /// Vector of OsiRowCut pointers
28
+ typedef std::vector<OsiRowCut *> OsiVectorRowCutPtr;
29
+ /// Vector of OsiCut pointers
30
+ typedef std::vector<OsiCut *> OsiVectorCutPtr;
31
+ //@}
32
+
33
+
34
+
35
+ #endif
@@ -0,0 +1,19 @@
1
+ /* src/Osi/config_osi.h. Generated by configure. */
2
+ /* src/Osi/config_osi.h.in. */
3
+
4
+ #ifndef __CONFIG_OSI_H__
5
+ #define __CONFIG_OSI_H__
6
+
7
+ /* Version number of project */
8
+ #define OSI_VERSION "0.107.6"
9
+
10
+ /* Major Version number of project */
11
+ #define OSI_VERSION_MAJOR 0
12
+
13
+ /* Minor Version number of project */
14
+ #define OSI_VERSION_MINOR 107
15
+
16
+ /* Release Version number of project */
17
+ #define OSI_VERSION_RELEASE 6
18
+
19
+ #endif
@@ -0,0 +1,245 @@
1
+ // Copyright (C) 2000, International Business Machines
2
+ // Corporation and others. All Rights Reserved.
3
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
4
+
5
+ #ifndef OsiCut_H
6
+ #define OsiCut_H
7
+
8
+ #include "OsiCollections.hpp"
9
+ #include "OsiSolverInterface.hpp"
10
+
11
+ /** Base Class for cut.
12
+
13
+ The Base cut class contains:
14
+ <ul>
15
+ <li>a measure of the cut's effectivness
16
+ </ul>
17
+ */
18
+
19
+ /*
20
+ COIN_NOTEST_DUPLICATE is rooted in CoinUtils. Check there before you
21
+ meddle here.
22
+ */
23
+ #ifdef COIN_FAST_CODE
24
+ #ifndef COIN_NOTEST_DUPLICATE
25
+ #define COIN_NOTEST_DUPLICATE
26
+ #endif
27
+ #endif
28
+
29
+ #ifndef COIN_NOTEST_DUPLICATE
30
+ #define COIN_DEFAULT_VALUE_FOR_DUPLICATE true
31
+ #else
32
+ #define COIN_DEFAULT_VALUE_FOR_DUPLICATE false
33
+ #endif
34
+
35
+
36
+ class OsiCut {
37
+
38
+ public:
39
+
40
+ //-------------------------------------------------------------------
41
+ /**@name Effectiveness */
42
+ //@{
43
+ /// Set effectiveness
44
+ inline void setEffectiveness( double e );
45
+ /// Get effectiveness
46
+ inline double effectiveness() const;
47
+ //@}
48
+
49
+ /**@name GloballyValid */
50
+ //@{
51
+ /// Set globallyValid (nonzero true)
52
+ inline void setGloballyValid( bool trueFalse )
53
+ { globallyValid_=trueFalse ? 1 : 0;}
54
+ inline void setGloballyValid( )
55
+ { globallyValid_=1;}
56
+ inline void setNotGloballyValid( )
57
+ { globallyValid_=0;}
58
+ /// Get globallyValid
59
+ inline bool globallyValid() const
60
+ { return globallyValid_!=0;}
61
+ /// Set globallyValid as integer (nonzero true)
62
+ inline void setGloballyValidAsInteger( int trueFalse )
63
+ { globallyValid_=trueFalse;}
64
+ /// Get globallyValid
65
+ inline int globallyValidAsInteger() const
66
+ { return globallyValid_;}
67
+ //@}
68
+
69
+ /**@name Debug stuff */
70
+ //@{
71
+ /// Print cuts in collection
72
+ virtual void print() const {}
73
+ //@}
74
+
75
+ #if 0
76
+ / **@name Times used */
77
+ / /@{
78
+ / // Set times used
79
+ inline void setTimesUsed( int t );
80
+ / // Increment times used
81
+ inline void incrementTimesUsed();
82
+ / // Get times used
83
+ inline int timesUsed() const;
84
+ / /@}
85
+
86
+ / **@name Times tested */
87
+ / /@{
88
+ / // Set times tested
89
+ inline void setTimesTested( int t );
90
+ / // Increment times tested
91
+ inline void incrementTimesTested();
92
+ / // Get times tested
93
+ inline int timesTested() const;
94
+ / /@}
95
+ #endif
96
+
97
+ //----------------------------------------------------------------
98
+
99
+ /**@name Comparison operators */
100
+ //@{
101
+ ///equal. 2 cuts are equal if there effectiveness are equal
102
+ inline virtual bool operator==(const OsiCut& rhs) const;
103
+ /// not equal
104
+ inline virtual bool operator!=(const OsiCut& rhs) const;
105
+ /// less than. True if this.effectiveness < rhs.effectiveness
106
+ inline virtual bool operator< (const OsiCut& rhs) const;
107
+ /// less than. True if this.effectiveness > rhs.effectiveness
108
+ inline virtual bool operator> (const OsiCut& rhs) const;
109
+ //@}
110
+
111
+ //----------------------------------------------------------------
112
+ // consistent() - returns true if the cut is consistent with repect to itself.
113
+ // This might include checks to ensure that a packed vector
114
+ // itself does not have a negative index.
115
+ // consistent(const OsiSolverInterface& si) - returns true if cut is consistent with
116
+ // respect to the solver interface's model. This might include a check to
117
+ // make sure a column index is not greater than the number
118
+ // of columns in the problem.
119
+ // infeasible(const OsiSolverInterface& si) - returns true if the cut is infeasible
120
+ // "with respect to itself". This might include a check to ensure
121
+ // the lower bound is greater than the upper bound, or if the
122
+ // cut simply replaces bounds that the new bounds are feasible with
123
+ // respect to the old bounds.
124
+ //-----------------------------------------------------------------
125
+ /**@name Sanity checks on cut */
126
+ //@{
127
+ /** Returns true if the cut is consistent with respect to itself,
128
+ without considering any
129
+ data in the model. For example, it might check to ensure
130
+ that a column index is not negative.
131
+ */
132
+ inline virtual bool consistent() const=0;
133
+
134
+ /** Returns true if cut is consistent when considering the solver
135
+ interface's model. For example, it might check to ensure
136
+ that a column index is not greater than the number of columns
137
+ in the model. Assumes consistent() is true.
138
+ */
139
+ inline virtual bool consistent(const OsiSolverInterface& si) const=0;
140
+
141
+ /** Returns true if the cut is infeasible "with respect to itself" and
142
+ cannot be satisfied. This method does NOT check whether adding the
143
+ cut to the solver interface's model will make the -model- infeasble.
144
+ A cut which returns !infeasible(si) may very well make the model
145
+ infeasible. (Of course, adding a cut with returns infeasible(si)
146
+ will make the model infeasible.)
147
+
148
+ The "with respect to itself" is in quotes becaues
149
+ in the case where the cut
150
+ simply replaces existing bounds, it may make
151
+ sense to test infeasibility with respect to the current bounds
152
+ held in the solver interface's model. For example, if the cut
153
+ has a single variable in it, it might check that the maximum
154
+ of new and existing lower bounds is greater than the minium of
155
+ the new and existing upper bounds.
156
+
157
+ Assumes that consistent(si) is true.<br>
158
+ Infeasible cuts can be a useful mechanism for a cut generator to
159
+ inform the solver interface that its detected infeasibility of the
160
+ problem.
161
+ */
162
+ inline virtual bool infeasible(const OsiSolverInterface &si) const=0;
163
+
164
+ /** Returns infeasibility of the cut with respect to solution
165
+ passed in i.e. is positive if cuts off that solution.
166
+ solution is getNumCols() long..
167
+ */
168
+ virtual double violated(const double * solution) const=0;
169
+ //@}
170
+
171
+ protected:
172
+
173
+ /**@name Constructors and destructors */
174
+ //@{
175
+ /// Default Constructor
176
+ OsiCut ();
177
+
178
+ /// Copy constructor
179
+ OsiCut ( const OsiCut &);
180
+
181
+ /// Assignment operator
182
+ OsiCut & operator=( const OsiCut& rhs);
183
+
184
+ /// Destructor
185
+ virtual ~OsiCut ();
186
+ //@}
187
+
188
+ private:
189
+
190
+ /**@name Private member data */
191
+ //@{
192
+ /// Effectiveness
193
+ double effectiveness_;
194
+ /// If cut has global validity i.e. can be used anywhere in tree
195
+ int globallyValid_;
196
+ #if 0
197
+ /// Times used
198
+ int timesUsed_;
199
+ /// Times tested
200
+ int timesTested_;
201
+ #endif
202
+ //@}
203
+ };
204
+
205
+
206
+ //-------------------------------------------------------------------
207
+ // Set/Get member data
208
+ //-------------------------------------------------------------------
209
+ void OsiCut::setEffectiveness(double e) { effectiveness_=e; }
210
+ double OsiCut::effectiveness() const { return effectiveness_; }
211
+
212
+ #if 0
213
+ void OsiCut::setTimesUsed( int t ) { timesUsed_=t; }
214
+ void OsiCut::incrementTimesUsed() { timesUsed_++; }
215
+ int OsiCut::timesUsed() const { return timesUsed_; }
216
+
217
+ void OsiCut::setTimesTested( int t ) { timesTested_=t; }
218
+ void OsiCut::incrementTimesTested() { timesTested_++; }
219
+ int OsiCut::timesTested() const{ return timesTested_; }
220
+ #endif
221
+
222
+ //----------------------------------------------------------------
223
+ // == operator
224
+ //-------------------------------------------------------------------
225
+ bool
226
+ OsiCut::operator==(const OsiCut& rhs) const
227
+ {
228
+ return effectiveness()==rhs.effectiveness();
229
+ }
230
+ bool
231
+ OsiCut::operator!=(const OsiCut& rhs) const
232
+ {
233
+ return !( (*this)==rhs );
234
+ }
235
+ bool
236
+ OsiCut::operator< (const OsiCut& rhs) const
237
+ {
238
+ return effectiveness()<rhs.effectiveness();
239
+ }
240
+ bool
241
+ OsiCut::operator> (const OsiCut& rhs) const
242
+ {
243
+ return effectiveness()>rhs.effectiveness();
244
+ }
245
+ #endif