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,245 @@
1
+ /*
2
+ Copyright (C) 2006, International Business Machines Corporation and others.
3
+ All Rights Reserved.
4
+
5
+ This code is licensed under the terms of the Eclipse Public License (EPL).
6
+
7
+ $Id: CbcEventHandler.hpp 1987 2013-11-29 17:27:29Z forrest $
8
+ */
9
+
10
+ #ifndef CbcEventHandler_H
11
+ #define CbcEventHandler_H
12
+
13
+ /*! \file CbcEventHandler.hpp
14
+ \brief Event handling for cbc
15
+
16
+ This file contains the declaration of CbcEventHandler, used for event
17
+ handling in cbc.
18
+
19
+ The central method is CbcEventHandler::event(). The default semantics of
20
+ this call are `ask for the action to take in reponse to this event'. The
21
+ call is made at the point in the code where the event occurs (<i>e.g.</i>,
22
+ when a solution is found, or when a node is added to or removed from the
23
+ search tree). The return value specifies the action to perform in response
24
+ to the event (<i>e.g.</i>, continue, or stop).
25
+
26
+ This is a lazy class. Initially, it knows nothing about specific events,
27
+ and returns dfltAction_ for any event. This makes for a trivial constructor
28
+ and fast startup. The only place where the list of known events or actions
29
+ is hardwired is in the enum definitions for CbcEvent and CbcAction,
30
+ respectively.
31
+
32
+ At the first call to setAction, a map is created to hold (Event,Action)
33
+ pairs, and this map will be consulted ever after. Events not in the map
34
+ will still return the default value.
35
+
36
+ For serious extensions, derive a subclass and replace event() with a
37
+ function that suits you better. The function has access to the CbcModel
38
+ via a pointer held in the CbcEventHandler object, and can do as much
39
+ thinking as it likes before returning an answer. You can also print as
40
+ much information as you want. The model is held as a const, however, so
41
+ you can't alter reality.
42
+
43
+ The design of the class deliberately matches ClpEventHandler, so that other
44
+ solvers can participate in cbc without breaking the patterns set by
45
+ clp-specific code.
46
+
47
+ */
48
+
49
+ #include <cstddef>
50
+ #include <map>
51
+
52
+ /* May well already be declared, but can't hurt. */
53
+
54
+ class CbcModel ;
55
+
56
+ /*
57
+ cvs/svn: $Id: CbcEventHandler.hpp 1987 2013-11-29 17:27:29Z forrest $
58
+ */
59
+
60
+ /*! \class CbcEventHandler
61
+ \brief Base class for Cbc event handling.
62
+
63
+ Up front: We're not talking about unanticipated events here. We're talking
64
+ about anticipated events, in the sense that the code is going to make a call
65
+ to event() and is prepared to obey the return value that it receives.
66
+
67
+ The general pattern for usage is as follows:
68
+ <ol>
69
+ <li> Create a CbcEventHandler object. This will be initialised with a set
70
+ of default actions for every recognised event.
71
+
72
+ <li> Attach the event handler to the CbcModel object.
73
+
74
+ <li> When execution reaches the point where an event occurs, call the
75
+ event handler as CbcEventHandler::event(the event). The return value
76
+ will specify what the code should do in response to the event.
77
+ </ol>
78
+
79
+ The return value associated with an event can be changed at any time.
80
+ */
81
+
82
+ class CbcEventHandler {
83
+
84
+ public:
85
+
86
+ /*! \brief Events known to cbc */
87
+
88
+ enum CbcEvent { /*! Processing of the current node is complete. */
89
+ node = 200,
90
+ /*! A tree status interval has arrived. */
91
+ treeStatus,
92
+ /*! A solution has been found. */
93
+ solution,
94
+ /*! A heuristic solution has been found. */
95
+ heuristicSolution,
96
+ /*! A solution will be found unless user takes action (first check). */
97
+ beforeSolution1,
98
+ /*! A solution will be found unless user takes action (thorough check). */
99
+ beforeSolution2,
100
+ /*! After failed heuristic. */
101
+ afterHeuristic,
102
+ /*! On entry to small branch and bound. */
103
+ smallBranchAndBound,
104
+ /*! After a pass of heuristic. */
105
+ heuristicPass,
106
+ /*! When converting constraints to cuts. */
107
+ convertToCuts,
108
+ /*! End of search. */
109
+ endSearch
110
+ } ;
111
+
112
+ /*! \brief Action codes returned by the event handler.
113
+
114
+ Specific values are chosen to match ClpEventHandler return codes.
115
+ */
116
+
117
+ enum CbcAction { /*! Continue --- no action required. */
118
+ noAction = -1,
119
+ /*! Stop --- abort the current run at the next opportunity. */
120
+ stop = 0,
121
+ /*! Restart --- restart branch-and-cut search; do not undo root node
122
+ processing.
123
+ */
124
+ restart,
125
+ /*! RestartRoot --- undo root node and start branch-and-cut afresh. */
126
+ restartRoot,
127
+ /*! Add special cuts. */
128
+ addCuts,
129
+ /*! Pretend solution never happened. */
130
+ killSolution,
131
+ /*! Take action on modified data. */
132
+ takeAction
133
+
134
+ } ;
135
+
136
+ /*! \brief Data type for event/action pairs */
137
+
138
+ typedef std::map<CbcEvent, CbcAction> eaMapPair ;
139
+
140
+
141
+ /*! \name Event Processing */
142
+ //@{
143
+
144
+ /*! \brief Return the action to be taken for an event.
145
+
146
+ Return the action that should be taken in response to the event passed as
147
+ the parameter. The default implementation simply reads a return code
148
+ from a map.
149
+ */
150
+ virtual CbcAction event(CbcEvent whichEvent) ;
151
+
152
+ /*! \brief Return the action to be taken for an event - and modify data.
153
+
154
+ Return the action that should be taken in response to the event passed as
155
+ the parameter. The default implementation simply reads a return code
156
+ from a map.
157
+ */
158
+ virtual CbcAction event(CbcEvent whichEvent, void * data) ;
159
+
160
+ //@}
161
+
162
+
163
+ /*! \name Constructors and destructors */
164
+ //@{
165
+
166
+ /*! \brief Default constructor. */
167
+
168
+ CbcEventHandler(CbcModel *model = 0 /* was NULL but 4.6 complains */) ;
169
+
170
+ /*! \brief Copy constructor. */
171
+
172
+ CbcEventHandler(const CbcEventHandler &orig) ;
173
+
174
+ /*! \brief Assignment. */
175
+
176
+ CbcEventHandler& operator=(const CbcEventHandler &rhs) ;
177
+
178
+ /*! \brief Clone (virtual) constructor. */
179
+
180
+ virtual CbcEventHandler* clone() const ;
181
+
182
+ /*! \brief Destructor. */
183
+
184
+ virtual ~CbcEventHandler() ;
185
+
186
+ //@}
187
+
188
+ /*! \name Set/Get methods */
189
+ //@{
190
+
191
+ /*! \brief Set model. */
192
+
193
+ inline void setModel(CbcModel *model) {
194
+ model_ = model ;
195
+ }
196
+
197
+ /*! \brief Get model. */
198
+
199
+ inline const CbcModel* getModel() const {
200
+ return model_ ;
201
+ }
202
+
203
+ /*! \brief Set the default action */
204
+
205
+ inline void setDfltAction(CbcAction action) {
206
+ dfltAction_ = action ;
207
+ }
208
+
209
+ /*! \brief Set the action code associated with an event */
210
+
211
+ inline void setAction(CbcEvent event, CbcAction action) {
212
+ if (eaMap_ == 0) {
213
+ eaMap_ = new eaMapPair ;
214
+ }
215
+ (*eaMap_)[event] = action ;
216
+ }
217
+
218
+ //@}
219
+
220
+
221
+ protected:
222
+
223
+ /*! \name Data members
224
+
225
+ Protected (as opposed to private) to allow access by derived classes.
226
+ */
227
+ //@{
228
+
229
+ /*! \brief Pointer to associated CbcModel */
230
+
231
+ CbcModel *model_ ;
232
+
233
+ /*! \brief Default action */
234
+
235
+ CbcAction dfltAction_ ;
236
+
237
+ /*! \brief Pointer to a map that holds non-default event/action pairs */
238
+
239
+ eaMapPair *eaMap_ ;
240
+
241
+ //@}
242
+ } ;
243
+
244
+ #endif
245
+
@@ -0,0 +1,137 @@
1
+ /* $Id: CbcFathom.hpp 1889 2013-04-07 13:46:46Z stefan $ */
2
+ // Copyright (C) 2004, 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 CbcFathom_H
7
+ #define CbcFathom_H
8
+ #include "CbcConfig.h"
9
+
10
+ /*
11
+ This file contains two classes, CbcFathom and CbcOsiSolver. It's unclear why
12
+ they're in the same file. CbcOsiSolver is a base class for CbcLinked.
13
+
14
+ --lh, 071031 --
15
+ */
16
+
17
+
18
+ class CbcModel;
19
+
20
+ //#############################################################################
21
+ /** Fathom base class.
22
+
23
+ The idea is that after some branching the problem will be effectively smaller than
24
+ the original problem and maybe there will be a more specialized technique which can completely
25
+ fathom this branch quickly.
26
+
27
+ One method is to presolve the problem to give a much smaller new problem and then do branch
28
+ and cut on that. Another might be dynamic programming.
29
+
30
+ */
31
+
32
+ class CbcFathom {
33
+ public:
34
+ // Default Constructor
35
+ CbcFathom ();
36
+
37
+ // Constructor with model - assumed before cuts
38
+ CbcFathom (CbcModel & model);
39
+
40
+ virtual ~CbcFathom();
41
+
42
+ /// update model (This is needed if cliques update matrix etc)
43
+ virtual void setModel(CbcModel * model);
44
+
45
+ /// Clone
46
+ virtual CbcFathom * clone() const = 0;
47
+
48
+ /// Resets stuff if model changes
49
+ virtual void resetModel(CbcModel * model) = 0;
50
+
51
+ /** returns 0 if no fathoming attempted, 1 fully fathomed,
52
+ 2 incomplete search, 3 incomplete search but treat as complete.
53
+ If solution then newSolution will not be NULL and
54
+ will be freed by CbcModel. It is expected that the solution is better
55
+ than best so far but CbcModel will double check.
56
+
57
+ If returns 3 then of course there is no guarantee of global optimum
58
+ */
59
+ virtual int fathom(double *& newSolution) = 0;
60
+
61
+ // Is this method possible
62
+ inline bool possible() const {
63
+ return possible_;
64
+ }
65
+
66
+ protected:
67
+
68
+ /// Model
69
+ CbcModel * model_;
70
+ /// Possible - if this method of fathoming can be used
71
+ bool possible_;
72
+ private:
73
+
74
+ /// Illegal Assignment operator
75
+ CbcFathom & operator=(const CbcFathom& rhs);
76
+
77
+ };
78
+
79
+ #include "OsiClpSolverInterface.hpp"
80
+
81
+ //#############################################################################
82
+
83
+ /**
84
+
85
+ This is for codes where solver needs to know about CbcModel
86
+ Seems to provide only one value-added feature, a CbcModel object.
87
+
88
+ */
89
+
90
+ class CbcOsiSolver : public OsiClpSolverInterface {
91
+
92
+ public:
93
+
94
+ /**@name Constructors and destructors */
95
+ //@{
96
+ /// Default Constructor
97
+ CbcOsiSolver ();
98
+
99
+ /// Clone
100
+ virtual OsiSolverInterface * clone(bool copyData = true) const;
101
+
102
+ /// Copy constructor
103
+ CbcOsiSolver (const CbcOsiSolver &);
104
+
105
+ /// Assignment operator
106
+ CbcOsiSolver & operator=(const CbcOsiSolver& rhs);
107
+
108
+ /// Destructor
109
+ virtual ~CbcOsiSolver ();
110
+
111
+ //@}
112
+
113
+
114
+ /**@name Sets and Gets */
115
+ //@{
116
+ /// Set Cbc Model
117
+ inline void setCbcModel(CbcModel * model) {
118
+ cbcModel_ = model;
119
+ }
120
+ /// Return Cbc Model
121
+ inline CbcModel * cbcModel() const {
122
+ return cbcModel_;
123
+ }
124
+ //@}
125
+
126
+ //---------------------------------------------------------------------------
127
+
128
+ protected:
129
+
130
+
131
+ /**@name Private member data */
132
+ //@{
133
+ /// Pointer back to CbcModel
134
+ CbcModel * cbcModel_;
135
+ //@}
136
+ };
137
+ #endif
@@ -0,0 +1,169 @@
1
+ /* $Id: CbcFathomDynamicProgramming.hpp 1573 2011-01-05 01:12:36Z lou $ */
2
+ // Copyright (C) 2004, 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 CbcFathomDynamicProgramming_H
7
+ #define CbcFathomDynamicProgramming_H
8
+
9
+ #include "CbcFathom.hpp"
10
+
11
+ //#############################################################################
12
+ /** FathomDynamicProgramming class.
13
+
14
+ The idea is that after some branching the problem will be effectively smaller than
15
+ the original problem and maybe there will be a more specialized technique which can completely
16
+ fathom this branch quickly.
17
+
18
+ This is a dynamic programming implementation which is very fast for some
19
+ specialized problems. It expects small integral rhs, an all integer problem
20
+ and positive integral coefficients. At present it can not do general set covering
21
+ problems just set partitioning. It can find multiple optima for various rhs
22
+ combinations.
23
+
24
+ The main limiting factor is size of state space. Each 1 rhs doubles the size of the problem.
25
+ 2 or 3 rhs quadruples, 4,5,6,7 by 8 etc.
26
+ */
27
+
28
+ class CbcFathomDynamicProgramming : public CbcFathom {
29
+ public:
30
+ // Default Constructor
31
+ CbcFathomDynamicProgramming ();
32
+
33
+ // Constructor with model - assumed before cuts
34
+ CbcFathomDynamicProgramming (CbcModel & model);
35
+ // Copy constructor
36
+ CbcFathomDynamicProgramming(const CbcFathomDynamicProgramming & rhs);
37
+
38
+ virtual ~CbcFathomDynamicProgramming();
39
+
40
+ /// update model (This is needed if cliques update matrix etc)
41
+ virtual void setModel(CbcModel * model);
42
+
43
+ /// Clone
44
+ virtual CbcFathom * clone() const;
45
+
46
+ /// Resets stuff if model changes
47
+ virtual void resetModel(CbcModel * model);
48
+
49
+ /** returns 0 if no fathoming attempted, 1 fully fathomed ,
50
+ 2 incomplete search, 3 incomplete search but treat as complete.
51
+ If solution then newSolution will not be NULL and
52
+ will be freed by CbcModel. It is expected that the solution is better
53
+ than best so far but CbcModel will double check.
54
+
55
+ If returns 3 then of course there is no guarantee of global optimum
56
+ */
57
+ virtual int fathom(double *& newSolution);
58
+
59
+ /// Maximum size allowed
60
+ inline int maximumSize() const {
61
+ return maximumSizeAllowed_;
62
+ }
63
+ inline void setMaximumSize(int value) {
64
+ maximumSizeAllowed_ = value;
65
+ }
66
+ /// Returns type of algorithm and sets up arrays
67
+ int checkPossible(int allowableSize = 0);
68
+ // set algorithm
69
+ inline void setAlgorithm(int value) {
70
+ algorithm_ = value;
71
+ }
72
+ /** Tries a column
73
+ returns true if was used in making any changes.
74
+ */
75
+ bool tryColumn(int numberElements, const int * rows,
76
+ const double * coefficients, double cost,
77
+ int upper = COIN_INT_MAX);
78
+ /// Returns cost array
79
+ inline const double * cost() const {
80
+ return cost_;
81
+ }
82
+ /// Returns back array
83
+ inline const int * back() const {
84
+ return back_;
85
+ }
86
+ /// Gets bit pattern for target result
87
+ inline int target() const {
88
+ return target_;
89
+ }
90
+ /// Sets bit pattern for target result
91
+ inline void setTarget(int value) {
92
+ target_ = value;
93
+ }
94
+ private:
95
+ /// Does deleteions
96
+ void gutsOfDelete();
97
+
98
+ /** Adds one attempt of one column of type 0,
99
+ returns true if was used in making any changes
100
+ */
101
+ bool addOneColumn0(int numberElements, const int * rows,
102
+ double cost);
103
+ /** Adds one attempt of one column of type 1,
104
+ returns true if was used in making any changes.
105
+ At present the user has to call it once for each possible value
106
+ */
107
+ bool addOneColumn1(int numberElements, const int * rows,
108
+ const int * coefficients, double cost);
109
+ /** Adds one attempt of one column of type 1,
110
+ returns true if was used in making any changes.
111
+ At present the user has to call it once for each possible value.
112
+ This version is when there are enough 1 rhs to do faster
113
+ */
114
+ bool addOneColumn1A(int numberElements, const int * rows,
115
+ const int * coefficients, double cost);
116
+ /// Gets bit pattern from original column
117
+ int bitPattern(int numberElements, const int * rows,
118
+ const int * coefficients);
119
+ /// Gets bit pattern from original column
120
+ int bitPattern(int numberElements, const int * rows,
121
+ const double * coefficients);
122
+ /// Fills in original column (dense) from bit pattern - returning number nonzero
123
+ int decodeBitPattern(int bitPattern, int * values, int numberRows);
124
+
125
+ protected:
126
+
127
+ /// Size of states (power of 2 unless just one constraint)
128
+ int size_;
129
+ /** Type - 0 coefficients and rhs all 1,
130
+ 1 - coefficients > 1 or rhs > 1
131
+ */
132
+ int type_;
133
+ /// Space for states
134
+ double * cost_;
135
+ /// Which state produced this cheapest one
136
+ int * back_;
137
+ /// Some rows may be satisified so we need a lookup
138
+ int * lookup_;
139
+ /// Space for sorted indices
140
+ int * indices_;
141
+ /// Number of active rows
142
+ int numberActive_;
143
+ /// Maximum size allowed
144
+ int maximumSizeAllowed_;
145
+ /// Start bit for each active row
146
+ int * startBit_;
147
+ /// Number bits for each active row
148
+ int * numberBits_;
149
+ /// Effective rhs
150
+ int * rhs_;
151
+ /// Space for sorted coefficients
152
+ int * coefficients_;
153
+ /// Target pattern
154
+ int target_;
155
+ /// Number of Non 1 rhs
156
+ int numberNonOne_;
157
+ /// Current bit pattern
158
+ int bitPattern_;
159
+ /// Current algorithm
160
+ int algorithm_;
161
+ private:
162
+
163
+ /// Illegal Assignment operator
164
+ CbcFathomDynamicProgramming & operator=(const CbcFathomDynamicProgramming& rhs);
165
+
166
+ };
167
+
168
+ #endif
169
+
@@ -0,0 +1,56 @@
1
+ /* $Id: CbcFeasibilityBase.hpp 1573 2011-01-05 01:12:36Z lou $ */
2
+ // Copyright (C) 2005, 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 CbcFeasibilityBase_H
7
+ #define CbcFeasibilityBase_H
8
+
9
+
10
+ //#############################################################################
11
+ /* There are cases where the user wants to control how CBC sees the problems feasibility.
12
+ The user may want to examine the problem and say :
13
+ a) The default looks OK
14
+ b) Pretend this problem is Integer feasible
15
+ c) Pretend this problem is infeasible even though it looks feasible
16
+
17
+ This simple class allows user to do that.
18
+
19
+ */
20
+
21
+ class CbcModel;
22
+ class CbcFeasibilityBase {
23
+ public:
24
+ // Default Constructor
25
+ CbcFeasibilityBase () {}
26
+
27
+ /**
28
+ On input mode:
29
+ 0 - called after a solve but before any cuts
30
+ -1 - called after strong branching
31
+ Returns :
32
+ 0 - no opinion
33
+ -1 pretend infeasible
34
+ 1 pretend integer solution
35
+ */
36
+ virtual int feasible(CbcModel * , int ) {
37
+ return 0;
38
+ }
39
+
40
+ virtual ~CbcFeasibilityBase() {}
41
+
42
+ // Copy constructor
43
+ CbcFeasibilityBase ( const CbcFeasibilityBase & ) {}
44
+
45
+ // Assignment operator
46
+ CbcFeasibilityBase & operator=( const CbcFeasibilityBase& ) {
47
+ return *this;
48
+ }
49
+
50
+ /// Clone
51
+ virtual CbcFeasibilityBase * clone() const {
52
+ return new CbcFeasibilityBase(*this);
53
+ }
54
+ };
55
+ #endif
56
+
@@ -0,0 +1,67 @@
1
+ // $Id: CbcFixVariable.hpp 1899 2013-04-09 18:12:08Z stefan $
2
+ // Copyright (C) 2002, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ // Edwin 11/10/2009-- carved out of CbcBranchActual
7
+
8
+ #ifndef CbcFixVariable_H
9
+ #define CbcFixVariable_H
10
+
11
+ #include "CbcBranchBase.hpp"
12
+ /** Class for consequent bounds.
13
+ When a variable is branched on it normally interacts with other variables by
14
+ means of equations. There are cases where we want to step outside LP and do something
15
+ more directly e.g. fix bounds. This class is for that.
16
+
17
+ A state of -9999 means at LB, +9999 means at UB,
18
+ others mean if fixed to that value.
19
+
20
+ */
21
+
22
+ class CbcFixVariable : public CbcConsequence {
23
+
24
+ public:
25
+
26
+ // Default Constructor
27
+ CbcFixVariable ();
28
+
29
+ // One useful Constructor
30
+ CbcFixVariable (int numberStates, const int * states, const int * numberNewLower, const int ** newLowerValue,
31
+ const int ** lowerColumn,
32
+ const int * numberNewUpper, const int ** newUpperValue,
33
+ const int ** upperColumn);
34
+
35
+ // Copy constructor
36
+ CbcFixVariable ( const CbcFixVariable & rhs);
37
+
38
+ // Assignment operator
39
+ CbcFixVariable & operator=( const CbcFixVariable & rhs);
40
+
41
+ /// Clone
42
+ virtual CbcConsequence * clone() const;
43
+
44
+ /// Destructor
45
+ virtual ~CbcFixVariable ();
46
+
47
+ /** Apply to an LP solver. Action depends on state
48
+ */
49
+ virtual void applyToSolver(OsiSolverInterface * solver, int state) const;
50
+
51
+ protected:
52
+ /// Number of states
53
+ int numberStates_;
54
+ /// Values of integers for various states
55
+ int * states_;
56
+ /// Start of information for each state (setting new lower)
57
+ int * startLower_;
58
+ /// Start of information for each state (setting new upper)
59
+ int * startUpper_;
60
+ /// For each variable new bounds
61
+ double * newBound_;
62
+ /// Variable
63
+ int * variable_;
64
+ };
65
+
66
+ #endif
67
+