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,176 +0,0 @@
1
- /* $Id: CoinAlloc.hpp 1438 2011-06-09 18:14:12Z stefan $ */
2
- // Copyright (C) 2007, 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 CoinAlloc_hpp
7
- #define CoinAlloc_hpp
8
-
9
- #include "CoinUtilsConfig.h"
10
- #include <cstdlib>
11
-
12
- #if !defined(COINUTILS_MEMPOOL_MAXPOOLED)
13
- # define COINUTILS_MEMPOOL_MAXPOOLED -1
14
- #endif
15
-
16
- #if (COINUTILS_MEMPOOL_MAXPOOLED >= 0)
17
-
18
- #ifndef COINUTILS_MEMPOOL_ALIGNMENT
19
- #define COINUTILS_MEMPOOL_ALIGNMENT 16
20
- #endif
21
-
22
- /* Note:
23
- This memory pool implementation assumes that sizeof(size_t) and
24
- sizeof(void*) are both <= COINUTILS_MEMPOOL_ALIGNMENT.
25
- Choosing an alignment of 4 will cause segfault on 64-bit platforms and may
26
- lead to bad performance on 32-bit platforms. So 8 is a mnimum recommended
27
- alignment. Probably 16 does not waste too much space either and may be even
28
- better for performance. One must play with it.
29
- */
30
-
31
- //#############################################################################
32
-
33
- #if (COINUTILS_MEMPOOL_ALIGNMENT == 16)
34
- static const std::size_t CoinAllocPtrShift = 4;
35
- static const std::size_t CoinAllocRoundMask = ~((std::size_t)15);
36
- #elif (COINUTILS_MEMPOOL_ALIGNMENT == 8)
37
- static const std::size_t CoinAllocPtrShift = 3;
38
- static const std::size_t CoinAllocRoundMask = ~((std::size_t)7);
39
- #else
40
- #error "COINUTILS_MEMPOOL_ALIGNMENT must be defined as 8 or 16 (or this code needs to be changed :-)"
41
- #endif
42
-
43
- //#############################################################################
44
-
45
- #ifndef COIN_MEMPOOL_SAVE_BLOCKHEADS
46
- # define COIN_MEMPOOL_SAVE_BLOCKHEADS 0
47
- #endif
48
-
49
- //#############################################################################
50
-
51
- class CoinMempool
52
- {
53
- private:
54
- #if (COIN_MEMPOOL_SAVE_BLOCKHEADS == 1)
55
- char** block_heads;
56
- std::size_t block_num;
57
- std::size_t max_block_num;
58
- #endif
59
- #if defined(COINUTILS_PTHREADS) && (COINUTILS_PTHREAD == 1)
60
- pthread_mutex_t mutex_;
61
- #endif
62
- int last_block_size_;
63
- char* first_free_;
64
- const std::size_t entry_size_;
65
-
66
- private:
67
- CoinMempool(const CoinMempool&);
68
- CoinMempool& operator=(const CoinMempool&);
69
-
70
- private:
71
- char* allocate_new_block();
72
- inline void lock_mutex() {
73
- #if defined(COINUTILS_PTHREADS) && (COINUTILS_PTHREAD == 1)
74
- pthread_mutex_lock(&mutex_);
75
- #endif
76
- }
77
- inline void unlock_mutex() {
78
- #if defined(COINUTILS_PTHREADS) && (COINUTILS_PTHREAD == 1)
79
- pthread_mutex_unlock(&mutex_);
80
- #endif
81
- }
82
-
83
- public:
84
- CoinMempool(std::size_t size = 0);
85
- ~CoinMempool();
86
-
87
- char* alloc();
88
- inline void dealloc(char *p)
89
- {
90
- char** pp = (char**)p;
91
- lock_mutex();
92
- *pp = first_free_;
93
- first_free_ = p;
94
- unlock_mutex();
95
- }
96
- };
97
-
98
- //#############################################################################
99
-
100
- /** A memory pool allocator.
101
-
102
- If a request arrives for allocating \c n bytes then it is first
103
- rounded up to the nearest multiple of \c sizeof(void*) (this is \c
104
- n_roundup), then one more \c sizeof(void*) is added to this
105
- number. If the result is no more than maxpooled_ then
106
- the appropriate pool is used to get a chunk of memory, if not,
107
- then malloc is used. In either case, the size of the allocated
108
- chunk is written into the first \c sizeof(void*) bytes and a
109
- pointer pointing afterwards is returned.
110
- */
111
-
112
- class CoinAlloc
113
- {
114
- private:
115
- CoinMempool* pool_;
116
- int maxpooled_;
117
- public:
118
- CoinAlloc();
119
- ~CoinAlloc() {}
120
-
121
- inline void* alloc(const std::size_t n)
122
- {
123
- if (maxpooled_ <= 0) {
124
- return std::malloc(n);
125
- }
126
- char *p = NULL;
127
- const std::size_t to_alloc =
128
- ((n+COINUTILS_MEMPOOL_ALIGNMENT-1) & CoinAllocRoundMask) +
129
- COINUTILS_MEMPOOL_ALIGNMENT;
130
- CoinMempool* pool = NULL;
131
- if (maxpooled_ > 0 && to_alloc >= (size_t)maxpooled_) {
132
- p = static_cast<char*>(std::malloc(to_alloc));
133
- if (p == NULL) throw std::bad_alloc();
134
- } else {
135
- pool = pool_ + (to_alloc >> CoinAllocPtrShift);
136
- p = pool->alloc();
137
- }
138
- *((CoinMempool**)p) = pool;
139
- return static_cast<void*>(p+COINUTILS_MEMPOOL_ALIGNMENT);
140
- }
141
-
142
- inline void dealloc(void* p)
143
- {
144
- if (maxpooled_ <= 0) {
145
- std::free(p);
146
- return;
147
- }
148
- if (p) {
149
- char* base = static_cast<char*>(p)-COINUTILS_MEMPOOL_ALIGNMENT;
150
- CoinMempool* pool = *((CoinMempool**)base);
151
- if (!pool) {
152
- std::free(base);
153
- } else {
154
- pool->dealloc(base);
155
- }
156
- }
157
- }
158
- };
159
-
160
- extern CoinAlloc CoinAllocator;
161
-
162
- //#############################################################################
163
-
164
- #if defined(COINUTILS_MEMPOOL_OVERRIDE_NEW) && (COINUTILS_MEMPOOL_OVERRIDE_NEW == 1)
165
- void* operator new(std::size_t size) throw (std::bad_alloc);
166
- void* operator new[](std::size_t) throw (std::bad_alloc);
167
- void operator delete(void*) throw();
168
- void operator delete[](void*) throw();
169
- void* operator new(std::size_t, const std::nothrow_t&) throw();
170
- void* operator new[](std::size_t, const std::nothrow_t&) throw();
171
- void operator delete(void*, const std::nothrow_t&) throw();
172
- void operator delete[](void*, const std::nothrow_t&) throw();
173
- #endif
174
-
175
- #endif /*(COINUTILS_MEMPOOL_MAXPOOLED >= 0)*/
176
- #endif
@@ -1,149 +0,0 @@
1
- /* $Id: CoinBuild.hpp 1416 2011-04-17 09:57:29Z stefan $ */
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 CoinBuild_H
7
- #define CoinBuild_H
8
-
9
-
10
- #include "CoinPragma.hpp"
11
- #include "CoinTypes.hpp"
12
- #include "CoinFinite.hpp"
13
-
14
-
15
- /**
16
- In many cases it is natural to build a model by adding one row at a time. In Coin this
17
- is inefficient so this class gives some help. An instance of CoinBuild can be built up
18
- more efficiently and then added to the Clp/OsiModel in one go.
19
-
20
- It may be more efficient to have fewer arrays and re-allocate them but this should
21
- give a large gain over addRow.
22
-
23
- I have now extended it to columns.
24
-
25
- */
26
-
27
- class CoinBuild {
28
-
29
- public:
30
- /**@name Useful methods */
31
- //@{
32
- /// add a row
33
- void addRow(int numberInRow, const int * columns,
34
- const double * elements, double rowLower=-COIN_DBL_MAX,
35
- double rowUpper=COIN_DBL_MAX);
36
- /// add a column
37
- void addColumn(int numberInColumn, const int * rows,
38
- const double * elements,
39
- double columnLower=0.0,
40
- double columnUpper=COIN_DBL_MAX, double objectiveValue=0.0);
41
- /// add a column
42
- inline void addCol(int numberInColumn, const int * rows,
43
- const double * elements,
44
- double columnLower=0.0,
45
- double columnUpper=COIN_DBL_MAX, double objectiveValue=0.0)
46
- { addColumn(numberInColumn, rows, elements, columnLower, columnUpper, objectiveValue);}
47
- /// Return number of rows or maximum found so far
48
- inline int numberRows() const
49
- { return (type_==0) ? numberItems_ : numberOther_;}
50
- /// Return number of columns or maximum found so far
51
- inline int numberColumns() const
52
- { return (type_==1) ? numberItems_ : numberOther_;}
53
- /// Return number of elements
54
- inline CoinBigIndex numberElements() const
55
- { return numberElements_;}
56
- /** Returns number of elements in a row and information in row
57
- */
58
- int row(int whichRow, double & rowLower, double & rowUpper,
59
- const int * & indices, const double * & elements) const;
60
- /** Returns number of elements in current row and information in row
61
- Used as rows may be stored in a chain
62
- */
63
- int currentRow(double & rowLower, double & rowUpper,
64
- const int * & indices, const double * & elements) const;
65
- /// Set current row
66
- void setCurrentRow(int whichRow);
67
- /// Returns current row number
68
- int currentRow() const;
69
- /** Returns number of elements in a column and information in column
70
- */
71
- int column(int whichColumn,
72
- double & columnLower, double & columnUpper,double & objectiveValue,
73
- const int * & indices, const double * & elements) const;
74
- /** Returns number of elements in current column and information in column
75
- Used as columns may be stored in a chain
76
- */
77
- int currentColumn( double & columnLower, double & columnUpper,double & objectiveValue,
78
- const int * & indices, const double * & elements) const;
79
- /// Set current column
80
- void setCurrentColumn(int whichColumn);
81
- /// Returns current column number
82
- int currentColumn() const;
83
- /// Returns type
84
- inline int type() const
85
- { return type_;}
86
- //@}
87
-
88
-
89
- /**@name Constructors, destructor */
90
- //@{
91
- /** Default constructor. */
92
- CoinBuild();
93
- /** Constructor with type 0==for addRow, 1== for addColumn. */
94
- CoinBuild(int type);
95
- /** Destructor */
96
- ~CoinBuild();
97
- //@}
98
-
99
- /**@name Copy method */
100
- //@{
101
- /** The copy constructor. */
102
- CoinBuild(const CoinBuild&);
103
- /// =
104
- CoinBuild& operator=(const CoinBuild&);
105
- //@}
106
- private:
107
- /// Set current
108
- void setMutableCurrent(int which) const;
109
- /// add a item
110
- void addItem(int numberInItem, const int * indices,
111
- const double * elements,
112
- double itemLower,
113
- double itemUpper, double objectiveValue);
114
- /** Returns number of elements in a item and information in item
115
- */
116
- int item(int whichItem,
117
- double & itemLower, double & itemUpper,double & objectiveValue,
118
- const int * & indices, const double * & elements) const;
119
- /** Returns number of elements in current item and information in item
120
- Used as items may be stored in a chain
121
- */
122
- int currentItem( double & itemLower, double & itemUpper,double & objectiveValue,
123
- const int * & indices, const double * & elements) const;
124
- /// Set current item
125
- void setCurrentItem(int whichItem);
126
- /// Returns current item number
127
- int currentItem() const;
128
-
129
- private:
130
- /**@name Data members */
131
- //@{
132
- /// Current number of items
133
- int numberItems_;
134
- /// Current number of other dimension i.e. Columns if addRow (i.e. max)
135
- int numberOther_;
136
- /// Current number of elements
137
- CoinBigIndex numberElements_;
138
- /// Current item pointer
139
- mutable double * currentItem_;
140
- /// First item pointer
141
- double * firstItem_;
142
- /// Last item pointer
143
- double * lastItem_;
144
- /// Type of build - 0 for row, 1 for column, -1 unset
145
- int type_;
146
- //@}
147
- };
148
-
149
- #endif
@@ -1,419 +0,0 @@
1
- /* $Id: CoinDenseFactorization.hpp 1759 2014-11-18 11:07:23Z forrest $ */
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
-
7
- /*
8
- Authors
9
-
10
- John Forrest
11
-
12
- */
13
- #ifndef CoinDenseFactorization_H
14
- #define CoinDenseFactorization_H
15
-
16
- #include <iostream>
17
- #include <string>
18
- #include <cassert>
19
- #include "CoinTypes.hpp"
20
- #include "CoinIndexedVector.hpp"
21
- #include "CoinFactorization.hpp"
22
- #if COIN_FACTORIZATION_DENSE_CODE == 2
23
- #undef COIN_FACTORIZATION_DENSE_CODE
24
- #endif
25
- class CoinPackedMatrix;
26
- /// Abstract base class which also has some scalars so can be used from Dense or Simp
27
- class CoinOtherFactorization {
28
-
29
- public:
30
-
31
- /**@name Constructors and destructor and copy */
32
- //@{
33
- /// Default constructor
34
- CoinOtherFactorization ( );
35
- /// Copy constructor
36
- CoinOtherFactorization ( const CoinOtherFactorization &other);
37
-
38
- /// Destructor
39
- virtual ~CoinOtherFactorization ( );
40
- /// = copy
41
- CoinOtherFactorization & operator = ( const CoinOtherFactorization & other );
42
-
43
- /// Clone
44
- virtual CoinOtherFactorization * clone() const = 0;
45
- //@}
46
-
47
- /**@name general stuff such as status */
48
- //@{
49
- /// Returns status
50
- inline int status ( ) const {
51
- return status_;
52
- }
53
- /// Sets status
54
- inline void setStatus ( int value)
55
- { status_=value; }
56
- /// Returns number of pivots since factorization
57
- inline int pivots ( ) const {
58
- return numberPivots_;
59
- }
60
- /// Sets number of pivots since factorization
61
- inline void setPivots ( int value )
62
- { numberPivots_=value; }
63
- /// Set number of Rows after factorization
64
- inline void setNumberRows(int value)
65
- { numberRows_ = value; }
66
- /// Number of Rows after factorization
67
- inline int numberRows ( ) const {
68
- return numberRows_;
69
- }
70
- /// Total number of columns in factorization
71
- inline int numberColumns ( ) const {
72
- return numberColumns_;
73
- }
74
- /// Number of good columns in factorization
75
- inline int numberGoodColumns ( ) const {
76
- return numberGoodU_;
77
- }
78
- /// Allows change of pivot accuracy check 1.0 == none >1.0 relaxed
79
- inline void relaxAccuracyCheck(double value)
80
- { relaxCheck_ = value;}
81
- inline double getAccuracyCheck() const
82
- { return relaxCheck_;}
83
- /// Maximum number of pivots between factorizations
84
- inline int maximumPivots ( ) const {
85
- return maximumPivots_ ;
86
- }
87
- /// Set maximum pivots
88
- virtual void maximumPivots ( int value );
89
-
90
- /// Pivot tolerance
91
- inline double pivotTolerance ( ) const {
92
- return pivotTolerance_ ;
93
- }
94
- void pivotTolerance ( double value );
95
- /// Zero tolerance
96
- inline double zeroTolerance ( ) const {
97
- return zeroTolerance_ ;
98
- }
99
- void zeroTolerance ( double value );
100
- #ifndef COIN_FAST_CODE
101
- /// Whether slack value is +1 or -1
102
- inline double slackValue ( ) const {
103
- return slackValue_ ;
104
- }
105
- void slackValue ( double value );
106
- #endif
107
- /// Returns array to put basis elements in
108
- virtual CoinFactorizationDouble * elements() const;
109
- /// Returns pivot row
110
- virtual int * pivotRow() const;
111
- /// Returns work area
112
- virtual CoinFactorizationDouble * workArea() const;
113
- /// Returns int work area
114
- virtual int * intWorkArea() const;
115
- /// Number of entries in each row
116
- virtual int * numberInRow() const;
117
- /// Number of entries in each column
118
- virtual int * numberInColumn() const;
119
- /// Returns array to put basis starts in
120
- virtual CoinBigIndex * starts() const;
121
- /// Returns permute back
122
- virtual int * permuteBack() const;
123
- /** Get solve mode e.g. 0 C++ code, 1 Lapack, 2 choose
124
- If 4 set then values pass
125
- if 8 set then has iterated
126
- */
127
- inline int solveMode() const
128
- { return solveMode_ ;}
129
- /** Set solve mode e.g. 0 C++ code, 1 Lapack, 2 choose
130
- If 4 set then values pass
131
- if 8 set then has iterated
132
- */
133
- inline void setSolveMode(int value)
134
- { solveMode_ = value;}
135
- /// Returns true if wants tableauColumn in replaceColumn
136
- virtual bool wantsTableauColumn() const;
137
- /** Useful information for factorization
138
- 0 - iteration number
139
- whereFrom is 0 for factorize and 1 for replaceColumn
140
- */
141
- virtual void setUsefulInformation(const int * info,int whereFrom);
142
- /// Get rid of all memory
143
- virtual void clearArrays() {}
144
- //@}
145
- /**@name virtual general stuff such as permutation */
146
- //@{
147
- /// Returns array to put basis indices in
148
- virtual int * indices() const = 0;
149
- /// Returns permute in
150
- virtual int * permute() const = 0;
151
- /// Total number of elements in factorization
152
- virtual int numberElements ( ) const = 0;
153
- //@}
154
- /**@name Do factorization - public */
155
- //@{
156
- /// Gets space for a factorization
157
- virtual void getAreas ( int numberRows,
158
- int numberColumns,
159
- CoinBigIndex maximumL,
160
- CoinBigIndex maximumU ) = 0;
161
-
162
- /// PreProcesses column ordered copy of basis
163
- virtual void preProcess ( ) = 0;
164
- /** Does most of factorization returning status
165
- 0 - OK
166
- -99 - needs more memory
167
- -1 - singular - use numberGoodColumns and redo
168
- */
169
- virtual int factor ( ) = 0;
170
- /// Does post processing on valid factorization - putting variables on correct rows
171
- virtual void postProcess(const int * sequence, int * pivotVariable) = 0;
172
- /// Makes a non-singular basis by replacing variables
173
- virtual void makeNonSingular(int * sequence, int numberColumns) = 0;
174
- //@}
175
-
176
- /**@name rank one updates which do exist */
177
- //@{
178
-
179
- /** Replaces one Column to basis,
180
- returns 0=OK, 1=Probably OK, 2=singular, 3=no room
181
- If checkBeforeModifying is true will do all accuracy checks
182
- before modifying factorization. Whether to set this depends on
183
- speed considerations. You could just do this on first iteration
184
- after factorization and thereafter re-factorize
185
- partial update already in U */
186
- virtual int replaceColumn ( CoinIndexedVector * regionSparse,
187
- int pivotRow,
188
- double pivotCheck ,
189
- bool checkBeforeModifying=false,
190
- double acceptablePivot=1.0e-8)=0;
191
- //@}
192
-
193
- /**@name various uses of factorization (return code number elements)
194
- which user may want to know about */
195
- //@{
196
- /** Updates one column (FTRAN) from regionSparse2
197
- Tries to do FT update
198
- number returned is negative if no room
199
- regionSparse starts as zero and is zero at end.
200
- Note - if regionSparse2 packed on input - will be packed on output
201
- */
202
- virtual int updateColumnFT ( CoinIndexedVector * regionSparse,
203
- CoinIndexedVector * regionSparse2,
204
- bool noPermute=false) = 0;
205
- /** This version has same effect as above with FTUpdate==false
206
- so number returned is always >=0 */
207
- virtual int updateColumn ( CoinIndexedVector * regionSparse,
208
- CoinIndexedVector * regionSparse2,
209
- bool noPermute=false) const = 0;
210
- /// does FTRAN on two columns
211
- virtual int updateTwoColumnsFT(CoinIndexedVector * regionSparse1,
212
- CoinIndexedVector * regionSparse2,
213
- CoinIndexedVector * regionSparse3,
214
- bool noPermute=false) = 0;
215
- /** Updates one column (BTRAN) from regionSparse2
216
- regionSparse starts as zero and is zero at end
217
- Note - if regionSparse2 packed on input - will be packed on output
218
- */
219
- virtual int updateColumnTranspose ( CoinIndexedVector * regionSparse,
220
- CoinIndexedVector * regionSparse2) const = 0;
221
- //@}
222
-
223
- ////////////////// data //////////////////
224
- protected:
225
-
226
- /**@name data */
227
- //@{
228
- /// Pivot tolerance
229
- double pivotTolerance_;
230
- /// Zero tolerance
231
- double zeroTolerance_;
232
- #ifndef COIN_FAST_CODE
233
- /// Whether slack value is +1 or -1
234
- double slackValue_;
235
- #else
236
- #ifndef slackValue_
237
- #define slackValue_ -1.0
238
- #endif
239
- #endif
240
- /// Relax check on accuracy in replaceColumn
241
- double relaxCheck_;
242
- /// Number of elements after factorization
243
- CoinBigIndex factorElements_;
244
- /// Number of Rows in factorization
245
- int numberRows_;
246
- /// Number of Columns in factorization
247
- int numberColumns_;
248
- /// Number factorized in U (not row singletons)
249
- int numberGoodU_;
250
- /// Maximum number of pivots before factorization
251
- int maximumPivots_;
252
- /// Number pivots since last factorization
253
- int numberPivots_;
254
- /// Status of factorization
255
- int status_;
256
- /// Maximum rows ever (i.e. use to copy arrays etc)
257
- int maximumRows_;
258
- /// Maximum length of iterating area
259
- CoinBigIndex maximumSpace_;
260
- /// Pivot row
261
- int * pivotRow_;
262
- /** Elements of factorization and updates
263
- length is maxR*maxR+maxSpace
264
- will always be long enough so can have nR*nR ints in maxSpace
265
- */
266
- CoinFactorizationDouble * elements_;
267
- /// Work area of numberRows_
268
- CoinFactorizationDouble * workArea_;
269
- /** Solve mode e.g. 0 C++ code, 1 Lapack, 2 choose
270
- If 4 set then values pass
271
- if 8 set then has iterated
272
- */
273
- int solveMode_;
274
- //@}
275
- };
276
- /** This deals with Factorization and Updates
277
- This is a simple dense version so other people can write a better one
278
-
279
- I am assuming that 32 bits is enough for number of rows or columns, but CoinBigIndex
280
- may be redefined to get 64 bits.
281
- */
282
-
283
-
284
-
285
- class CoinDenseFactorization : public CoinOtherFactorization {
286
- friend void CoinDenseFactorizationUnitTest( const std::string & mpsDir );
287
-
288
- public:
289
-
290
- /**@name Constructors and destructor and copy */
291
- //@{
292
- /// Default constructor
293
- CoinDenseFactorization ( );
294
- /// Copy constructor
295
- CoinDenseFactorization ( const CoinDenseFactorization &other);
296
-
297
- /// Destructor
298
- virtual ~CoinDenseFactorization ( );
299
- /// = copy
300
- CoinDenseFactorization & operator = ( const CoinDenseFactorization & other );
301
- /// Clone
302
- virtual CoinOtherFactorization * clone() const ;
303
- //@}
304
-
305
- /**@name Do factorization - public */
306
- //@{
307
- /// Gets space for a factorization
308
- virtual void getAreas ( int numberRows,
309
- int numberColumns,
310
- CoinBigIndex maximumL,
311
- CoinBigIndex maximumU );
312
-
313
- /// PreProcesses column ordered copy of basis
314
- virtual void preProcess ( );
315
- /** Does most of factorization returning status
316
- 0 - OK
317
- -99 - needs more memory
318
- -1 - singular - use numberGoodColumns and redo
319
- */
320
- virtual int factor ( );
321
- /// Does post processing on valid factorization - putting variables on correct rows
322
- virtual void postProcess(const int * sequence, int * pivotVariable);
323
- /// Makes a non-singular basis by replacing variables
324
- virtual void makeNonSingular(int * sequence, int numberColumns);
325
- //@}
326
-
327
- /**@name general stuff such as number of elements */
328
- //@{
329
- /// Total number of elements in factorization
330
- virtual inline int numberElements ( ) const {
331
- return numberRows_*(numberColumns_+numberPivots_);
332
- }
333
- /// Returns maximum absolute value in factorization
334
- double maximumCoefficient() const;
335
- //@}
336
-
337
- /**@name rank one updates which do exist */
338
- //@{
339
-
340
- /** Replaces one Column to basis,
341
- returns 0=OK, 1=Probably OK, 2=singular, 3=no room
342
- If checkBeforeModifying is true will do all accuracy checks
343
- before modifying factorization. Whether to set this depends on
344
- speed considerations. You could just do this on first iteration
345
- after factorization and thereafter re-factorize
346
- partial update already in U */
347
- virtual int replaceColumn ( CoinIndexedVector * regionSparse,
348
- int pivotRow,
349
- double pivotCheck ,
350
- bool checkBeforeModifying=false,
351
- double acceptablePivot=1.0e-8);
352
- //@}
353
-
354
- /**@name various uses of factorization (return code number elements)
355
- which user may want to know about */
356
- //@{
357
- /** Updates one column (FTRAN) from regionSparse2
358
- Tries to do FT update
359
- number returned is negative if no room
360
- regionSparse starts as zero and is zero at end.
361
- Note - if regionSparse2 packed on input - will be packed on output
362
- */
363
- virtual inline int updateColumnFT ( CoinIndexedVector * regionSparse,
364
- CoinIndexedVector * regionSparse2,
365
- bool = false)
366
- { return updateColumn(regionSparse,regionSparse2);}
367
- /** This version has same effect as above with FTUpdate==false
368
- so number returned is always >=0 */
369
- virtual int updateColumn ( CoinIndexedVector * regionSparse,
370
- CoinIndexedVector * regionSparse2,
371
- bool noPermute=false) const;
372
- /// does FTRAN on two columns
373
- virtual int updateTwoColumnsFT(CoinIndexedVector * regionSparse1,
374
- CoinIndexedVector * regionSparse2,
375
- CoinIndexedVector * regionSparse3,
376
- bool noPermute=false);
377
- /** Updates one column (BTRAN) from regionSparse2
378
- regionSparse starts as zero and is zero at end
379
- Note - if regionSparse2 packed on input - will be packed on output
380
- */
381
- virtual int updateColumnTranspose ( CoinIndexedVector * regionSparse,
382
- CoinIndexedVector * regionSparse2) const;
383
- //@}
384
- /// *** Below this user may not want to know about
385
-
386
- /**@name various uses of factorization
387
- which user may not want to know about (left over from my LP code) */
388
- //@{
389
- /// Get rid of all memory
390
- inline void clearArrays()
391
- { gutsOfDestructor();}
392
- /// Returns array to put basis indices in
393
- virtual inline int * indices() const
394
- { return reinterpret_cast<int *> (elements_+numberRows_*numberRows_);}
395
- /// Returns permute in
396
- virtual inline int * permute() const
397
- { return NULL;/*pivotRow_*/;}
398
- //@}
399
-
400
- /// The real work of desstructor
401
- void gutsOfDestructor();
402
- /// The real work of constructor
403
- void gutsOfInitialize();
404
- /// The real work of copy
405
- void gutsOfCopy(const CoinDenseFactorization &other);
406
-
407
- //@}
408
- protected:
409
- /** Returns accuracy status of replaceColumn
410
- returns 0=OK, 1=Probably OK, 2=singular */
411
- int checkPivot(double saveFromU, double oldPivot) const;
412
- ////////////////// data //////////////////
413
- protected:
414
-
415
- /**@name data */
416
- //@{
417
- //@}
418
- };
419
- #endif