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,532 @@
1
+
2
+ /* $Id: CbcOrClpParam.hpp 2175 2015-10-06 08:56:43Z forrest $ */
3
+ // Copyright (C) 2002, International Business Machines
4
+ // Corporation and others. All Rights Reserved.
5
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
6
+
7
+ #ifdef USE_CBCCONFIG
8
+ # include "CbcConfig.h"
9
+ #else
10
+ # include "ClpConfig.h"
11
+ #endif
12
+
13
+ #ifndef CbcOrClpParam_H
14
+ #define CbcOrClpParam_H
15
+ /**
16
+ This has parameter handling stuff which can be shared between Cbc and Clp (and Dylp etc).
17
+
18
+ This (and .cpp) should be copied so that it is the same in Cbc/Test and Clp/Test.
19
+ I know this is not elegant but it seems simplest.
20
+
21
+ It uses COIN_HAS_CBC for parameters wanted by CBC
22
+ It uses COIN_HAS_CLP for parameters wanted by CLP (or CBC using CLP)
23
+ It could use COIN_HAS_DYLP for parameters wanted by DYLP
24
+ It could use COIN_HAS_DYLP_OR_CLP for parameters wanted by DYLP or CLP etc etc
25
+
26
+ */
27
+ class OsiSolverInterface;
28
+ class CbcModel;
29
+ class ClpSimplex;
30
+ /*! \brief Parameter codes
31
+
32
+ Parameter type ranges are allocated as follows
33
+ <ul>
34
+ <li> 1 -- 100 double parameters
35
+ <li> 101 -- 200 integer parameters
36
+ <li> 201 -- 250 string parameters
37
+ <li> 251 -- 300 cuts etc(string but broken out for clarity)
38
+ <li> 301 -- 400 `actions'
39
+ </ul>
40
+
41
+ `Actions' do not necessarily invoke an immediate action; it's just that they
42
+ don't fit neatly into the parameters array.
43
+
44
+ This coding scheme is in flux.
45
+ */
46
+
47
+ enum CbcOrClpParameterType
48
+
49
+ {
50
+ CBC_PARAM_GENERALQUERY = -100,
51
+ CBC_PARAM_FULLGENERALQUERY,
52
+
53
+ CLP_PARAM_DBL_PRIMALTOLERANCE = 1,
54
+ CLP_PARAM_DBL_DUALTOLERANCE,
55
+ CLP_PARAM_DBL_TIMELIMIT,
56
+ CLP_PARAM_DBL_DUALBOUND,
57
+ CLP_PARAM_DBL_PRIMALWEIGHT,
58
+ CLP_PARAM_DBL_OBJSCALE,
59
+ CLP_PARAM_DBL_RHSSCALE,
60
+ CLP_PARAM_DBL_ZEROTOLERANCE,
61
+
62
+ CBC_PARAM_DBL_INFEASIBILITYWEIGHT = 51,
63
+ CBC_PARAM_DBL_CUTOFF,
64
+ CBC_PARAM_DBL_INTEGERTOLERANCE,
65
+ CBC_PARAM_DBL_INCREMENT,
66
+ CBC_PARAM_DBL_ALLOWABLEGAP,
67
+ CBC_PARAM_DBL_TIMELIMIT_BAB,
68
+ CBC_PARAM_DBL_GAPRATIO,
69
+
70
+ CBC_PARAM_DBL_DJFIX = 81,
71
+ CBC_PARAM_DBL_TIGHTENFACTOR,
72
+ CLP_PARAM_DBL_PRESOLVETOLERANCE,
73
+ CLP_PARAM_DBL_OBJSCALE2,
74
+ CBC_PARAM_DBL_FAKEINCREMENT,
75
+ CBC_PARAM_DBL_FAKECUTOFF,
76
+ CBC_PARAM_DBL_ARTIFICIALCOST,
77
+ CBC_PARAM_DBL_DEXTRA3,
78
+ CBC_PARAM_DBL_SMALLBAB,
79
+ CBC_PARAM_DBL_DEXTRA4,
80
+ CBC_PARAM_DBL_DEXTRA5,
81
+
82
+ CLP_PARAM_INT_SOLVERLOGLEVEL = 101,
83
+ #ifndef COIN_HAS_CBC
84
+ CLP_PARAM_INT_LOGLEVEL = 101,
85
+ #endif
86
+ CLP_PARAM_INT_MAXFACTOR,
87
+ CLP_PARAM_INT_PERTVALUE,
88
+ CLP_PARAM_INT_MAXITERATION,
89
+ CLP_PARAM_INT_PRESOLVEPASS,
90
+ CLP_PARAM_INT_IDIOT,
91
+ CLP_PARAM_INT_SPRINT,
92
+ CLP_PARAM_INT_OUTPUTFORMAT,
93
+ CLP_PARAM_INT_SLPVALUE,
94
+ CLP_PARAM_INT_PRESOLVEOPTIONS,
95
+ CLP_PARAM_INT_PRINTOPTIONS,
96
+ CLP_PARAM_INT_SPECIALOPTIONS,
97
+ CLP_PARAM_INT_SUBSTITUTION,
98
+ CLP_PARAM_INT_DUALIZE,
99
+ CLP_PARAM_INT_VERBOSE,
100
+ CLP_PARAM_INT_CPP,
101
+ CLP_PARAM_INT_PROCESSTUNE,
102
+ CLP_PARAM_INT_USESOLUTION,
103
+ CLP_PARAM_INT_RANDOMSEED,
104
+ CLP_PARAM_INT_MORESPECIALOPTIONS,
105
+ CLP_PARAM_INT_DECOMPOSE_BLOCKS,
106
+
107
+ CBC_PARAM_INT_STRONGBRANCHING = 151,
108
+ CBC_PARAM_INT_CUTDEPTH,
109
+ CBC_PARAM_INT_MAXNODES,
110
+ CBC_PARAM_INT_NUMBERBEFORE,
111
+ CBC_PARAM_INT_NUMBERANALYZE,
112
+ CBC_PARAM_INT_MIPOPTIONS,
113
+ CBC_PARAM_INT_MOREMIPOPTIONS,
114
+ CBC_PARAM_INT_MAXHOTITS,
115
+ CBC_PARAM_INT_FPUMPITS,
116
+ CBC_PARAM_INT_MAXSOLS,
117
+ CBC_PARAM_INT_FPUMPTUNE,
118
+ CBC_PARAM_INT_TESTOSI,
119
+ CBC_PARAM_INT_EXTRA1,
120
+ CBC_PARAM_INT_EXTRA2,
121
+ CBC_PARAM_INT_EXTRA3,
122
+ CBC_PARAM_INT_EXTRA4,
123
+ CBC_PARAM_INT_DEPTHMINIBAB,
124
+ CBC_PARAM_INT_CUTPASSINTREE,
125
+ CBC_PARAM_INT_THREADS,
126
+ CBC_PARAM_INT_CUTPASS,
127
+ CBC_PARAM_INT_VUBTRY,
128
+ CBC_PARAM_INT_DENSE,
129
+ CBC_PARAM_INT_EXPERIMENT,
130
+ CBC_PARAM_INT_DIVEOPT,
131
+ CBC_PARAM_INT_DIVEOPTSOLVES,
132
+ CBC_PARAM_INT_STRATEGY,
133
+ CBC_PARAM_INT_SMALLFACT,
134
+ CBC_PARAM_INT_HOPTIONS,
135
+ CBC_PARAM_INT_CUTLENGTH,
136
+ CBC_PARAM_INT_FPUMPTUNE2,
137
+ #ifdef COIN_HAS_CBC
138
+ CLP_PARAM_INT_LOGLEVEL ,
139
+ #endif
140
+ CBC_PARAM_INT_MAXSAVEDSOLS,
141
+ CBC_PARAM_INT_RANDOMSEED,
142
+ CBC_PARAM_INT_MULTIPLEROOTS,
143
+ CBC_PARAM_INT_STRONG_STRATEGY,
144
+ CBC_PARAM_INT_EXTRA_VARIABLES,
145
+ CBC_PARAM_INT_MAX_SLOW_CUTS,
146
+ CBC_PARAM_INT_MOREMOREMIPOPTIONS,
147
+
148
+ CLP_PARAM_STR_DIRECTION = 201,
149
+ CLP_PARAM_STR_DUALPIVOT,
150
+ CLP_PARAM_STR_SCALING,
151
+ CLP_PARAM_STR_ERRORSALLOWED,
152
+ CLP_PARAM_STR_KEEPNAMES,
153
+ CLP_PARAM_STR_SPARSEFACTOR,
154
+ CLP_PARAM_STR_PRIMALPIVOT,
155
+ CLP_PARAM_STR_PRESOLVE,
156
+ CLP_PARAM_STR_CRASH,
157
+ CLP_PARAM_STR_BIASLU,
158
+ CLP_PARAM_STR_PERTURBATION,
159
+ CLP_PARAM_STR_MESSAGES,
160
+ CLP_PARAM_STR_AUTOSCALE,
161
+ CLP_PARAM_STR_CHOLESKY,
162
+ CLP_PARAM_STR_KKT,
163
+ CLP_PARAM_STR_BARRIERSCALE,
164
+ CLP_PARAM_STR_GAMMA,
165
+ CLP_PARAM_STR_CROSSOVER,
166
+ CLP_PARAM_STR_PFI,
167
+ CLP_PARAM_STR_INTPRINT,
168
+ CLP_PARAM_STR_VECTOR,
169
+ CLP_PARAM_STR_FACTORIZATION,
170
+ CLP_PARAM_STR_ALLCOMMANDS,
171
+ CLP_PARAM_STR_TIME_MODE,
172
+ CLP_PARAM_STR_ABCWANTED,
173
+ CLP_PARAM_STR_BUFFER_MODE,
174
+
175
+ CBC_PARAM_STR_NODESTRATEGY = 251,
176
+ CBC_PARAM_STR_BRANCHSTRATEGY,
177
+ CBC_PARAM_STR_CUTSSTRATEGY,
178
+ CBC_PARAM_STR_HEURISTICSTRATEGY,
179
+ CBC_PARAM_STR_GOMORYCUTS,
180
+ CBC_PARAM_STR_PROBINGCUTS,
181
+ CBC_PARAM_STR_KNAPSACKCUTS,
182
+ CBC_PARAM_STR_REDSPLITCUTS,
183
+ CBC_PARAM_STR_ROUNDING,
184
+ CBC_PARAM_STR_SOLVER,
185
+ CBC_PARAM_STR_CLIQUECUTS,
186
+ CBC_PARAM_STR_COSTSTRATEGY,
187
+ CBC_PARAM_STR_FLOWCUTS,
188
+ CBC_PARAM_STR_MIXEDCUTS,
189
+ CBC_PARAM_STR_TWOMIRCUTS,
190
+ CBC_PARAM_STR_PREPROCESS,
191
+ CBC_PARAM_STR_FPUMP,
192
+ CBC_PARAM_STR_GREEDY,
193
+ CBC_PARAM_STR_COMBINE,
194
+ CBC_PARAM_STR_PROXIMITY,
195
+ CBC_PARAM_STR_LOCALTREE,
196
+ CBC_PARAM_STR_SOS,
197
+ CBC_PARAM_STR_LANDPCUTS,
198
+ CBC_PARAM_STR_RINS,
199
+ CBC_PARAM_STR_RESIDCUTS,
200
+ CBC_PARAM_STR_RENS,
201
+ CBC_PARAM_STR_DIVINGS,
202
+ CBC_PARAM_STR_DIVINGC,
203
+ CBC_PARAM_STR_DIVINGF,
204
+ CBC_PARAM_STR_DIVINGG,
205
+ CBC_PARAM_STR_DIVINGL,
206
+ CBC_PARAM_STR_DIVINGP,
207
+ CBC_PARAM_STR_DIVINGV,
208
+ CBC_PARAM_STR_DINS,
209
+ CBC_PARAM_STR_PIVOTANDFIX,
210
+ CBC_PARAM_STR_RANDROUND,
211
+ CBC_PARAM_STR_NAIVE,
212
+ CBC_PARAM_STR_ZEROHALFCUTS,
213
+ CBC_PARAM_STR_CPX,
214
+ CBC_PARAM_STR_CROSSOVER2,
215
+ CBC_PARAM_STR_PIVOTANDCOMPLEMENT,
216
+ CBC_PARAM_STR_VND,
217
+ CBC_PARAM_STR_LAGOMORYCUTS,
218
+ CBC_PARAM_STR_LATWOMIRCUTS,
219
+ CBC_PARAM_STR_REDSPLIT2CUTS,
220
+ CBC_PARAM_STR_GMICUTS,
221
+ CBC_PARAM_STR_CUTOFF_CONSTRAINT,
222
+ CBC_PARAM_STR_DW,
223
+ CBC_PARAM_STR_ORBITAL,
224
+
225
+ CLP_PARAM_ACTION_DIRECTORY = 301,
226
+ CLP_PARAM_ACTION_DIRSAMPLE,
227
+ CLP_PARAM_ACTION_DIRNETLIB,
228
+ CBC_PARAM_ACTION_DIRMIPLIB,
229
+ CLP_PARAM_ACTION_IMPORT,
230
+ CLP_PARAM_ACTION_EXPORT,
231
+ CLP_PARAM_ACTION_RESTORE,
232
+ CLP_PARAM_ACTION_SAVE,
233
+ CLP_PARAM_ACTION_DUALSIMPLEX,
234
+ CLP_PARAM_ACTION_PRIMALSIMPLEX,
235
+ CLP_PARAM_ACTION_EITHERSIMPLEX,
236
+ CLP_PARAM_ACTION_MAXIMIZE,
237
+ CLP_PARAM_ACTION_MINIMIZE,
238
+ CLP_PARAM_ACTION_EXIT,
239
+ CLP_PARAM_ACTION_STDIN,
240
+ CLP_PARAM_ACTION_UNITTEST,
241
+ CLP_PARAM_ACTION_NETLIB_EITHER,
242
+ CLP_PARAM_ACTION_NETLIB_DUAL,
243
+ CLP_PARAM_ACTION_NETLIB_PRIMAL,
244
+ CLP_PARAM_ACTION_SOLUTION,
245
+ CLP_PARAM_ACTION_SAVESOL,
246
+ CLP_PARAM_ACTION_TIGHTEN,
247
+ CLP_PARAM_ACTION_FAKEBOUND,
248
+ CLP_PARAM_ACTION_HELP,
249
+ CLP_PARAM_ACTION_PLUSMINUS,
250
+ CLP_PARAM_ACTION_NETWORK,
251
+ CLP_PARAM_ACTION_ALLSLACK,
252
+ CLP_PARAM_ACTION_REVERSE,
253
+ CLP_PARAM_ACTION_BARRIER,
254
+ CLP_PARAM_ACTION_NETLIB_BARRIER,
255
+ CLP_PARAM_ACTION_NETLIB_TUNE,
256
+ CLP_PARAM_ACTION_REALLY_SCALE,
257
+ CLP_PARAM_ACTION_BASISIN,
258
+ CLP_PARAM_ACTION_BASISOUT,
259
+ CLP_PARAM_ACTION_SOLVECONTINUOUS,
260
+ CLP_PARAM_ACTION_CLEARCUTS,
261
+ CLP_PARAM_ACTION_VERSION,
262
+ CLP_PARAM_ACTION_STATISTICS,
263
+ CLP_PARAM_ACTION_DEBUG,
264
+ CLP_PARAM_ACTION_DUMMY,
265
+ CLP_PARAM_ACTION_PRINTMASK,
266
+ CLP_PARAM_ACTION_OUTDUPROWS,
267
+ CLP_PARAM_ACTION_USERCLP,
268
+ CLP_PARAM_ACTION_MODELIN,
269
+ CLP_PARAM_ACTION_CSVSTATISTICS,
270
+ CLP_PARAM_ACTION_STOREDFILE,
271
+ CLP_PARAM_ACTION_ENVIRONMENT,
272
+ CLP_PARAM_ACTION_PARAMETRICS,
273
+ CLP_PARAM_ACTION_GMPL_SOLUTION,
274
+ CLP_PARAM_ACTION_RESTORESOL,
275
+
276
+ CBC_PARAM_ACTION_BAB = 361,
277
+ CBC_PARAM_ACTION_MIPLIB,
278
+ CBC_PARAM_ACTION_STRENGTHEN,
279
+ CBC_PARAM_ACTION_PRIORITYIN,
280
+ CBC_PARAM_ACTION_MIPSTART,
281
+ CBC_PARAM_ACTION_USERCBC,
282
+ CBC_PARAM_ACTION_DOHEURISTIC,
283
+ CLP_PARAM_ACTION_NEXTBESTSOLUTION,
284
+
285
+ CBC_PARAM_NOTUSED_OSLSTUFF = 401,
286
+ CBC_PARAM_NOTUSED_CBCSTUFF,
287
+
288
+ CBC_PARAM_NOTUSED_INVALID = 1000
289
+ } ;
290
+ #include <vector>
291
+ #include <string>
292
+
293
+ /// Very simple class for setting parameters
294
+
295
+ class CbcOrClpParam {
296
+ public:
297
+ /**@name Constructor and destructor */
298
+ //@{
299
+ /// Constructors
300
+ CbcOrClpParam ( );
301
+ CbcOrClpParam (std::string name, std::string help,
302
+ double lower, double upper, CbcOrClpParameterType type, int display = 2);
303
+ CbcOrClpParam (std::string name, std::string help,
304
+ int lower, int upper, CbcOrClpParameterType type, int display = 2);
305
+ // Other strings will be added by insert
306
+ CbcOrClpParam (std::string name, std::string help, std::string firstValue,
307
+ CbcOrClpParameterType type, int whereUsed = 7, int display = 2);
308
+ // Action
309
+ CbcOrClpParam (std::string name, std::string help,
310
+ CbcOrClpParameterType type, int whereUsed = 7, int display = 2);
311
+ /// Copy constructor.
312
+ CbcOrClpParam(const CbcOrClpParam &);
313
+ /// Assignment operator. This copies the data
314
+ CbcOrClpParam & operator=(const CbcOrClpParam & rhs);
315
+ /// Destructor
316
+ ~CbcOrClpParam ( );
317
+ //@}
318
+
319
+ /**@name stuff */
320
+ //@{
321
+ /// Insert string (only valid for keywords)
322
+ void append(std::string keyWord);
323
+ /// Adds one help line
324
+ void addHelp(std::string keyWord);
325
+ /// Returns name
326
+ inline std::string name( ) const {
327
+ return name_;
328
+ }
329
+ /// Returns short help
330
+ inline std::string shortHelp( ) const {
331
+ return shortHelp_;
332
+ }
333
+ /// Sets a double parameter (nonzero code if error)
334
+ int setDoubleParameter(CbcModel & model, double value) ;
335
+ /// Sets double parameter and returns printable string and error code
336
+ const char * setDoubleParameterWithMessage ( CbcModel & model, double value , int & returnCode);
337
+ /// Gets a double parameter
338
+ double doubleParameter(CbcModel & model) const;
339
+ /// Sets a int parameter (nonzero code if error)
340
+ int setIntParameter(CbcModel & model, int value) ;
341
+ /// Sets int parameter and returns printable string and error code
342
+ const char * setIntParameterWithMessage ( CbcModel & model, int value , int & returnCode);
343
+ /// Gets a int parameter
344
+ int intParameter(CbcModel & model) const;
345
+ /// Sets a double parameter (nonzero code if error)
346
+ int setDoubleParameter(ClpSimplex * model, double value) ;
347
+ /// Gets a double parameter
348
+ double doubleParameter(ClpSimplex * model) const;
349
+ /// Sets double parameter and returns printable string and error code
350
+ const char * setDoubleParameterWithMessage ( ClpSimplex * model, double value , int & returnCode);
351
+ /// Sets a int parameter (nonzero code if error)
352
+ int setIntParameter(ClpSimplex * model, int value) ;
353
+ /// Sets int parameter and returns printable string and error code
354
+ const char * setIntParameterWithMessage ( ClpSimplex * model, int value , int & returnCode);
355
+ /// Gets a int parameter
356
+ int intParameter(ClpSimplex * model) const;
357
+ /// Sets a double parameter (nonzero code if error)
358
+ int setDoubleParameter(OsiSolverInterface * model, double value) ;
359
+ /// Sets double parameter and returns printable string and error code
360
+ const char * setDoubleParameterWithMessage ( OsiSolverInterface * model, double value , int & returnCode);
361
+ /// Gets a double parameter
362
+ double doubleParameter(OsiSolverInterface * model) const;
363
+ /// Sets a int parameter (nonzero code if error)
364
+ int setIntParameter(OsiSolverInterface * model, int value) ;
365
+ /// Sets int parameter and returns printable string and error code
366
+ const char * setIntParameterWithMessage ( OsiSolverInterface * model, int value , int & returnCode);
367
+ /// Gets a int parameter
368
+ int intParameter(OsiSolverInterface * model) const;
369
+ /// Checks a double parameter (nonzero code if error)
370
+ int checkDoubleParameter(double value) const;
371
+ /// Returns name which could match
372
+ std::string matchName ( ) const;
373
+ /// Returns length of name for ptinting
374
+ int lengthMatchName ( ) const;
375
+ /// Returns parameter option which matches (-1 if none)
376
+ int parameterOption ( std::string check ) const;
377
+ /// Prints parameter options
378
+ void printOptions ( ) const;
379
+ /// Returns current parameter option
380
+ inline std::string currentOption ( ) const {
381
+ return definedKeyWords_[currentKeyWord_];
382
+ }
383
+ /// Sets current parameter option
384
+ void setCurrentOption ( int value , bool printIt = false);
385
+ /// Sets current parameter option and returns printable string
386
+ const char * setCurrentOptionWithMessage ( int value );
387
+ /// Sets current parameter option using string
388
+ void setCurrentOption (const std::string value );
389
+ /// Sets current parameter option using string with message
390
+ const char * setCurrentOptionWithMessage (const std::string value );
391
+ /// Returns current parameter option position
392
+ int currentOptionAsInteger ( ) const ;
393
+ /** Returns current parameter option position
394
+ but if fake keyword returns a fake value and sets
395
+ fakeInteger to true value. If not fake then fakeInteger is -COIN_INT_MAX
396
+ */
397
+ int currentOptionAsInteger ( int & fakeInteger ) const;
398
+ /// Sets int value
399
+ void setIntValue ( int value );
400
+ /// Sets int value with message
401
+ const char * setIntValueWithMessage ( int value );
402
+ inline int intValue () const {
403
+ return intValue_;
404
+ }
405
+ /// Sets double value
406
+ void setDoubleValue ( double value );
407
+ /// Sets double value with message
408
+ const char * setDoubleValueWithMessage ( double value );
409
+ inline double doubleValue () const {
410
+ return doubleValue_;
411
+ }
412
+ /// Sets string value
413
+ void setStringValue ( std::string value );
414
+ inline std::string stringValue () const {
415
+ return stringValue_;
416
+ }
417
+ /// Returns 1 if matches minimum, 2 if matches less, 0 if not matched
418
+ int matches (std::string input) const;
419
+ /// type
420
+ inline CbcOrClpParameterType type() const {
421
+ return type_;
422
+ }
423
+ /// whether to display
424
+ inline int displayThis() const {
425
+ return display_;
426
+ }
427
+ /// Set Long help
428
+ inline void setLonghelp(const std::string help) {
429
+ longHelp_ = help;
430
+ }
431
+ /// Print Long help
432
+ void printLongHelp() const;
433
+ /// Print action and string
434
+ void printString() const;
435
+ /** 7 if used everywhere,
436
+ 1 - used by clp
437
+ 2 - used by cbc
438
+ 4 - used by ampl
439
+ */
440
+ inline int whereUsed() const {
441
+ return whereUsed_;
442
+ }
443
+ /// Gets value of fake keyword
444
+ inline int fakeKeyWord() const
445
+ { return fakeKeyWord_;}
446
+ /// Sets value of fake keyword
447
+ inline void setFakeKeyWord(int value, int fakeValue)
448
+ { fakeKeyWord_ = value; fakeValue_ = fakeValue;}
449
+ /// Sets value of fake keyword to current size of keywords
450
+ void setFakeKeyWord(int fakeValue);
451
+
452
+ private:
453
+ /// gutsOfConstructor
454
+ void gutsOfConstructor();
455
+ //@}
456
+ ////////////////// data //////////////////
457
+ private:
458
+
459
+ /**@name data
460
+ We might as well throw all type data in - could derive?
461
+ */
462
+ //@{
463
+ // Type see CbcOrClpParameterType
464
+ CbcOrClpParameterType type_;
465
+ /// If double == okay
466
+ double lowerDoubleValue_;
467
+ double upperDoubleValue_;
468
+ /// If int == okay
469
+ int lowerIntValue_;
470
+ int upperIntValue_;
471
+ // Length of name
472
+ unsigned int lengthName_;
473
+ // Minimum match
474
+ unsigned int lengthMatch_;
475
+ /// set of valid strings
476
+ std::vector<std::string> definedKeyWords_;
477
+ /// Name
478
+ std::string name_;
479
+ /// Short help
480
+ std::string shortHelp_;
481
+ /// Long help
482
+ std::string longHelp_;
483
+ /// Action
484
+ CbcOrClpParameterType action_;
485
+ /// Current keyWord (if a keyword parameter)
486
+ int currentKeyWord_;
487
+ /// Display on ?
488
+ int display_;
489
+ /// Integer parameter - current value
490
+ int intValue_;
491
+ /// Double parameter - current value
492
+ double doubleValue_;
493
+ /// String parameter - current value
494
+ std::string stringValue_;
495
+ /** 7 if used everywhere,
496
+ 1 - used by clp
497
+ 2 - used by cbc
498
+ 4 - used by ampl
499
+ */
500
+ int whereUsed_;
501
+ /** If >=0 then integers allowed as a fake keyword
502
+ So minusnnnn would got to -nnnn in currentKeyword_
503
+ and plusnnnn would go to fakeKeyword_+nnnn
504
+ */
505
+ int fakeKeyWord_;
506
+ /// Return this as main value if an integer
507
+ int fakeValue_;
508
+ //@}
509
+ };
510
+ /// Simple read stuff
511
+ std::string CoinReadNextField();
512
+
513
+ std::string CoinReadGetCommand(int argc, const char *argv[]);
514
+ std::string CoinReadGetString(int argc, const char *argv[]);
515
+ // valid 0 - okay, 1 bad, 2 not there
516
+ int CoinReadGetIntField(int argc, const char *argv[], int * valid);
517
+ double CoinReadGetDoubleField(int argc, const char *argv[], int * valid);
518
+ void CoinReadPrintit(const char * input);
519
+ void setCbcOrClpPrinting(bool yesNo);
520
+ #define CBCMAXPARAMETERS 250
521
+ /*
522
+ Subroutine to establish the cbc parameter array. See the description of
523
+ class CbcOrClpParam for details. Pulled from C..Main() for clarity.
524
+ */
525
+ void establishParams (int &numberParameters, CbcOrClpParam *const parameters);
526
+ // Given a parameter type - returns its number in list
527
+ int whichParam (CbcOrClpParameterType name,
528
+ int numberParameters, CbcOrClpParam *const parameters);
529
+ // Dump/restore a solution to file
530
+ void saveSolution(const ClpSimplex * lpSolver, std::string fileName);
531
+ void restoreSolution(ClpSimplex * lpSolver, std::string fileName, int mode);
532
+ #endif /* CbcOrClpParam_H */