ruby-cbc 0.1.9 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/Rakefile +0 -2
  4. data/lib/ruby-cbc.rb +1 -1
  5. data/lib/ruby-cbc/problem.rb +6 -8
  6. data/lib/ruby-cbc/version.rb +1 -1
  7. data/ruby-cbc.gemspec +3 -2
  8. metadata +17 -287
  9. data/ext/ruby-cbc/cbc.i +0 -15
  10. data/ext/ruby-cbc/cbc_wrap.c +0 -4618
  11. data/ext/ruby-cbc/extconf.rb +0 -60
  12. data/ext/ruby-cbc/install/bin/cbc +0 -0
  13. data/ext/ruby-cbc/install/bin/clp +0 -0
  14. data/ext/ruby-cbc/install/include/coin/CbcBranchActual.hpp +0 -24
  15. data/ext/ruby-cbc/install/include/coin/CbcBranchAllDifferent.hpp +0 -62
  16. data/ext/ruby-cbc/install/include/coin/CbcBranchBase.hpp +0 -78
  17. data/ext/ruby-cbc/install/include/coin/CbcBranchCut.hpp +0 -183
  18. data/ext/ruby-cbc/install/include/coin/CbcBranchDecision.hpp +0 -129
  19. data/ext/ruby-cbc/install/include/coin/CbcBranchDefaultDecision.hpp +0 -100
  20. data/ext/ruby-cbc/install/include/coin/CbcBranchDynamic.hpp +0 -206
  21. data/ext/ruby-cbc/install/include/coin/CbcBranchLotsize.hpp +0 -242
  22. data/ext/ruby-cbc/install/include/coin/CbcBranchToFixLots.hpp +0 -94
  23. data/ext/ruby-cbc/install/include/coin/CbcBranchingObject.hpp +0 -236
  24. data/ext/ruby-cbc/install/include/coin/CbcClique.hpp +0 -303
  25. data/ext/ruby-cbc/install/include/coin/CbcCompare.hpp +0 -39
  26. data/ext/ruby-cbc/install/include/coin/CbcCompareActual.hpp +0 -14
  27. data/ext/ruby-cbc/install/include/coin/CbcCompareBase.hpp +0 -142
  28. data/ext/ruby-cbc/install/include/coin/CbcCompareDefault.hpp +0 -120
  29. data/ext/ruby-cbc/install/include/coin/CbcCompareDepth.hpp +0 -47
  30. data/ext/ruby-cbc/install/include/coin/CbcCompareEstimate.hpp +0 -48
  31. data/ext/ruby-cbc/install/include/coin/CbcCompareObjective.hpp +0 -49
  32. data/ext/ruby-cbc/install/include/coin/CbcConfig.h +0 -14
  33. data/ext/ruby-cbc/install/include/coin/CbcConsequence.hpp +0 -49
  34. data/ext/ruby-cbc/install/include/coin/CbcCountRowCut.hpp +0 -168
  35. data/ext/ruby-cbc/install/include/coin/CbcCutGenerator.hpp +0 -482
  36. data/ext/ruby-cbc/install/include/coin/CbcCutModifier.hpp +0 -57
  37. data/ext/ruby-cbc/install/include/coin/CbcCutSubsetModifier.hpp +0 -66
  38. data/ext/ruby-cbc/install/include/coin/CbcDummyBranchingObject.hpp +0 -83
  39. data/ext/ruby-cbc/install/include/coin/CbcEventHandler.hpp +0 -245
  40. data/ext/ruby-cbc/install/include/coin/CbcFathom.hpp +0 -137
  41. data/ext/ruby-cbc/install/include/coin/CbcFathomDynamicProgramming.hpp +0 -169
  42. data/ext/ruby-cbc/install/include/coin/CbcFeasibilityBase.hpp +0 -56
  43. data/ext/ruby-cbc/install/include/coin/CbcFixVariable.hpp +0 -67
  44. data/ext/ruby-cbc/install/include/coin/CbcFollowOn.hpp +0 -207
  45. data/ext/ruby-cbc/install/include/coin/CbcFullNodeInfo.hpp +0 -161
  46. data/ext/ruby-cbc/install/include/coin/CbcGeneral.hpp +0 -60
  47. data/ext/ruby-cbc/install/include/coin/CbcGeneralDepth.hpp +0 -279
  48. data/ext/ruby-cbc/install/include/coin/CbcHeuristic.hpp +0 -682
  49. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDINS.hpp +0 -96
  50. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDW.hpp +0 -309
  51. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDive.hpp +0 -192
  52. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveCoefficient.hpp +0 -52
  53. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveFractional.hpp +0 -52
  54. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveGuided.hpp +0 -55
  55. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveLineSearch.hpp +0 -52
  56. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDivePseudoCost.hpp +0 -60
  57. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveVectorLength.hpp +0 -52
  58. data/ext/ruby-cbc/install/include/coin/CbcHeuristicFPump.hpp +0 -340
  59. data/ext/ruby-cbc/install/include/coin/CbcHeuristicGreedy.hpp +0 -280
  60. data/ext/ruby-cbc/install/include/coin/CbcHeuristicLocal.hpp +0 -271
  61. data/ext/ruby-cbc/install/include/coin/CbcHeuristicPivotAndFix.hpp +0 -58
  62. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRENS.hpp +0 -77
  63. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRINS.hpp +0 -102
  64. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRandRound.hpp +0 -58
  65. data/ext/ruby-cbc/install/include/coin/CbcHeuristicVND.hpp +0 -94
  66. data/ext/ruby-cbc/install/include/coin/CbcLinked.hpp +0 -1406
  67. data/ext/ruby-cbc/install/include/coin/CbcMessage.hpp +0 -94
  68. data/ext/ruby-cbc/install/include/coin/CbcMipStartIO.hpp +0 -26
  69. data/ext/ruby-cbc/install/include/coin/CbcModel.hpp +0 -2952
  70. data/ext/ruby-cbc/install/include/coin/CbcNWay.hpp +0 -166
  71. data/ext/ruby-cbc/install/include/coin/CbcNode.hpp +0 -351
  72. data/ext/ruby-cbc/install/include/coin/CbcNodeInfo.hpp +0 -349
  73. data/ext/ruby-cbc/install/include/coin/CbcObject.hpp +0 -272
  74. data/ext/ruby-cbc/install/include/coin/CbcObjectUpdateData.hpp +0 -64
  75. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.cpp +0 -4134
  76. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.hpp +0 -532
  77. data/ext/ruby-cbc/install/include/coin/CbcParam.hpp +0 -324
  78. data/ext/ruby-cbc/install/include/coin/CbcPartialNodeInfo.hpp +0 -110
  79. data/ext/ruby-cbc/install/include/coin/CbcSOS.hpp +0 -279
  80. data/ext/ruby-cbc/install/include/coin/CbcSimpleInteger.hpp +0 -286
  81. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +0 -564
  82. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerPseudoCost.hpp +0 -114
  83. data/ext/ruby-cbc/install/include/coin/CbcSolver.hpp +0 -447
  84. data/ext/ruby-cbc/install/include/coin/CbcStrategy.hpp +0 -258
  85. data/ext/ruby-cbc/install/include/coin/CbcSubProblem.hpp +0 -83
  86. data/ext/ruby-cbc/install/include/coin/CbcTree.hpp +0 -490
  87. data/ext/ruby-cbc/install/include/coin/CbcTreeLocal.hpp +0 -372
  88. data/ext/ruby-cbc/install/include/coin/Cbc_C_Interface.h +0 -381
  89. data/ext/ruby-cbc/install/include/coin/Cgl012cut.hpp +0 -464
  90. data/ext/ruby-cbc/install/include/coin/CglAllDifferent.hpp +0 -115
  91. data/ext/ruby-cbc/install/include/coin/CglClique.hpp +0 -308
  92. data/ext/ruby-cbc/install/include/coin/CglConfig.h +0 -19
  93. data/ext/ruby-cbc/install/include/coin/CglCutGenerator.hpp +0 -121
  94. data/ext/ruby-cbc/install/include/coin/CglDuplicateRow.hpp +0 -189
  95. data/ext/ruby-cbc/install/include/coin/CglFlowCover.hpp +0 -371
  96. data/ext/ruby-cbc/install/include/coin/CglGMI.hpp +0 -364
  97. data/ext/ruby-cbc/install/include/coin/CglGMIParam.hpp +0 -313
  98. data/ext/ruby-cbc/install/include/coin/CglGomory.hpp +0 -204
  99. data/ext/ruby-cbc/install/include/coin/CglKnapsackCover.hpp +0 -310
  100. data/ext/ruby-cbc/install/include/coin/CglLandP.hpp +0 -306
  101. data/ext/ruby-cbc/install/include/coin/CglLandPValidator.hpp +0 -130
  102. data/ext/ruby-cbc/install/include/coin/CglLiftAndProject.hpp +0 -104
  103. data/ext/ruby-cbc/install/include/coin/CglMessage.hpp +0 -50
  104. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding.hpp +0 -429
  105. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding2.hpp +0 -427
  106. data/ext/ruby-cbc/install/include/coin/CglOddHole.hpp +0 -160
  107. data/ext/ruby-cbc/install/include/coin/CglParam.hpp +0 -93
  108. data/ext/ruby-cbc/install/include/coin/CglPreProcess.hpp +0 -492
  109. data/ext/ruby-cbc/install/include/coin/CglProbing.hpp +0 -543
  110. data/ext/ruby-cbc/install/include/coin/CglRedSplit.hpp +0 -448
  111. data/ext/ruby-cbc/install/include/coin/CglRedSplit2.hpp +0 -494
  112. data/ext/ruby-cbc/install/include/coin/CglRedSplit2Param.hpp +0 -495
  113. data/ext/ruby-cbc/install/include/coin/CglRedSplitParam.hpp +0 -272
  114. data/ext/ruby-cbc/install/include/coin/CglResidualCapacity.hpp +0 -240
  115. data/ext/ruby-cbc/install/include/coin/CglSimpleRounding.hpp +0 -174
  116. data/ext/ruby-cbc/install/include/coin/CglStored.hpp +0 -125
  117. data/ext/ruby-cbc/install/include/coin/CglTreeInfo.hpp +0 -180
  118. data/ext/ruby-cbc/install/include/coin/CglTwomir.hpp +0 -565
  119. data/ext/ruby-cbc/install/include/coin/CglZeroHalf.hpp +0 -133
  120. data/ext/ruby-cbc/install/include/coin/ClpAmplObjective.hpp +0 -113
  121. data/ext/ruby-cbc/install/include/coin/ClpCholeskyBase.hpp +0 -294
  122. data/ext/ruby-cbc/install/include/coin/ClpCholeskyDense.hpp +0 -162
  123. data/ext/ruby-cbc/install/include/coin/ClpConfig.h +0 -17
  124. data/ext/ruby-cbc/install/include/coin/ClpConstraint.hpp +0 -125
  125. data/ext/ruby-cbc/install/include/coin/ClpConstraintAmpl.hpp +0 -108
  126. data/ext/ruby-cbc/install/include/coin/ClpConstraintLinear.hpp +0 -110
  127. data/ext/ruby-cbc/install/include/coin/ClpConstraintQuadratic.hpp +0 -119
  128. data/ext/ruby-cbc/install/include/coin/ClpDualRowDantzig.hpp +0 -71
  129. data/ext/ruby-cbc/install/include/coin/ClpDualRowPivot.hpp +0 -129
  130. data/ext/ruby-cbc/install/include/coin/ClpDualRowSteepest.hpp +0 -153
  131. data/ext/ruby-cbc/install/include/coin/ClpDummyMatrix.hpp +0 -183
  132. data/ext/ruby-cbc/install/include/coin/ClpDynamicExampleMatrix.hpp +0 -186
  133. data/ext/ruby-cbc/install/include/coin/ClpDynamicMatrix.hpp +0 -381
  134. data/ext/ruby-cbc/install/include/coin/ClpEventHandler.hpp +0 -187
  135. data/ext/ruby-cbc/install/include/coin/ClpFactorization.hpp +0 -432
  136. data/ext/ruby-cbc/install/include/coin/ClpGubDynamicMatrix.hpp +0 -247
  137. data/ext/ruby-cbc/install/include/coin/ClpGubMatrix.hpp +0 -358
  138. data/ext/ruby-cbc/install/include/coin/ClpInterior.hpp +0 -570
  139. data/ext/ruby-cbc/install/include/coin/ClpLinearObjective.hpp +0 -103
  140. data/ext/ruby-cbc/install/include/coin/ClpMatrixBase.hpp +0 -524
  141. data/ext/ruby-cbc/install/include/coin/ClpMessage.hpp +0 -131
  142. data/ext/ruby-cbc/install/include/coin/ClpModel.hpp +0 -1307
  143. data/ext/ruby-cbc/install/include/coin/ClpNetworkMatrix.hpp +0 -229
  144. data/ext/ruby-cbc/install/include/coin/ClpNode.hpp +0 -349
  145. data/ext/ruby-cbc/install/include/coin/ClpNonLinearCost.hpp +0 -401
  146. data/ext/ruby-cbc/install/include/coin/ClpObjective.hpp +0 -134
  147. data/ext/ruby-cbc/install/include/coin/ClpPackedMatrix.hpp +0 -638
  148. data/ext/ruby-cbc/install/include/coin/ClpParameters.hpp +0 -126
  149. data/ext/ruby-cbc/install/include/coin/ClpPdcoBase.hpp +0 -103
  150. data/ext/ruby-cbc/install/include/coin/ClpPlusMinusOneMatrix.hpp +0 -290
  151. data/ext/ruby-cbc/install/include/coin/ClpPresolve.hpp +0 -299
  152. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnDantzig.hpp +0 -72
  153. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnPivot.hpp +0 -155
  154. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnSteepest.hpp +0 -247
  155. data/ext/ruby-cbc/install/include/coin/ClpQuadraticObjective.hpp +0 -155
  156. data/ext/ruby-cbc/install/include/coin/ClpSimplex.hpp +0 -1797
  157. data/ext/ruby-cbc/install/include/coin/ClpSimplexDual.hpp +0 -300
  158. data/ext/ruby-cbc/install/include/coin/ClpSimplexNonlinear.hpp +0 -117
  159. data/ext/ruby-cbc/install/include/coin/ClpSimplexOther.hpp +0 -277
  160. data/ext/ruby-cbc/install/include/coin/ClpSimplexPrimal.hpp +0 -244
  161. data/ext/ruby-cbc/install/include/coin/ClpSolve.hpp +0 -446
  162. data/ext/ruby-cbc/install/include/coin/Clp_C_Interface.h +0 -525
  163. data/ext/ruby-cbc/install/include/coin/CoinAlloc.hpp +0 -176
  164. data/ext/ruby-cbc/install/include/coin/CoinBuild.hpp +0 -149
  165. data/ext/ruby-cbc/install/include/coin/CoinDenseFactorization.hpp +0 -419
  166. data/ext/ruby-cbc/install/include/coin/CoinDenseVector.hpp +0 -383
  167. data/ext/ruby-cbc/install/include/coin/CoinDistance.hpp +0 -48
  168. data/ext/ruby-cbc/install/include/coin/CoinError.hpp +0 -257
  169. data/ext/ruby-cbc/install/include/coin/CoinFactorization.hpp +0 -2044
  170. data/ext/ruby-cbc/install/include/coin/CoinFileIO.hpp +0 -166
  171. data/ext/ruby-cbc/install/include/coin/CoinFinite.hpp +0 -34
  172. data/ext/ruby-cbc/install/include/coin/CoinFloatEqual.hpp +0 -177
  173. data/ext/ruby-cbc/install/include/coin/CoinHelperFunctions.hpp +0 -1111
  174. data/ext/ruby-cbc/install/include/coin/CoinIndexedVector.hpp +0 -1164
  175. data/ext/ruby-cbc/install/include/coin/CoinLpIO.hpp +0 -805
  176. data/ext/ruby-cbc/install/include/coin/CoinMessage.hpp +0 -96
  177. data/ext/ruby-cbc/install/include/coin/CoinMessageHandler.hpp +0 -666
  178. data/ext/ruby-cbc/install/include/coin/CoinModel.hpp +0 -1054
  179. data/ext/ruby-cbc/install/include/coin/CoinModelUseful.hpp +0 -441
  180. data/ext/ruby-cbc/install/include/coin/CoinMpsIO.hpp +0 -1056
  181. data/ext/ruby-cbc/install/include/coin/CoinOslFactorization.hpp +0 -280
  182. data/ext/ruby-cbc/install/include/coin/CoinPackedMatrix.hpp +0 -947
  183. data/ext/ruby-cbc/install/include/coin/CoinPackedVector.hpp +0 -657
  184. data/ext/ruby-cbc/install/include/coin/CoinPackedVectorBase.hpp +0 -269
  185. data/ext/ruby-cbc/install/include/coin/CoinParam.hpp +0 -644
  186. data/ext/ruby-cbc/install/include/coin/CoinPragma.hpp +0 -26
  187. data/ext/ruby-cbc/install/include/coin/CoinPresolveDoubleton.hpp +0 -73
  188. data/ext/ruby-cbc/install/include/coin/CoinPresolveDual.hpp +0 -85
  189. data/ext/ruby-cbc/install/include/coin/CoinPresolveDupcol.hpp +0 -226
  190. data/ext/ruby-cbc/install/include/coin/CoinPresolveEmpty.hpp +0 -116
  191. data/ext/ruby-cbc/install/include/coin/CoinPresolveFixed.hpp +0 -181
  192. data/ext/ruby-cbc/install/include/coin/CoinPresolveForcing.hpp +0 -61
  193. data/ext/ruby-cbc/install/include/coin/CoinPresolveImpliedFree.hpp +0 -60
  194. data/ext/ruby-cbc/install/include/coin/CoinPresolveIsolated.hpp +0 -51
  195. data/ext/ruby-cbc/install/include/coin/CoinPresolveMatrix.hpp +0 -1842
  196. data/ext/ruby-cbc/install/include/coin/CoinPresolveMonitor.hpp +0 -105
  197. data/ext/ruby-cbc/install/include/coin/CoinPresolvePsdebug.hpp +0 -166
  198. data/ext/ruby-cbc/install/include/coin/CoinPresolveSingleton.hpp +0 -112
  199. data/ext/ruby-cbc/install/include/coin/CoinPresolveSubst.hpp +0 -101
  200. data/ext/ruby-cbc/install/include/coin/CoinPresolveTighten.hpp +0 -55
  201. data/ext/ruby-cbc/install/include/coin/CoinPresolveTripleton.hpp +0 -66
  202. data/ext/ruby-cbc/install/include/coin/CoinPresolveUseless.hpp +0 -63
  203. data/ext/ruby-cbc/install/include/coin/CoinPresolveZeros.hpp +0 -60
  204. data/ext/ruby-cbc/install/include/coin/CoinRational.hpp +0 -44
  205. data/ext/ruby-cbc/install/include/coin/CoinSearchTree.hpp +0 -465
  206. data/ext/ruby-cbc/install/include/coin/CoinShallowPackedVector.hpp +0 -148
  207. data/ext/ruby-cbc/install/include/coin/CoinSignal.hpp +0 -117
  208. data/ext/ruby-cbc/install/include/coin/CoinSimpFactorization.hpp +0 -431
  209. data/ext/ruby-cbc/install/include/coin/CoinSmartPtr.hpp +0 -528
  210. data/ext/ruby-cbc/install/include/coin/CoinSnapshot.hpp +0 -476
  211. data/ext/ruby-cbc/install/include/coin/CoinSort.hpp +0 -678
  212. data/ext/ruby-cbc/install/include/coin/CoinStructuredModel.hpp +0 -247
  213. data/ext/ruby-cbc/install/include/coin/CoinTime.hpp +0 -310
  214. data/ext/ruby-cbc/install/include/coin/CoinTypes.hpp +0 -64
  215. data/ext/ruby-cbc/install/include/coin/CoinUtility.hpp +0 -19
  216. data/ext/ruby-cbc/install/include/coin/CoinUtilsConfig.h +0 -34
  217. data/ext/ruby-cbc/install/include/coin/CoinWarmStart.hpp +0 -58
  218. data/ext/ruby-cbc/install/include/coin/CoinWarmStartBasis.hpp +0 -456
  219. data/ext/ruby-cbc/install/include/coin/CoinWarmStartDual.hpp +0 -166
  220. data/ext/ruby-cbc/install/include/coin/CoinWarmStartPrimalDual.hpp +0 -211
  221. data/ext/ruby-cbc/install/include/coin/CoinWarmStartVector.hpp +0 -488
  222. data/ext/ruby-cbc/install/include/coin/Coin_C_defines.h +0 -115
  223. data/ext/ruby-cbc/install/include/coin/Idiot.hpp +0 -298
  224. data/ext/ruby-cbc/install/include/coin/OsiAuxInfo.hpp +0 -206
  225. data/ext/ruby-cbc/install/include/coin/OsiBranchingObject.hpp +0 -1005
  226. data/ext/ruby-cbc/install/include/coin/OsiCbcSolverInterface.hpp +0 -764
  227. data/ext/ruby-cbc/install/include/coin/OsiChooseVariable.hpp +0 -534
  228. data/ext/ruby-cbc/install/include/coin/OsiClpSolverInterface.hpp +0 -1509
  229. data/ext/ruby-cbc/install/include/coin/OsiColCut.hpp +0 -324
  230. data/ext/ruby-cbc/install/include/coin/OsiCollections.hpp +0 -35
  231. data/ext/ruby-cbc/install/include/coin/OsiConfig.h +0 -19
  232. data/ext/ruby-cbc/install/include/coin/OsiCut.hpp +0 -245
  233. data/ext/ruby-cbc/install/include/coin/OsiCuts.hpp +0 -474
  234. data/ext/ruby-cbc/install/include/coin/OsiPresolve.hpp +0 -252
  235. data/ext/ruby-cbc/install/include/coin/OsiRowCut.hpp +0 -331
  236. data/ext/ruby-cbc/install/include/coin/OsiRowCutDebugger.hpp +0 -187
  237. data/ext/ruby-cbc/install/include/coin/OsiSolverBranch.hpp +0 -152
  238. data/ext/ruby-cbc/install/include/coin/OsiSolverInterface.hpp +0 -2143
  239. data/ext/ruby-cbc/install/include/coin/OsiSolverParameters.hpp +0 -142
  240. data/ext/ruby-cbc/install/include/coin/OsiUnitTests.hpp +0 -374
  241. data/ext/ruby-cbc/install/lib/libCbc.la +0 -35
  242. data/ext/ruby-cbc/install/lib/libCbc.so +0 -0
  243. data/ext/ruby-cbc/install/lib/libCbc.so.3 +0 -0
  244. data/ext/ruby-cbc/install/lib/libCbc.so.3.9.7 +0 -0
  245. data/ext/ruby-cbc/install/lib/libCbcSolver.la +0 -35
  246. data/ext/ruby-cbc/install/lib/libCbcSolver.so +0 -0
  247. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3 +0 -0
  248. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3.9.7 +0 -0
  249. data/ext/ruby-cbc/install/lib/libCgl.la +0 -35
  250. data/ext/ruby-cbc/install/lib/libCgl.so +0 -0
  251. data/ext/ruby-cbc/install/lib/libCgl.so.1 +0 -0
  252. data/ext/ruby-cbc/install/lib/libCgl.so.1.9.7 +0 -0
  253. data/ext/ruby-cbc/install/lib/libClp.la +0 -35
  254. data/ext/ruby-cbc/install/lib/libClp.so +0 -0
  255. data/ext/ruby-cbc/install/lib/libClp.so.1 +0 -0
  256. data/ext/ruby-cbc/install/lib/libClp.so.1.13.9 +0 -0
  257. data/ext/ruby-cbc/install/lib/libClpSolver.la +0 -35
  258. data/ext/ruby-cbc/install/lib/libClpSolver.so +0 -0
  259. data/ext/ruby-cbc/install/lib/libClpSolver.so.1 +0 -0
  260. data/ext/ruby-cbc/install/lib/libClpSolver.so.1.13.9 +0 -0
  261. data/ext/ruby-cbc/install/lib/libCoinUtils.la +0 -35
  262. data/ext/ruby-cbc/install/lib/libCoinUtils.so +0 -0
  263. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3 +0 -0
  264. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3.10.11 +0 -0
  265. data/ext/ruby-cbc/install/lib/libOsi.la +0 -35
  266. data/ext/ruby-cbc/install/lib/libOsi.so +0 -0
  267. data/ext/ruby-cbc/install/lib/libOsi.so.1 +0 -0
  268. data/ext/ruby-cbc/install/lib/libOsi.so.1.12.6 +0 -0
  269. data/ext/ruby-cbc/install/lib/libOsiCbc.la +0 -35
  270. data/ext/ruby-cbc/install/lib/libOsiCbc.so +0 -0
  271. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3 +0 -0
  272. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3.9.7 +0 -0
  273. data/ext/ruby-cbc/install/lib/libOsiClp.la +0 -35
  274. data/ext/ruby-cbc/install/lib/libOsiClp.so +0 -0
  275. data/ext/ruby-cbc/install/lib/libOsiClp.so.1 +0 -0
  276. data/ext/ruby-cbc/install/lib/libOsiClp.so.1.13.9 +0 -0
  277. data/ext/ruby-cbc/install/lib/libOsiCommonTests.la +0 -35
  278. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so +0 -0
  279. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1 +0 -0
  280. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1.12.6 +0 -0
  281. data/ext/ruby-cbc/install/lib/pkgconfig/cbc.pc +0 -12
  282. data/ext/ruby-cbc/install/lib/pkgconfig/cgl.pc +0 -12
  283. data/ext/ruby-cbc/install/lib/pkgconfig/clp.pc +0 -12
  284. data/ext/ruby-cbc/install/lib/pkgconfig/coindatamiplib3.pc +0 -9
  285. data/ext/ruby-cbc/install/lib/pkgconfig/coindatasample.pc +0 -9
  286. data/ext/ruby-cbc/install/lib/pkgconfig/coinutils.pc +0 -12
  287. data/ext/ruby-cbc/install/lib/pkgconfig/osi-cbc.pc +0 -12
  288. data/ext/ruby-cbc/install/lib/pkgconfig/osi-clp.pc +0 -12
  289. data/ext/ruby-cbc/install/lib/pkgconfig/osi-unittests.pc +0 -12
  290. data/ext/ruby-cbc/install/lib/pkgconfig/osi.pc +0 -12
@@ -1,764 +0,0 @@
1
- // $Id: OsiCbcSolverInterface.hpp 1899 2013-04-09 18:12:08Z stefan $
2
- // Copyright (C) 2000, International Business Machines
3
- // Corporation and others. All Rights Reserved.
4
- // This code is licensed under the terms of the Eclipse Public License (EPL).
5
-
6
- #ifndef OsiCbcSolverInterface_H
7
- #define OsiCbcSolverInterface_H
8
-
9
- #include <string>
10
- #include <cfloat>
11
- #include <map>
12
- #include "CbcModel.hpp"
13
- #include "CoinPackedMatrix.hpp"
14
- #include "OsiSolverInterface.hpp"
15
- #include "CbcStrategy.hpp"
16
- #include "CoinWarmStartBasis.hpp"
17
-
18
- class OsiRowCut;
19
- class OsiClpSolverInterface;
20
- static const double OsiCbcInfinity = COIN_DBL_MAX;
21
-
22
- //#############################################################################
23
-
24
- /** Cbc Solver Interface
25
-
26
- Instantiation of OsiCbcSolverInterface for the Model Algorithm.
27
-
28
- */
29
-
30
- class OsiCbcSolverInterface :
31
- virtual public OsiSolverInterface {
32
- friend void OsiCbcSolverInterfaceUnitTest(const std::string & mpsDir, const std::string & netlibDir);
33
-
34
- public:
35
- //---------------------------------------------------------------------------
36
- /**@name Solve methods */
37
- //@{
38
- /// Solve initial LP relaxation
39
- virtual void initialSolve();
40
-
41
- /// Resolve an LP relaxation after problem modification
42
- virtual void resolve();
43
-
44
- /// Invoke solver's built-in enumeration algorithm
45
- virtual void branchAndBound();
46
- //@}
47
-
48
- //---------------------------------------------------------------------------
49
- /**@name Parameter set/get methods
50
-
51
- The set methods return true if the parameter was set to the given value,
52
- false otherwise. There can be various reasons for failure: the given
53
- parameter is not applicable for the solver (e.g., refactorization
54
- frequency for the cbc algorithm), the parameter is not yet implemented
55
- for the solver or simply the value of the parameter is out of the range
56
- the solver accepts. If a parameter setting call returns false check the
57
- details of your solver.
58
-
59
- The get methods return true if the given parameter is applicable for the
60
- solver and is implemented. In this case the value of the parameter is
61
- returned in the second argument. Otherwise they return false.
62
- */
63
- //@{
64
- // Set an integer parameter
65
- bool setIntParam(OsiIntParam key, int value);
66
- // Set an double parameter
67
- bool setDblParam(OsiDblParam key, double value);
68
- // Set a string parameter
69
- bool setStrParam(OsiStrParam key, const std::string & value);
70
- // Get an integer parameter
71
- bool getIntParam(OsiIntParam key, int& value) const;
72
- // Get an double parameter
73
- bool getDblParam(OsiDblParam key, double& value) const;
74
- // Get a string parameter
75
- bool getStrParam(OsiStrParam key, std::string& value) const;
76
- // Set a hint parameter - overrides OsiSolverInterface
77
- virtual bool setHintParam(OsiHintParam key, bool yesNo=true,
78
- OsiHintStrength strength=OsiHintTry,
79
- void * otherInformation=NULL);
80
- /// Get a hint parameter
81
- virtual bool getHintParam(OsiHintParam key, bool& yesNo,
82
- OsiHintStrength& strength,
83
- void *& otherInformation) const;
84
-
85
- using OsiSolverInterface::getHintParam ;
86
- /// Get a hint parameter
87
- virtual bool getHintParam(OsiHintParam key, bool& yesNo,
88
- OsiHintStrength& strength) const;
89
- //@}
90
-
91
- //---------------------------------------------------------------------------
92
- ///@name Methods returning info on how the solution process terminated
93
- //@{
94
- /// Are there a numerical difficulties?
95
- virtual bool isAbandoned() const;
96
- /// Is optimality proven?
97
- virtual bool isProvenOptimal() const;
98
- /// Is primal infeasiblity proven?
99
- virtual bool isProvenPrimalInfeasible() const;
100
- /// Is dual infeasiblity proven?
101
- virtual bool isProvenDualInfeasible() const;
102
- /// Is the given primal objective limit reached?
103
- virtual bool isPrimalObjectiveLimitReached() const;
104
- /// Is the given dual objective limit reached?
105
- virtual bool isDualObjectiveLimitReached() const;
106
- /// Iteration limit reached?
107
- virtual bool isIterationLimitReached() const;
108
- //@}
109
-
110
- //---------------------------------------------------------------------------
111
- /**@name WarmStart related methods */
112
- //@{
113
-
114
- /*! \brief Get an empty warm start object
115
-
116
- This routine returns an empty CoinWarmStartBasis object. Its purpose is
117
- to provide a way to give a client a warm start basis object of the
118
- appropriate type, which can resized and modified as desired.
119
- */
120
-
121
- virtual CoinWarmStart *getEmptyWarmStart () const;
122
-
123
- /// Get warmstarting information
124
- virtual CoinWarmStart* getWarmStart() const;
125
- /** Set warmstarting information. Return true/false depending on whether
126
- the warmstart information was accepted or not. */
127
- virtual bool setWarmStart(const CoinWarmStart* warmstart);
128
- //@}
129
-
130
- //---------------------------------------------------------------------------
131
- /**@name Hotstart related methods (primarily used in strong branching). <br>
132
- The user can create a hotstart (a snapshot) of the optimization process
133
- then reoptimize over and over again always starting from there.<br>
134
- <strong>NOTE</strong>: between hotstarted optimizations only
135
- bound changes are allowed. */
136
- //@{
137
- /// Create a hotstart point of the optimization process
138
- virtual void markHotStart();
139
- /// Optimize starting from the hotstart
140
- virtual void solveFromHotStart();
141
- /// Delete the snapshot
142
- virtual void unmarkHotStart();
143
- //@}
144
-
145
- //---------------------------------------------------------------------------
146
- /**@name Problem information methods
147
-
148
- These methods call the solver's query routines to return
149
- information about the problem referred to by the current object.
150
- Querying a problem that has no data associated with it result in
151
- zeros for the number of rows and columns, and NULL pointers from
152
- the methods that return vectors.
153
-
154
- Const pointers returned from any data-query method are valid as
155
- long as the data is unchanged and the solver is not called.
156
- */
157
- //@{
158
- /**@name Methods related to querying the input data */
159
- //@{
160
- /// Get number of columns
161
- virtual int getNumCols() const;
162
-
163
- /// Get number of rows
164
- virtual int getNumRows() const;
165
-
166
- /// Get number of nonzero elements
167
- virtual int getNumElements() const ;
168
-
169
- /// Get pointer to array[getNumCols()] of column lower bounds
170
- virtual const double * getColLower() const;
171
-
172
- /// Get pointer to array[getNumCols()] of column upper bounds
173
- virtual const double * getColUpper() const;
174
-
175
- /** Get pointer to array[getNumRows()] of row constraint senses.
176
- <ul>
177
- <li>'L' <= constraint
178
- <li>'E' = constraint
179
- <li>'G' >= constraint
180
- <li>'R' ranged constraint
181
- <li>'N' free constraint
182
- </ul>
183
- */
184
- virtual const char * getRowSense() const;
185
-
186
- /** Get pointer to array[getNumRows()] of rows right-hand sides
187
- <ul>
188
- <li> if rowsense()[i] == 'L' then rhs()[i] == rowupper()[i]
189
- <li> if rowsense()[i] == 'G' then rhs()[i] == rowlower()[i]
190
- <li> if rowsense()[i] == 'R' then rhs()[i] == rowupper()[i]
191
- <li> if rowsense()[i] == 'N' then rhs()[i] == 0.0
192
- </ul>
193
- */
194
- virtual const double * getRightHandSide() const ;
195
-
196
- /** Get pointer to array[getNumRows()] of row ranges.
197
- <ul>
198
- <li> if rowsense()[i] == 'R' then
199
- rowrange()[i] == rowupper()[i] - rowlower()[i]
200
- <li> if rowsense()[i] != 'R' then
201
- rowrange()[i] is undefined
202
- </ul>
203
- */
204
- virtual const double * getRowRange() const ;
205
-
206
- /// Get pointer to array[getNumRows()] of row lower bounds
207
- virtual const double * getRowLower() const ;
208
-
209
- /// Get pointer to array[getNumRows()] of row upper bounds
210
- virtual const double * getRowUpper() const ;
211
-
212
- /// Get pointer to array[getNumCols()] of objective function coefficients
213
- virtual const double * getObjCoefficients() const;
214
-
215
- /// Get objective function sense (1 for min (default), -1 for max)
216
- virtual double getObjSense() const ;
217
-
218
- /// Return true if column is continuous
219
- virtual bool isContinuous(int colNumber) const;
220
-
221
-
222
- /// Get pointer to row-wise copy of matrix
223
- virtual const CoinPackedMatrix * getMatrixByRow() const;
224
-
225
- /// Get pointer to column-wise copy of matrix
226
- virtual const CoinPackedMatrix * getMatrixByCol() const;
227
-
228
- /// Get solver's value for infinity
229
- virtual double getInfinity() const;
230
- //@}
231
-
232
- /**@name Methods related to querying the solution */
233
- //@{
234
- /// Get pointer to array[getNumCols()] of primal solution vector
235
- virtual const double * getColSolution() const;
236
-
237
- /// Get pointer to array[getNumRows()] of dual prices
238
- virtual const double * getRowPrice() const;
239
-
240
- /// Get a pointer to array[getNumCols()] of reduced costs
241
- virtual const double * getReducedCost() const;
242
-
243
- /** Get pointer to array[getNumRows()] of row activity levels (constraint
244
- matrix times the solution vector */
245
- virtual const double * getRowActivity() const;
246
-
247
- /// Get objective function value
248
- virtual double getObjValue() const;
249
-
250
- /** Get how many iterations it took to solve the problem (whatever
251
- "iteration" mean to the solver. */
252
- virtual int getIterationCount() const ;
253
-
254
- /** Get as many dual rays as the solver can provide. (In case of proven
255
- primal infeasibility there should be at least one.)
256
-
257
- The first getNumRows() ray components will always be associated with
258
- the row duals (as returned by getRowPrice()). If \c fullRay is true,
259
- the final getNumCols() entries will correspond to the ray components
260
- associated with the nonbasic variables. If the full ray is requested
261
- and the method cannot provide it, it will throw an exception.
262
-
263
- <strong>NOTE for implementers of solver interfaces:</strong> <br>
264
- The double pointers in the vector should point to arrays of length
265
- getNumRows() and they should be allocated via new[]. <br>
266
-
267
- <strong>NOTE for users of solver interfaces:</strong> <br>
268
- It is the user's responsibility to free the double pointers in the
269
- vector using delete[].
270
- */
271
- virtual std::vector<double*> getDualRays(int maxNumRays,
272
- bool fullRay = false) const;
273
- /** Get as many primal rays as the solver can provide. (In case of proven
274
- dual infeasibility there should be at least one.)
275
-
276
- <strong>NOTE for implementers of solver interfaces:</strong> <br>
277
- The double pointers in the vector should point to arrays of length
278
- getNumCols() and they should be allocated via new[]. <br>
279
-
280
- <strong>NOTE for users of solver interfaces:</strong> <br>
281
- It is the user's responsibility to free the double pointers in the
282
- vector using delete[].
283
- */
284
- virtual std::vector<double*> getPrimalRays(int maxNumRays) const;
285
-
286
- //@}
287
-
288
- /*! \name Methods for row and column names.
289
-
290
- Because OsiCbc is a pass-through class, it's necessary to override any
291
- virtual method in order to be sure we catch an override by the underlying
292
- solver. See the OsiSolverInterface class documentation for detailed
293
- descriptions.
294
- */
295
- //@{
296
-
297
- /*! \brief Generate a standard name of the form Rnnnnnnn or Cnnnnnnn */
298
-
299
- virtual std::string dfltRowColName(char rc,
300
- int ndx, unsigned digits = 7) const ;
301
-
302
- /*! \brief Return the name of the objective function */
303
-
304
- virtual std::string getObjName (unsigned maxLen = std::string::npos) const ;
305
-
306
- /*! \brief Set the name of the objective function */
307
-
308
- virtual void setObjName (std::string name) ;
309
-
310
- /*! \brief Return the name of the row. */
311
-
312
- virtual std::string getRowName(int rowIndex,
313
- unsigned maxLen = std::string::npos) const ;
314
-
315
- /*! \brief Return a pointer to a vector of row names */
316
-
317
- virtual const OsiNameVec &getRowNames() ;
318
-
319
- /*! \brief Set a row name */
320
-
321
- virtual void setRowName(int ndx, std::string name) ;
322
-
323
- /*! \brief Set multiple row names */
324
-
325
- virtual void setRowNames(OsiNameVec &srcNames,
326
- int srcStart, int len, int tgtStart) ;
327
-
328
- /*! \brief Delete len row names starting at index tgtStart */
329
-
330
- virtual void deleteRowNames(int tgtStart, int len) ;
331
-
332
- /*! \brief Return the name of the column */
333
-
334
- virtual std::string getColName(int colIndex,
335
- unsigned maxLen = std::string::npos) const ;
336
-
337
- /*! \brief Return a pointer to a vector of column names */
338
-
339
- virtual const OsiNameVec &getColNames() ;
340
-
341
- /*! \brief Set a column name */
342
-
343
- virtual void setColName(int ndx, std::string name) ;
344
-
345
- /*! \brief Set multiple column names */
346
-
347
- virtual void setColNames(OsiNameVec &srcNames,
348
- int srcStart, int len, int tgtStart) ;
349
-
350
- /*! \brief Delete len column names starting at index tgtStart */
351
- virtual void deleteColNames(int tgtStart, int len) ;
352
-
353
- //@}
354
-
355
- //@}
356
-
357
- //---------------------------------------------------------------------------
358
-
359
- /**@name Problem modifying methods */
360
- //@{
361
- //-------------------------------------------------------------------------
362
- /**@name Changing bounds on variables and constraints */
363
- //@{
364
- /** Set an objective function coefficient */
365
- virtual void setObjCoeff( int elementIndex, double elementValue );
366
-
367
- using OsiSolverInterface::setColLower ;
368
- /** Set a single column lower bound<br>
369
- Use -DBL_MAX for -infinity. */
370
- virtual void setColLower( int elementIndex, double elementValue );
371
-
372
- using OsiSolverInterface::setColUpper ;
373
- /** Set a single column upper bound<br>
374
- Use DBL_MAX for infinity. */
375
- virtual void setColUpper( int elementIndex, double elementValue );
376
-
377
- /** Set a single column lower and upper bound */
378
- virtual void setColBounds( int elementIndex,
379
- double lower, double upper );
380
-
381
- /** Set the bounds on a number of columns simultaneously<br>
382
- The default implementation just invokes setColLower() and
383
- setColUpper() over and over again.
384
- @param indexFirst,indexLast pointers to the beginning and after the
385
- end of the array of the indices of the variables whose
386
- <em>either</em> bound changes
387
- @param boundList the new lower/upper bound pairs for the variables
388
- */
389
- virtual void setColSetBounds(const int* indexFirst,
390
- const int* indexLast,
391
- const double* boundList);
392
-
393
- /** Set a single row lower bound<br>
394
- Use -DBL_MAX for -infinity. */
395
- virtual void setRowLower( int elementIndex, double elementValue );
396
-
397
- /** Set a single row upper bound<br>
398
- Use DBL_MAX for infinity. */
399
- virtual void setRowUpper( int elementIndex, double elementValue ) ;
400
-
401
- /** Set a single row lower and upper bound */
402
- virtual void setRowBounds( int elementIndex,
403
- double lower, double upper ) ;
404
-
405
- /** Set the type of a single row<br> */
406
- virtual void setRowType(int index, char sense, double rightHandSide,
407
- double range);
408
-
409
- /** Set the bounds on a number of rows simultaneously<br>
410
- The default implementation just invokes setRowLower() and
411
- setRowUpper() over and over again.
412
- @param indexFirst,indexLast pointers to the beginning and after the
413
- end of the array of the indices of the constraints whose
414
- <em>either</em> bound changes
415
- @param boundList the new lower/upper bound pairs for the constraints
416
- */
417
- virtual void setRowSetBounds(const int* indexFirst,
418
- const int* indexLast,
419
- const double* boundList);
420
-
421
- /** Set the type of a number of rows simultaneously<br>
422
- The default implementation just invokes setRowType()
423
- over and over again.
424
- @param indexFirst,indexLast pointers to the beginning and after the
425
- end of the array of the indices of the constraints whose
426
- <em>any</em> characteristics changes
427
- @param senseList the new senses
428
- @param rhsList the new right hand sides
429
- @param rangeList the new ranges
430
- */
431
- virtual void setRowSetTypes(const int* indexFirst,
432
- const int* indexLast,
433
- const char* senseList,
434
- const double* rhsList,
435
- const double* rangeList);
436
- //@}
437
-
438
- //-------------------------------------------------------------------------
439
- /**@name Integrality related changing methods */
440
- //@{
441
- /** Set the index-th variable to be a continuous variable */
442
- virtual void setContinuous(int index);
443
- /** Set the index-th variable to be an integer variable */
444
- virtual void setInteger(int index);
445
- /** Set the variables listed in indices (which is of length len) to be
446
- continuous variables */
447
- virtual void setContinuous(const int* indices, int len);
448
- /** Set the variables listed in indices (which is of length len) to be
449
- integer variables */
450
- virtual void setInteger(const int* indices, int len);
451
- //@}
452
-
453
- //-------------------------------------------------------------------------
454
- /// Set objective function sense (1 for min (default), -1 for max,)
455
- virtual void setObjSense(double s );
456
-
457
- /** Set the primal solution column values
458
-
459
- colsol[numcols()] is an array of values of the problem column
460
- variables. These values are copied to memory owned by the
461
- solver object or the solver. They will be returned as the
462
- result of colsol() until changed by another call to
463
- setColsol() or by a call to any solver routine. Whether the
464
- solver makes use of the solution in any way is
465
- solver-dependent.
466
- */
467
- virtual void setColSolution(const double * colsol);
468
-
469
- /** Set dual solution vector
470
-
471
- rowprice[numrows()] is an array of values of the problem row
472
- dual variables. These values are copied to memory owned by the
473
- solver object or the solver. They will be returned as the
474
- result of rowprice() until changed by another call to
475
- setRowprice() or by a call to any solver routine. Whether the
476
- solver makes use of the solution in any way is
477
- solver-dependent.
478
- */
479
- virtual void setRowPrice(const double * rowprice);
480
-
481
- //-------------------------------------------------------------------------
482
- /**@name Methods to expand a problem.<br>
483
- Note that if a column is added then by default it will correspond to a
484
- continuous variable. */
485
- //@{
486
- using OsiSolverInterface::addCol ;
487
- /** */
488
- virtual void addCol(const CoinPackedVectorBase& vec,
489
- const double collb, const double colub,
490
- const double obj);
491
- /** Add a column (primal variable) to the problem. */
492
- virtual void addCol(int numberElements, const int * rows, const double * elements,
493
- const double collb, const double colub,
494
- const double obj) ;
495
-
496
- using OsiSolverInterface::addCols ;
497
- /** */
498
- virtual void addCols(const int numcols,
499
- const CoinPackedVectorBase * const * cols,
500
- const double* collb, const double* colub,
501
- const double* obj);
502
- /** */
503
- virtual void deleteCols(const int num, const int * colIndices);
504
-
505
- using OsiSolverInterface::addRow ;
506
- /** */
507
- virtual void addRow(const CoinPackedVectorBase& vec,
508
- const double rowlb, const double rowub);
509
- /** */
510
- virtual void addRow(const CoinPackedVectorBase& vec,
511
- const char rowsen, const double rowrhs,
512
- const double rowrng);
513
-
514
- using OsiSolverInterface::addRows ;
515
- /** */
516
- virtual void addRows(const int numrows,
517
- const CoinPackedVectorBase * const * rows,
518
- const double* rowlb, const double* rowub);
519
- /** */
520
- virtual void addRows(const int numrows,
521
- const CoinPackedVectorBase * const * rows,
522
- const char* rowsen, const double* rowrhs,
523
- const double* rowrng);
524
- /** */
525
- virtual void deleteRows(const int num, const int * rowIndices);
526
-
527
- //-----------------------------------------------------------------------
528
- /** Apply a collection of row cuts which are all effective.
529
- applyCuts seems to do one at a time which seems inefficient.
530
- */
531
- virtual void applyRowCuts(int numberCuts, const OsiRowCut * cuts);
532
- /** Apply a collection of row cuts which are all effective.
533
- applyCuts seems to do one at a time which seems inefficient.
534
- This uses array of pointers
535
- */
536
- virtual void applyRowCuts(int numberCuts, const OsiRowCut ** cuts);
537
- //@}
538
- //@}
539
-
540
- //---------------------------------------------------------------------------
541
-
542
- public:
543
-
544
- /**@name Methods to input a problem */
545
- //@{
546
- /** Load in an problem by copying the arguments (the constraints on the
547
- rows are given by lower and upper bounds). If a pointer is 0 then the
548
- following values are the default:
549
- <ul>
550
- <li> <code>colub</code>: all columns have upper bound infinity
551
- <li> <code>collb</code>: all columns have lower bound 0
552
- <li> <code>rowub</code>: all rows have upper bound infinity
553
- <li> <code>rowlb</code>: all rows have lower bound -infinity
554
- <li> <code>obj</code>: all variables have 0 objective coefficient
555
- </ul>
556
- */
557
- virtual void loadProblem(const CoinPackedMatrix& matrix,
558
- const double* collb, const double* colub,
559
- const double* obj,
560
- const double* rowlb, const double* rowub);
561
-
562
- /** Load in an problem by assuming ownership of the arguments (the
563
- constraints on the rows are given by lower and upper bounds). For
564
- default values see the previous method. <br>
565
- <strong>WARNING</strong>: The arguments passed to this method will be
566
- freed using the C++ <code>delete</code> and <code>delete[]</code>
567
- functions.
568
- */
569
- virtual void assignProblem(CoinPackedMatrix*& matrix,
570
- double*& collb, double*& colub, double*& obj,
571
- double*& rowlb, double*& rowub);
572
-
573
- /** Load in an problem by copying the arguments (the constraints on the
574
- rows are given by sense/rhs/range triplets). If a pointer is 0 then the
575
- following values are the default:
576
- <ul>
577
- <li> <code>colub</code>: all columns have upper bound infinity
578
- <li> <code>collb</code>: all columns have lower bound 0
579
- <li> <code>obj</code>: all variables have 0 objective coefficient
580
- <li> <code>rowsen</code>: all rows are >=
581
- <li> <code>rowrhs</code>: all right hand sides are 0
582
- <li> <code>rowrng</code>: 0 for the ranged rows
583
- </ul>
584
- */
585
- virtual void loadProblem(const CoinPackedMatrix& matrix,
586
- const double* collb, const double* colub,
587
- const double* obj,
588
- const char* rowsen, const double* rowrhs,
589
- const double* rowrng);
590
-
591
- /** Load in an problem by assuming ownership of the arguments (the
592
- constraints on the rows are given by sense/rhs/range triplets). For
593
- default values see the previous method. <br>
594
- <strong>WARNING</strong>: The arguments passed to this method will be
595
- freed using the C++ <code>delete</code> and <code>delete[]</code>
596
- functions.
597
- */
598
- virtual void assignProblem(CoinPackedMatrix*& matrix,
599
- double*& collb, double*& colub, double*& obj,
600
- char*& rowsen, double*& rowrhs,
601
- double*& rowrng);
602
-
603
- /** Just like the other loadProblem() methods except that the matrix is
604
- given in a standard column major ordered format (without gaps). */
605
- virtual void loadProblem(const int numcols, const int numrows,
606
- const CoinBigIndex * start, const int* index,
607
- const double* value,
608
- const double* collb, const double* colub,
609
- const double* obj,
610
- const double* rowlb, const double* rowub);
611
-
612
- /** Just like the other loadProblem() methods except that the matrix is
613
- given in a standard column major ordered format (without gaps). */
614
- virtual void loadProblem(const int numcols, const int numrows,
615
- const CoinBigIndex * start, const int* index,
616
- const double* value,
617
- const double* collb, const double* colub,
618
- const double* obj,
619
- const char* rowsen, const double* rowrhs,
620
- const double* rowrng);
621
-
622
- using OsiSolverInterface::readMps ;
623
- /** Read an mps file from the given filename (defaults to Osi reader) - returns
624
- number of errors (see OsiMpsReader class) */
625
- virtual int readMps(const char *filename,
626
- const char *extension = "mps") ;
627
-
628
- /** Write the problem into an mps file of the given filename.
629
- If objSense is non zero then -1.0 forces the code to write a
630
- maximization objective and +1.0 to write a minimization one.
631
- If 0.0 then solver can do what it wants */
632
- virtual void writeMps(const char *filename,
633
- const char *extension = "mps",
634
- double objSense=0.0) const;
635
- /** Write the problem into an mps file of the given filename,
636
- names may be null. formatType is
637
- 0 - normal
638
- 1 - extra accuracy
639
- 2 - IEEE hex (later)
640
-
641
- Returns non-zero on I/O error
642
- */
643
- virtual int writeMpsNative(const char *filename,
644
- const char ** rowNames, const char ** columnNames,
645
- int formatType=0,int numberAcross=2,
646
- double objSense=0.0) const ;
647
- //@}
648
-
649
- /**@name Message handling (extra for Cbc messages).
650
- Normally I presume you would want the same language.
651
- If not then you could use underlying model pointer */
652
- //@{
653
- /// Set language
654
- void newLanguage(CoinMessages::Language language);
655
- void setLanguage(CoinMessages::Language language)
656
- {newLanguage(language);}
657
- //@}
658
- //---------------------------------------------------------------------------
659
-
660
- /**@name Cbc specific public interfaces */
661
- //@{
662
- /// Get pointer to Cbc model
663
- inline CbcModel * getModelPtr() const
664
- { return modelPtr_;}
665
- /// Get pointer to underlying solver
666
- inline OsiSolverInterface * getRealSolverPtr() const
667
- { return modelPtr_->solver();}
668
- /// Set cutoff bound on the objective function.
669
- inline void setCutoff(double value)
670
- { modelPtr_->setCutoff(value);}
671
- /// Get the cutoff bound on the objective function - always as minimize
672
- inline double getCutoff() const
673
- { return modelPtr_->getCutoff();}
674
- /// Set the CbcModel::CbcMaxNumNode maximum node limit
675
- inline void setMaximumNodes( int value)
676
- { modelPtr_->setMaximumNodes(value);}
677
- /// Get the CbcModel::CbcMaxNumNode maximum node limit
678
- inline int getMaximumNodes() const
679
- { return modelPtr_->getMaximumNodes();}
680
- /// Set the CbcModel::CbcMaxNumSol maximum number of solutions
681
- inline void setMaximumSolutions( int value)
682
- { modelPtr_->setMaximumSolutions(value);}
683
- /// Get the CbcModel::CbcMaxNumSol maximum number of solutions
684
- inline int getMaximumSolutions() const
685
- { return modelPtr_->getMaximumSolutions();}
686
- /// Set the CbcModel::CbcMaximumSeconds maximum number of seconds
687
- inline void setMaximumSeconds( double value)
688
- { modelPtr_->setMaximumSeconds(value);}
689
- /// Get the CbcModel::CbcMaximumSeconds maximum number of seconds
690
- inline double getMaximumSeconds() const
691
- { return modelPtr_->getMaximumSeconds();}
692
- /// Node limit reached?
693
- inline bool isNodeLimitReached() const
694
- { return modelPtr_->isNodeLimitReached();}
695
- /// Solution limit reached?
696
- inline bool isSolutionLimitReached() const
697
- { return modelPtr_->isSolutionLimitReached();}
698
- /// Get how many Nodes it took to solve the problem.
699
- inline int getNodeCount() const
700
- { return modelPtr_->getNodeCount();}
701
- /// Final status of problem - 0 finished, 1 stopped, 2 difficulties
702
- inline int status() const
703
- { return modelPtr_->status();}
704
- /** Pass in a message handler
705
-
706
- It is the client's responsibility to destroy a message handler installed
707
- by this routine; it will not be destroyed when the solver interface is
708
- destroyed.
709
- */
710
- virtual void passInMessageHandler(CoinMessageHandler * handler);
711
- //@}
712
-
713
- //---------------------------------------------------------------------------
714
-
715
- /**@name Constructors and destructors */
716
- //@{
717
- /// Default Constructor
718
- OsiCbcSolverInterface (OsiSolverInterface * solver=NULL,
719
- CbcStrategy * strategy=NULL);
720
-
721
- /// Clone
722
- virtual OsiSolverInterface * clone(bool copyData = true) const;
723
-
724
- /// Copy constructor
725
- OsiCbcSolverInterface (const OsiCbcSolverInterface &);
726
- #if 0
727
- /// Borrow constructor - only delete one copy
728
- OsiCbcSolverInterface (CbcModel * rhs, bool reallyOwn=false);
729
-
730
- /// Releases so won't error
731
- void releaseCbc();
732
- #endif
733
- /// Assignment operator
734
- OsiCbcSolverInterface & operator=(const OsiCbcSolverInterface& rhs);
735
-
736
- /// Destructor
737
- virtual ~OsiCbcSolverInterface ();
738
-
739
- //@}
740
- //---------------------------------------------------------------------------
741
-
742
- protected:
743
- ///@name Protected methods
744
- //@{
745
- /** Apply a row cut (append to constraint matrix). */
746
- virtual void applyRowCut(const OsiRowCut& rc);
747
-
748
- /** Apply a column cut (adjust one or more bounds). */
749
- virtual void applyColCut(const OsiColCut& cc);
750
- //@}
751
- /**@name Protected member data */
752
- //@{
753
- /// Cbc model represented by this class instance
754
- mutable CbcModel * modelPtr_;
755
- //@}
756
- };
757
- // So unit test can find out if NDEBUG set
758
- bool OsiCbcHasNDEBUG();
759
-
760
- //#############################################################################
761
- /** A function that tests the methods in the OsiCbcSolverInterface class. */
762
- void OsiCbcSolverInterfaceUnitTest(const std::string & mpsDir, const std::string & netlibDir);
763
-
764
- #endif