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,280 @@
1
+ /* $Id: CbcHeuristicGreedy.hpp 1585 2011-01-11 19:04:34Z forrest $ */
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 CbcHeuristicGreedy_H
7
+ #define CbcHeuristicGreedy_H
8
+
9
+ #include "CbcHeuristic.hpp"
10
+ /** Greedy heuristic classes
11
+ */
12
+
13
+ class CbcHeuristicGreedyCover : public CbcHeuristic {
14
+ public:
15
+
16
+ // Default Constructor
17
+ CbcHeuristicGreedyCover ();
18
+
19
+ /* Constructor with model - assumed before cuts
20
+ Initial version does not do Lps
21
+ */
22
+ CbcHeuristicGreedyCover (CbcModel & model);
23
+
24
+ // Copy constructor
25
+ CbcHeuristicGreedyCover ( const CbcHeuristicGreedyCover &);
26
+
27
+ // Destructor
28
+ ~CbcHeuristicGreedyCover ();
29
+
30
+ /// Clone
31
+ virtual CbcHeuristic * clone() const;
32
+ /// Assignment operator
33
+ CbcHeuristicGreedyCover & operator=(const CbcHeuristicGreedyCover& rhs);
34
+ /// Create C++ lines to get to current state
35
+ virtual void generateCpp( FILE * fp) ;
36
+
37
+ /// update model (This is needed if cliques update matrix etc)
38
+ virtual void setModel(CbcModel * model);
39
+
40
+ using CbcHeuristic::solution ;
41
+ /** returns 0 if no solution, 1 if valid solution.
42
+ Sets solution values if good, sets objective value (only if good)
43
+ We leave all variables which are at one at this node of the
44
+ tree to that value and will
45
+ initially set all others to zero. We then sort all variables in order of their cost
46
+ divided by the number of entries in rows which are not yet covered. We randomize that
47
+ value a bit so that ties will be broken in different ways on different runs of the heuristic.
48
+ We then choose the best one and set it to one and repeat the exercise.
49
+
50
+ */
51
+ virtual int solution(double & objectiveValue,
52
+ double * newSolution);
53
+ /// Validate model i.e. sets when_ to 0 if necessary (may be NULL)
54
+ virtual void validate() ;
55
+ /// Resets stuff if model changes
56
+ virtual void resetModel(CbcModel * model);
57
+ /* Algorithm
58
+ 0 - use current upper bounds
59
+ 1 - use original upper bounds
60
+ If 10 added perturb ratios more
61
+ if 100 added round up all >=0.5
62
+ */
63
+ inline int algorithm() const {
64
+ return algorithm_;
65
+ }
66
+ inline void setAlgorithm(int value) {
67
+ algorithm_ = value;
68
+ }
69
+ // Only do this many times
70
+ inline int numberTimes() const {
71
+ return numberTimes_;
72
+ }
73
+ inline void setNumberTimes(int value) {
74
+ numberTimes_ = value;
75
+ }
76
+
77
+ protected:
78
+ /// Guts of constructor from a CbcModel
79
+ void gutsOfConstructor(CbcModel * model);
80
+ // Data
81
+
82
+ // Original matrix by column
83
+ CoinPackedMatrix matrix_;
84
+ // original number of rows
85
+ int originalNumberRows_;
86
+ /* Algorithm
87
+ 0 - use current upper bounds
88
+ 1 - use original upper bounds
89
+ If 10 added perturb ratios more
90
+ */
91
+ int algorithm_;
92
+ /// Do this many times
93
+ int numberTimes_;
94
+
95
+ };
96
+
97
+
98
+ class CbcHeuristicGreedyEquality : public CbcHeuristic {
99
+ public:
100
+
101
+ // Default Constructor
102
+ CbcHeuristicGreedyEquality ();
103
+
104
+ /* Constructor with model - assumed before cuts
105
+ Initial version does not do Lps
106
+ */
107
+ CbcHeuristicGreedyEquality (CbcModel & model);
108
+
109
+ // Copy constructor
110
+ CbcHeuristicGreedyEquality ( const CbcHeuristicGreedyEquality &);
111
+
112
+ // Destructor
113
+ ~CbcHeuristicGreedyEquality ();
114
+
115
+ /// Clone
116
+ virtual CbcHeuristic * clone() const;
117
+ /// Assignment operator
118
+ CbcHeuristicGreedyEquality & operator=(const CbcHeuristicGreedyEquality& rhs);
119
+ /// Create C++ lines to get to current state
120
+ virtual void generateCpp( FILE * fp) ;
121
+
122
+ /// update model (This is needed if cliques update matrix etc)
123
+ virtual void setModel(CbcModel * model);
124
+
125
+ using CbcHeuristic::solution ;
126
+ /** returns 0 if no solution, 1 if valid solution.
127
+ Sets solution values if good, sets objective value (only if good)
128
+ We leave all variables which are at one at this node of the
129
+ tree to that value and will
130
+ initially set all others to zero. We then sort all variables in order of their cost
131
+ divided by the number of entries in rows which are not yet covered. We randomize that
132
+ value a bit so that ties will be broken in different ways on different runs of the heuristic.
133
+ We then choose the best one and set it to one and repeat the exercise.
134
+
135
+ */
136
+ virtual int solution(double & objectiveValue,
137
+ double * newSolution);
138
+ /// Validate model i.e. sets when_ to 0 if necessary (may be NULL)
139
+ virtual void validate() ;
140
+ /// Resets stuff if model changes
141
+ virtual void resetModel(CbcModel * model);
142
+ /* Algorithm
143
+ 0 - use current upper bounds
144
+ 1 - use original upper bounds
145
+ If 10 added perturb ratios more
146
+ if 100 added round up all >=0.5
147
+ */
148
+ inline int algorithm() const {
149
+ return algorithm_;
150
+ }
151
+ inline void setAlgorithm(int value) {
152
+ algorithm_ = value;
153
+ }
154
+ // Fraction of rhs to cover before branch and cut
155
+ inline void setFraction(double value) {
156
+ fraction_ = value;
157
+ }
158
+ inline double fraction() const {
159
+ return fraction_;
160
+ }
161
+ // Only do this many times
162
+ inline int numberTimes() const {
163
+ return numberTimes_;
164
+ }
165
+ inline void setNumberTimes(int value) {
166
+ numberTimes_ = value;
167
+ }
168
+ protected:
169
+ /// Guts of constructor from a CbcModel
170
+ void gutsOfConstructor(CbcModel * model);
171
+ // Data
172
+
173
+ // Original matrix by column
174
+ CoinPackedMatrix matrix_;
175
+ // Fraction of rhs to cover before branch and cut
176
+ double fraction_;
177
+ // original number of rows
178
+ int originalNumberRows_;
179
+ /* Algorithm
180
+ 0 - use current upper bounds
181
+ 1 - use original upper bounds
182
+ If 10 added perturb ratios more
183
+ */
184
+ int algorithm_;
185
+ /// Do this many times
186
+ int numberTimes_;
187
+
188
+ };
189
+
190
+ /** Greedy heuristic for SOS and L rows (and positive elements)
191
+ */
192
+
193
+ class CbcHeuristicGreedySOS : public CbcHeuristic {
194
+ public:
195
+
196
+ // Default Constructor
197
+ CbcHeuristicGreedySOS ();
198
+
199
+ /* Constructor with model - assumed before cuts
200
+ Initial version does not do Lps
201
+ */
202
+ CbcHeuristicGreedySOS (CbcModel & model);
203
+
204
+ // Copy constructor
205
+ CbcHeuristicGreedySOS ( const CbcHeuristicGreedySOS &);
206
+
207
+ // Destructor
208
+ ~CbcHeuristicGreedySOS ();
209
+
210
+ /// Clone
211
+ virtual CbcHeuristic * clone() const;
212
+ /// Assignment operator
213
+ CbcHeuristicGreedySOS & operator=(const CbcHeuristicGreedySOS& rhs);
214
+ /// Create C++ lines to get to current state
215
+ virtual void generateCpp( FILE * fp) ;
216
+
217
+ /// update model (This is needed if cliques update matrix etc)
218
+ virtual void setModel(CbcModel * model);
219
+
220
+ using CbcHeuristic::solution ;
221
+ /** returns 0 if no solution, 1 if valid solution.
222
+ Sets solution values if good, sets objective value (only if good)
223
+ We leave all variables which are at one at this node of the
224
+ tree to that value and will
225
+ initially set all others to zero. We then sort all variables in order of their cost
226
+ divided by the number of entries in rows which are not yet covered. We randomize that
227
+ value a bit so that ties will be broken in different ways on different runs of the heuristic.
228
+ We then choose the best one and set it to one and repeat the exercise.
229
+
230
+ */
231
+ virtual int solution(double & objectiveValue,
232
+ double * newSolution);
233
+ /// Validate model i.e. sets when_ to 0 if necessary (may be NULL)
234
+ virtual void validate() ;
235
+ /// Resets stuff if model changes
236
+ virtual void resetModel(CbcModel * model);
237
+ /* Algorithm
238
+ Bits
239
+ 1 bit - use current model, otherwise original
240
+ 2 - use current solution as starting point, otherwise pure greedy
241
+ 4 - as 2 but use merit not merit/size
242
+ 8 - use duals to modify greedy
243
+ 16 - use duals on GUB/SOS in special way
244
+ */
245
+ inline int algorithm() const {
246
+ return algorithm_;
247
+ }
248
+ inline void setAlgorithm(int value) {
249
+ algorithm_ = value;
250
+ }
251
+ // Only do this many times
252
+ inline int numberTimes() const {
253
+ return numberTimes_;
254
+ }
255
+ inline void setNumberTimes(int value) {
256
+ numberTimes_ = value;
257
+ }
258
+
259
+ protected:
260
+ /// Guts of constructor from a CbcModel
261
+ void gutsOfConstructor(CbcModel * model);
262
+ // Data
263
+
264
+ // Original RHS - if -1.0 then SOS otherwise <= value
265
+ double * originalRhs_;
266
+ // Original matrix by column
267
+ CoinPackedMatrix matrix_;
268
+ // original number of rows
269
+ int originalNumberRows_;
270
+ /* Algorithm
271
+ */
272
+ int algorithm_;
273
+ /// Do this many times
274
+ int numberTimes_;
275
+
276
+ };
277
+
278
+
279
+ #endif
280
+
@@ -0,0 +1,271 @@
1
+ /* $Id: CbcHeuristicLocal.hpp 1943 2013-07-21 09:05:45Z forrest $ */
2
+ // Copyright (C) 2002, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #ifndef CbcHeuristicLocal_H
7
+ #define CbcHeuristicLocal_H
8
+
9
+ #include "CbcHeuristic.hpp"
10
+ /** LocalSearch class
11
+ */
12
+
13
+ class CbcHeuristicLocal : public CbcHeuristic {
14
+ public:
15
+
16
+ // Default Constructor
17
+ CbcHeuristicLocal ();
18
+
19
+ /* Constructor with model - assumed before cuts
20
+ Initial version does not do Lps
21
+ */
22
+ CbcHeuristicLocal (CbcModel & model);
23
+
24
+ // Copy constructor
25
+ CbcHeuristicLocal ( const CbcHeuristicLocal &);
26
+
27
+ // Destructor
28
+ ~CbcHeuristicLocal ();
29
+
30
+ /// Clone
31
+ virtual CbcHeuristic * clone() const;
32
+
33
+ /// Assignment operator
34
+ CbcHeuristicLocal & operator=(const CbcHeuristicLocal& rhs);
35
+
36
+ /// Create C++ lines to get to current state
37
+ virtual void generateCpp( FILE * fp) ;
38
+
39
+ /// Resets stuff if model changes
40
+ virtual void resetModel(CbcModel * model);
41
+
42
+ /// update model (This is needed if cliques update matrix etc)
43
+ virtual void setModel(CbcModel * model);
44
+
45
+ using CbcHeuristic::solution ;
46
+ /** returns 0 if no solution, 1 if valid solution.
47
+ Sets solution values if good, sets objective value (only if good)
48
+ This is called after cuts have been added - so can not add cuts
49
+ First tries setting a variable to better value. If feasible then
50
+ tries setting others. If not feasible then tries swaps
51
+
52
+ ********
53
+
54
+ This first version does not do LP's and does swaps of two integer
55
+ variables. Later versions could do Lps.
56
+ */
57
+ virtual int solution(double & objectiveValue,
58
+ double * newSolution);
59
+ /// This version fixes stuff and does IP
60
+ int solutionFix(double & objectiveValue,
61
+ double * newSolution,
62
+ const int * keep);
63
+
64
+ /// Sets type of search
65
+ inline void setSearchType(int value) {
66
+ swap_ = value;
67
+ }
68
+ /// Used array so we can set
69
+ inline int * used() const {
70
+ return used_;
71
+ }
72
+
73
+ protected:
74
+ // Data
75
+
76
+ // Original matrix by column
77
+ CoinPackedMatrix matrix_;
78
+
79
+ // Number of solutions so we only do after new solution
80
+ int numberSolutions_;
81
+ // Type of search 0=normal, 1=BAB
82
+ int swap_;
83
+ /// Whether a variable has been in a solution (also when)
84
+ int * used_;
85
+ };
86
+
87
+ /** Proximity Search class
88
+ */
89
+ class CbcHeuristicFPump;
90
+ class CbcHeuristicProximity : public CbcHeuristic {
91
+ public:
92
+
93
+ // Default Constructor
94
+ CbcHeuristicProximity ();
95
+
96
+ /* Constructor with model - assumed before cuts
97
+ */
98
+ CbcHeuristicProximity (CbcModel & model);
99
+
100
+ // Copy constructor
101
+ CbcHeuristicProximity ( const CbcHeuristicProximity &);
102
+
103
+ // Destructor
104
+ ~CbcHeuristicProximity ();
105
+
106
+ /// Clone
107
+ virtual CbcHeuristic * clone() const;
108
+
109
+ /// Assignment operator
110
+ CbcHeuristicProximity & operator=(const CbcHeuristicProximity& rhs);
111
+
112
+ /// Create C++ lines to get to current state
113
+ virtual void generateCpp( FILE * fp) ;
114
+
115
+ /// Resets stuff if model changes
116
+ virtual void resetModel(CbcModel * model);
117
+
118
+ /// update model (This is needed if cliques update matrix etc)
119
+ virtual void setModel(CbcModel * model);
120
+
121
+ using CbcHeuristic::solution ;
122
+ /** returns 0 if no solution, 1 if valid solution.
123
+ Sets solution values if good, sets objective value (only if good)
124
+ */
125
+ virtual int solution(double & objectiveValue,
126
+ double * newSolution);
127
+ /// Set extra increment
128
+ inline void setIncrement(double value)
129
+ { increment_ = value;}
130
+ /// Used array so we can set
131
+ inline int * used() const {
132
+ return used_;
133
+ }
134
+
135
+ protected:
136
+ // Data
137
+ /// Increment to use if no change
138
+ double increment_;
139
+ /// Copy of Feasibility pump
140
+ CbcHeuristicFPump * feasibilityPump_;
141
+ /// Number of solutions so we only do after new solution
142
+ int numberSolutions_;
143
+ /// Whether a variable has been in a solution (also when)
144
+ int * used_;
145
+ };
146
+
147
+
148
+ /** Naive class
149
+ a) Fix all ints as close to zero as possible
150
+ b) Fix all ints with nonzero costs and < large to zero
151
+ c) Put bounds round continuous and UIs and maximize
152
+ */
153
+
154
+ class CbcHeuristicNaive : public CbcHeuristic {
155
+ public:
156
+
157
+ // Default Constructor
158
+ CbcHeuristicNaive ();
159
+
160
+ /* Constructor with model - assumed before cuts
161
+ Initial version does not do Lps
162
+ */
163
+ CbcHeuristicNaive (CbcModel & model);
164
+
165
+ // Copy constructor
166
+ CbcHeuristicNaive ( const CbcHeuristicNaive &);
167
+
168
+ // Destructor
169
+ ~CbcHeuristicNaive ();
170
+
171
+ /// Clone
172
+ virtual CbcHeuristic * clone() const;
173
+
174
+ /// Assignment operator
175
+ CbcHeuristicNaive & operator=(const CbcHeuristicNaive& rhs);
176
+
177
+ /// Create C++ lines to get to current state
178
+ virtual void generateCpp( FILE * fp) ;
179
+
180
+ /// Resets stuff if model changes
181
+ virtual void resetModel(CbcModel * model);
182
+
183
+ /// update model (This is needed if cliques update matrix etc)
184
+ virtual void setModel(CbcModel * model);
185
+
186
+ using CbcHeuristic::solution ;
187
+ /** returns 0 if no solution, 1 if valid solution.
188
+ Sets solution values if good, sets objective value (only if good)
189
+ */
190
+ virtual int solution(double & objectiveValue,
191
+ double * newSolution);
192
+
193
+ /// Sets large cost value
194
+ inline void setLargeValue(double value) {
195
+ large_ = value;
196
+ }
197
+ /// Gets large cost value
198
+ inline double largeValue() const {
199
+ return large_;
200
+ }
201
+
202
+ protected:
203
+ /// Data
204
+ /// Large value
205
+ double large_;
206
+ };
207
+
208
+ /** Crossover Search class
209
+ */
210
+
211
+ class CbcHeuristicCrossover : public CbcHeuristic {
212
+ public:
213
+
214
+ // Default Constructor
215
+ CbcHeuristicCrossover ();
216
+
217
+ /* Constructor with model - assumed before cuts
218
+ Initial version does not do Lps
219
+ */
220
+ CbcHeuristicCrossover (CbcModel & model);
221
+
222
+ // Copy constructor
223
+ CbcHeuristicCrossover ( const CbcHeuristicCrossover &);
224
+
225
+ // Destructor
226
+ ~CbcHeuristicCrossover ();
227
+
228
+ /// Clone
229
+ virtual CbcHeuristic * clone() const;
230
+
231
+ /// Assignment operator
232
+ CbcHeuristicCrossover & operator=(const CbcHeuristicCrossover& rhs);
233
+
234
+ /// Create C++ lines to get to current state
235
+ virtual void generateCpp( FILE * fp) ;
236
+
237
+ /// Resets stuff if model changes
238
+ virtual void resetModel(CbcModel * model);
239
+
240
+ /// update model (This is needed if cliques update matrix etc)
241
+ virtual void setModel(CbcModel * model);
242
+
243
+ using CbcHeuristic::solution ;
244
+ /** returns 0 if no solution, 1 if valid solution.
245
+ Fix variables if agree in useNumber_ solutions
246
+ when_ 0 off, 1 only at new solutions, 2 also every now and then
247
+ add 10 to make only if agree at lower bound
248
+ */
249
+ virtual int solution(double & objectiveValue,
250
+ double * newSolution);
251
+
252
+ /// Sets number of solutions to use
253
+ inline void setNumberSolutions(int value) {
254
+ if (value > 0 && value <= 10)
255
+ useNumber_ = value;
256
+ }
257
+
258
+ protected:
259
+ // Data
260
+ /// Attempts
261
+ std::vector <double> attempts_;
262
+ /// Random numbers to stop same search happening
263
+ double random_[10];
264
+ /// Number of solutions so we only do after new solution
265
+ int numberSolutions_;
266
+ /// Number of solutions to use
267
+ int useNumber_;
268
+ };
269
+
270
+ #endif
271
+
@@ -0,0 +1,58 @@
1
+ /* $Id: CbcHeuristicPivotAndFix.hpp 1899 2013-04-09 18:12:08Z stefan $ */
2
+ // Copyright (C) 2008, 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 CbcHeuristicPivotAndFix_H
7
+ #define CbcHeuristicPivotAndFix_H
8
+
9
+ #include "CbcHeuristic.hpp"
10
+ /** LocalSearch class
11
+ */
12
+
13
+ class CbcHeuristicPivotAndFix : public CbcHeuristic {
14
+ public:
15
+
16
+ // Default Constructor
17
+ CbcHeuristicPivotAndFix ();
18
+
19
+ /* Constructor with model - assumed before cuts
20
+ Initial version does not do Lps
21
+ */
22
+ CbcHeuristicPivotAndFix (CbcModel & model);
23
+
24
+ // Copy constructor
25
+ CbcHeuristicPivotAndFix ( const CbcHeuristicPivotAndFix &);
26
+
27
+ // Destructor
28
+ ~CbcHeuristicPivotAndFix ();
29
+
30
+ /// Clone
31
+ virtual CbcHeuristic * clone() const;
32
+
33
+ /// Assignment operator
34
+ CbcHeuristicPivotAndFix & operator=(const CbcHeuristicPivotAndFix& rhs);
35
+
36
+ /// Create C++ lines to get to current state
37
+ virtual void generateCpp( FILE * fp) ;
38
+
39
+ /// Resets stuff if model changes
40
+ virtual void resetModel(CbcModel * model);
41
+
42
+ /// update model (This is needed if cliques update matrix etc)
43
+ virtual void setModel(CbcModel * model);
44
+
45
+ using CbcHeuristic::solution ;
46
+ /** returns 0 if no solution, 1 if valid solution.
47
+ Sets solution values if good, sets objective value (only if good)
48
+ needs comments
49
+ */
50
+ virtual int solution(double & objectiveValue,
51
+ double * newSolution);
52
+
53
+ protected:
54
+ };
55
+
56
+
57
+ #endif
58
+
@@ -0,0 +1,77 @@
1
+ // $Id: CbcHeuristicRENS.hpp 2105 2015-01-05 13:11:11Z forrest $
2
+ // Copyright (C) 2006, 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 12/5/09 carved out of CbcHeuristicRINS
7
+
8
+ #ifndef CbcHeuristicRENS_H
9
+ #define CbcHeuristicRENS_H
10
+
11
+ #include "CbcHeuristic.hpp"
12
+
13
+ /** LocalSearch class
14
+ */
15
+
16
+ class CbcHeuristicRENS : public CbcHeuristic {
17
+ public:
18
+
19
+ // Default Constructor
20
+ CbcHeuristicRENS ();
21
+
22
+ /* Constructor with model - assumed before cuts
23
+ Initial version does not do Lps
24
+ */
25
+ CbcHeuristicRENS (CbcModel & model);
26
+
27
+ // Copy constructor
28
+ CbcHeuristicRENS ( const CbcHeuristicRENS &);
29
+
30
+ // Destructor
31
+ ~CbcHeuristicRENS ();
32
+
33
+ /// Clone
34
+ virtual CbcHeuristic * clone() const;
35
+
36
+
37
+ /// Assignment operator
38
+ CbcHeuristicRENS & operator=(const CbcHeuristicRENS& rhs);
39
+
40
+ /// Resets stuff if model changes
41
+ virtual void resetModel(CbcModel * model);
42
+
43
+ /// update model (This is needed if cliques update matrix etc)
44
+ virtual void setModel(CbcModel * model);
45
+
46
+ using CbcHeuristic::solution ;
47
+ /** returns 0 if no solution, 1 if valid solution.
48
+ Sets solution values if good, sets objective value (only if good)
49
+ This does Relaxation Extension Neighborhood Search
50
+ Does not run if when_<2 and a solution exists
51
+ */
52
+ virtual int solution(double & objectiveValue,
53
+ double * newSolution);
54
+
55
+ /// Set type
56
+ inline void setRensType(int value)
57
+ { rensType_ = value;}
58
+
59
+ protected:
60
+ // Data
61
+ /// Number of tries
62
+ int numberTries_;
63
+ /** Type
64
+ 0 - fix at LB
65
+ 1 - fix on dj
66
+ 2 - fix at UB as well
67
+ 3 - fix on 0.01*average dj
68
+ add 16 to allow two tries
69
+ 32 - if solution exists use to keep more variables
70
+ 64 - if priorities keep high priority
71
+ 128 - if priorities keep low priority
72
+ */
73
+ int rensType_;
74
+ };
75
+
76
+ #endif
77
+