ruby-cbc 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +4 -0
  6. data/README.md +203 -0
  7. data/Rakefile +40 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +7 -0
  10. data/ext/ruby-cbc/cbc.i +15 -0
  11. data/ext/ruby-cbc/cbc_wrap.c +4618 -0
  12. data/ext/ruby-cbc/extconf.rb +60 -0
  13. data/ext/ruby-cbc/install/bin/cbc +0 -0
  14. data/ext/ruby-cbc/install/bin/clp +0 -0
  15. data/ext/ruby-cbc/install/include/coin/CbcBranchActual.hpp +24 -0
  16. data/ext/ruby-cbc/install/include/coin/CbcBranchAllDifferent.hpp +62 -0
  17. data/ext/ruby-cbc/install/include/coin/CbcBranchBase.hpp +78 -0
  18. data/ext/ruby-cbc/install/include/coin/CbcBranchCut.hpp +183 -0
  19. data/ext/ruby-cbc/install/include/coin/CbcBranchDecision.hpp +129 -0
  20. data/ext/ruby-cbc/install/include/coin/CbcBranchDefaultDecision.hpp +100 -0
  21. data/ext/ruby-cbc/install/include/coin/CbcBranchDynamic.hpp +206 -0
  22. data/ext/ruby-cbc/install/include/coin/CbcBranchLotsize.hpp +242 -0
  23. data/ext/ruby-cbc/install/include/coin/CbcBranchToFixLots.hpp +94 -0
  24. data/ext/ruby-cbc/install/include/coin/CbcBranchingObject.hpp +236 -0
  25. data/ext/ruby-cbc/install/include/coin/CbcClique.hpp +303 -0
  26. data/ext/ruby-cbc/install/include/coin/CbcCompare.hpp +39 -0
  27. data/ext/ruby-cbc/install/include/coin/CbcCompareActual.hpp +14 -0
  28. data/ext/ruby-cbc/install/include/coin/CbcCompareBase.hpp +142 -0
  29. data/ext/ruby-cbc/install/include/coin/CbcCompareDefault.hpp +120 -0
  30. data/ext/ruby-cbc/install/include/coin/CbcCompareDepth.hpp +47 -0
  31. data/ext/ruby-cbc/install/include/coin/CbcCompareEstimate.hpp +48 -0
  32. data/ext/ruby-cbc/install/include/coin/CbcCompareObjective.hpp +49 -0
  33. data/ext/ruby-cbc/install/include/coin/CbcConfig.h +14 -0
  34. data/ext/ruby-cbc/install/include/coin/CbcConsequence.hpp +49 -0
  35. data/ext/ruby-cbc/install/include/coin/CbcCountRowCut.hpp +168 -0
  36. data/ext/ruby-cbc/install/include/coin/CbcCutGenerator.hpp +482 -0
  37. data/ext/ruby-cbc/install/include/coin/CbcCutModifier.hpp +57 -0
  38. data/ext/ruby-cbc/install/include/coin/CbcCutSubsetModifier.hpp +66 -0
  39. data/ext/ruby-cbc/install/include/coin/CbcDummyBranchingObject.hpp +83 -0
  40. data/ext/ruby-cbc/install/include/coin/CbcEventHandler.hpp +245 -0
  41. data/ext/ruby-cbc/install/include/coin/CbcFathom.hpp +137 -0
  42. data/ext/ruby-cbc/install/include/coin/CbcFathomDynamicProgramming.hpp +169 -0
  43. data/ext/ruby-cbc/install/include/coin/CbcFeasibilityBase.hpp +56 -0
  44. data/ext/ruby-cbc/install/include/coin/CbcFixVariable.hpp +67 -0
  45. data/ext/ruby-cbc/install/include/coin/CbcFollowOn.hpp +207 -0
  46. data/ext/ruby-cbc/install/include/coin/CbcFullNodeInfo.hpp +161 -0
  47. data/ext/ruby-cbc/install/include/coin/CbcGeneral.hpp +60 -0
  48. data/ext/ruby-cbc/install/include/coin/CbcGeneralDepth.hpp +279 -0
  49. data/ext/ruby-cbc/install/include/coin/CbcHeuristic.hpp +682 -0
  50. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDINS.hpp +96 -0
  51. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDW.hpp +309 -0
  52. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDive.hpp +192 -0
  53. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
  54. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
  55. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
  56. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
  57. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
  58. data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
  59. data/ext/ruby-cbc/install/include/coin/CbcHeuristicFPump.hpp +340 -0
  60. data/ext/ruby-cbc/install/include/coin/CbcHeuristicGreedy.hpp +280 -0
  61. data/ext/ruby-cbc/install/include/coin/CbcHeuristicLocal.hpp +271 -0
  62. data/ext/ruby-cbc/install/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
  63. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRENS.hpp +77 -0
  64. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRINS.hpp +102 -0
  65. data/ext/ruby-cbc/install/include/coin/CbcHeuristicRandRound.hpp +58 -0
  66. data/ext/ruby-cbc/install/include/coin/CbcHeuristicVND.hpp +94 -0
  67. data/ext/ruby-cbc/install/include/coin/CbcLinked.hpp +1406 -0
  68. data/ext/ruby-cbc/install/include/coin/CbcMessage.hpp +94 -0
  69. data/ext/ruby-cbc/install/include/coin/CbcMipStartIO.hpp +26 -0
  70. data/ext/ruby-cbc/install/include/coin/CbcModel.hpp +2952 -0
  71. data/ext/ruby-cbc/install/include/coin/CbcNWay.hpp +166 -0
  72. data/ext/ruby-cbc/install/include/coin/CbcNode.hpp +351 -0
  73. data/ext/ruby-cbc/install/include/coin/CbcNodeInfo.hpp +349 -0
  74. data/ext/ruby-cbc/install/include/coin/CbcObject.hpp +272 -0
  75. data/ext/ruby-cbc/install/include/coin/CbcObjectUpdateData.hpp +64 -0
  76. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.cpp +4134 -0
  77. data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.hpp +532 -0
  78. data/ext/ruby-cbc/install/include/coin/CbcParam.hpp +324 -0
  79. data/ext/ruby-cbc/install/include/coin/CbcPartialNodeInfo.hpp +110 -0
  80. data/ext/ruby-cbc/install/include/coin/CbcSOS.hpp +279 -0
  81. data/ext/ruby-cbc/install/include/coin/CbcSimpleInteger.hpp +286 -0
  82. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +564 -0
  83. data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerPseudoCost.hpp +114 -0
  84. data/ext/ruby-cbc/install/include/coin/CbcSolver.hpp +447 -0
  85. data/ext/ruby-cbc/install/include/coin/CbcStrategy.hpp +258 -0
  86. data/ext/ruby-cbc/install/include/coin/CbcSubProblem.hpp +83 -0
  87. data/ext/ruby-cbc/install/include/coin/CbcTree.hpp +490 -0
  88. data/ext/ruby-cbc/install/include/coin/CbcTreeLocal.hpp +372 -0
  89. data/ext/ruby-cbc/install/include/coin/Cbc_C_Interface.h +381 -0
  90. data/ext/ruby-cbc/install/include/coin/Cgl012cut.hpp +464 -0
  91. data/ext/ruby-cbc/install/include/coin/CglAllDifferent.hpp +115 -0
  92. data/ext/ruby-cbc/install/include/coin/CglClique.hpp +308 -0
  93. data/ext/ruby-cbc/install/include/coin/CglConfig.h +19 -0
  94. data/ext/ruby-cbc/install/include/coin/CglCutGenerator.hpp +121 -0
  95. data/ext/ruby-cbc/install/include/coin/CglDuplicateRow.hpp +189 -0
  96. data/ext/ruby-cbc/install/include/coin/CglFlowCover.hpp +371 -0
  97. data/ext/ruby-cbc/install/include/coin/CglGMI.hpp +364 -0
  98. data/ext/ruby-cbc/install/include/coin/CglGMIParam.hpp +313 -0
  99. data/ext/ruby-cbc/install/include/coin/CglGomory.hpp +204 -0
  100. data/ext/ruby-cbc/install/include/coin/CglKnapsackCover.hpp +310 -0
  101. data/ext/ruby-cbc/install/include/coin/CglLandP.hpp +306 -0
  102. data/ext/ruby-cbc/install/include/coin/CglLandPValidator.hpp +130 -0
  103. data/ext/ruby-cbc/install/include/coin/CglLiftAndProject.hpp +104 -0
  104. data/ext/ruby-cbc/install/include/coin/CglMessage.hpp +50 -0
  105. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding.hpp +429 -0
  106. data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding2.hpp +427 -0
  107. data/ext/ruby-cbc/install/include/coin/CglOddHole.hpp +160 -0
  108. data/ext/ruby-cbc/install/include/coin/CglParam.hpp +93 -0
  109. data/ext/ruby-cbc/install/include/coin/CglPreProcess.hpp +492 -0
  110. data/ext/ruby-cbc/install/include/coin/CglProbing.hpp +543 -0
  111. data/ext/ruby-cbc/install/include/coin/CglRedSplit.hpp +448 -0
  112. data/ext/ruby-cbc/install/include/coin/CglRedSplit2.hpp +494 -0
  113. data/ext/ruby-cbc/install/include/coin/CglRedSplit2Param.hpp +495 -0
  114. data/ext/ruby-cbc/install/include/coin/CglRedSplitParam.hpp +272 -0
  115. data/ext/ruby-cbc/install/include/coin/CglResidualCapacity.hpp +240 -0
  116. data/ext/ruby-cbc/install/include/coin/CglSimpleRounding.hpp +174 -0
  117. data/ext/ruby-cbc/install/include/coin/CglStored.hpp +125 -0
  118. data/ext/ruby-cbc/install/include/coin/CglTreeInfo.hpp +180 -0
  119. data/ext/ruby-cbc/install/include/coin/CglTwomir.hpp +565 -0
  120. data/ext/ruby-cbc/install/include/coin/CglZeroHalf.hpp +133 -0
  121. data/ext/ruby-cbc/install/include/coin/ClpAmplObjective.hpp +113 -0
  122. data/ext/ruby-cbc/install/include/coin/ClpCholeskyBase.hpp +294 -0
  123. data/ext/ruby-cbc/install/include/coin/ClpCholeskyDense.hpp +162 -0
  124. data/ext/ruby-cbc/install/include/coin/ClpConfig.h +17 -0
  125. data/ext/ruby-cbc/install/include/coin/ClpConstraint.hpp +125 -0
  126. data/ext/ruby-cbc/install/include/coin/ClpConstraintAmpl.hpp +108 -0
  127. data/ext/ruby-cbc/install/include/coin/ClpConstraintLinear.hpp +110 -0
  128. data/ext/ruby-cbc/install/include/coin/ClpConstraintQuadratic.hpp +119 -0
  129. data/ext/ruby-cbc/install/include/coin/ClpDualRowDantzig.hpp +71 -0
  130. data/ext/ruby-cbc/install/include/coin/ClpDualRowPivot.hpp +129 -0
  131. data/ext/ruby-cbc/install/include/coin/ClpDualRowSteepest.hpp +153 -0
  132. data/ext/ruby-cbc/install/include/coin/ClpDummyMatrix.hpp +183 -0
  133. data/ext/ruby-cbc/install/include/coin/ClpDynamicExampleMatrix.hpp +186 -0
  134. data/ext/ruby-cbc/install/include/coin/ClpDynamicMatrix.hpp +381 -0
  135. data/ext/ruby-cbc/install/include/coin/ClpEventHandler.hpp +187 -0
  136. data/ext/ruby-cbc/install/include/coin/ClpFactorization.hpp +432 -0
  137. data/ext/ruby-cbc/install/include/coin/ClpGubDynamicMatrix.hpp +247 -0
  138. data/ext/ruby-cbc/install/include/coin/ClpGubMatrix.hpp +358 -0
  139. data/ext/ruby-cbc/install/include/coin/ClpInterior.hpp +570 -0
  140. data/ext/ruby-cbc/install/include/coin/ClpLinearObjective.hpp +103 -0
  141. data/ext/ruby-cbc/install/include/coin/ClpMatrixBase.hpp +524 -0
  142. data/ext/ruby-cbc/install/include/coin/ClpMessage.hpp +131 -0
  143. data/ext/ruby-cbc/install/include/coin/ClpModel.hpp +1307 -0
  144. data/ext/ruby-cbc/install/include/coin/ClpNetworkMatrix.hpp +229 -0
  145. data/ext/ruby-cbc/install/include/coin/ClpNode.hpp +349 -0
  146. data/ext/ruby-cbc/install/include/coin/ClpNonLinearCost.hpp +401 -0
  147. data/ext/ruby-cbc/install/include/coin/ClpObjective.hpp +134 -0
  148. data/ext/ruby-cbc/install/include/coin/ClpPackedMatrix.hpp +638 -0
  149. data/ext/ruby-cbc/install/include/coin/ClpParameters.hpp +126 -0
  150. data/ext/ruby-cbc/install/include/coin/ClpPdcoBase.hpp +103 -0
  151. data/ext/ruby-cbc/install/include/coin/ClpPlusMinusOneMatrix.hpp +290 -0
  152. data/ext/ruby-cbc/install/include/coin/ClpPresolve.hpp +299 -0
  153. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnDantzig.hpp +72 -0
  154. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnPivot.hpp +155 -0
  155. data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnSteepest.hpp +247 -0
  156. data/ext/ruby-cbc/install/include/coin/ClpQuadraticObjective.hpp +155 -0
  157. data/ext/ruby-cbc/install/include/coin/ClpSimplex.hpp +1797 -0
  158. data/ext/ruby-cbc/install/include/coin/ClpSimplexDual.hpp +300 -0
  159. data/ext/ruby-cbc/install/include/coin/ClpSimplexNonlinear.hpp +117 -0
  160. data/ext/ruby-cbc/install/include/coin/ClpSimplexOther.hpp +277 -0
  161. data/ext/ruby-cbc/install/include/coin/ClpSimplexPrimal.hpp +244 -0
  162. data/ext/ruby-cbc/install/include/coin/ClpSolve.hpp +446 -0
  163. data/ext/ruby-cbc/install/include/coin/Clp_C_Interface.h +525 -0
  164. data/ext/ruby-cbc/install/include/coin/CoinAlloc.hpp +176 -0
  165. data/ext/ruby-cbc/install/include/coin/CoinBuild.hpp +149 -0
  166. data/ext/ruby-cbc/install/include/coin/CoinDenseFactorization.hpp +419 -0
  167. data/ext/ruby-cbc/install/include/coin/CoinDenseVector.hpp +383 -0
  168. data/ext/ruby-cbc/install/include/coin/CoinDistance.hpp +48 -0
  169. data/ext/ruby-cbc/install/include/coin/CoinError.hpp +257 -0
  170. data/ext/ruby-cbc/install/include/coin/CoinFactorization.hpp +2044 -0
  171. data/ext/ruby-cbc/install/include/coin/CoinFileIO.hpp +166 -0
  172. data/ext/ruby-cbc/install/include/coin/CoinFinite.hpp +34 -0
  173. data/ext/ruby-cbc/install/include/coin/CoinFloatEqual.hpp +177 -0
  174. data/ext/ruby-cbc/install/include/coin/CoinHelperFunctions.hpp +1111 -0
  175. data/ext/ruby-cbc/install/include/coin/CoinIndexedVector.hpp +1164 -0
  176. data/ext/ruby-cbc/install/include/coin/CoinLpIO.hpp +805 -0
  177. data/ext/ruby-cbc/install/include/coin/CoinMessage.hpp +96 -0
  178. data/ext/ruby-cbc/install/include/coin/CoinMessageHandler.hpp +666 -0
  179. data/ext/ruby-cbc/install/include/coin/CoinModel.hpp +1054 -0
  180. data/ext/ruby-cbc/install/include/coin/CoinModelUseful.hpp +441 -0
  181. data/ext/ruby-cbc/install/include/coin/CoinMpsIO.hpp +1056 -0
  182. data/ext/ruby-cbc/install/include/coin/CoinOslFactorization.hpp +280 -0
  183. data/ext/ruby-cbc/install/include/coin/CoinPackedMatrix.hpp +947 -0
  184. data/ext/ruby-cbc/install/include/coin/CoinPackedVector.hpp +657 -0
  185. data/ext/ruby-cbc/install/include/coin/CoinPackedVectorBase.hpp +269 -0
  186. data/ext/ruby-cbc/install/include/coin/CoinParam.hpp +644 -0
  187. data/ext/ruby-cbc/install/include/coin/CoinPragma.hpp +26 -0
  188. data/ext/ruby-cbc/install/include/coin/CoinPresolveDoubleton.hpp +73 -0
  189. data/ext/ruby-cbc/install/include/coin/CoinPresolveDual.hpp +85 -0
  190. data/ext/ruby-cbc/install/include/coin/CoinPresolveDupcol.hpp +226 -0
  191. data/ext/ruby-cbc/install/include/coin/CoinPresolveEmpty.hpp +116 -0
  192. data/ext/ruby-cbc/install/include/coin/CoinPresolveFixed.hpp +181 -0
  193. data/ext/ruby-cbc/install/include/coin/CoinPresolveForcing.hpp +61 -0
  194. data/ext/ruby-cbc/install/include/coin/CoinPresolveImpliedFree.hpp +60 -0
  195. data/ext/ruby-cbc/install/include/coin/CoinPresolveIsolated.hpp +51 -0
  196. data/ext/ruby-cbc/install/include/coin/CoinPresolveMatrix.hpp +1842 -0
  197. data/ext/ruby-cbc/install/include/coin/CoinPresolveMonitor.hpp +105 -0
  198. data/ext/ruby-cbc/install/include/coin/CoinPresolvePsdebug.hpp +166 -0
  199. data/ext/ruby-cbc/install/include/coin/CoinPresolveSingleton.hpp +112 -0
  200. data/ext/ruby-cbc/install/include/coin/CoinPresolveSubst.hpp +101 -0
  201. data/ext/ruby-cbc/install/include/coin/CoinPresolveTighten.hpp +55 -0
  202. data/ext/ruby-cbc/install/include/coin/CoinPresolveTripleton.hpp +66 -0
  203. data/ext/ruby-cbc/install/include/coin/CoinPresolveUseless.hpp +63 -0
  204. data/ext/ruby-cbc/install/include/coin/CoinPresolveZeros.hpp +60 -0
  205. data/ext/ruby-cbc/install/include/coin/CoinRational.hpp +44 -0
  206. data/ext/ruby-cbc/install/include/coin/CoinSearchTree.hpp +465 -0
  207. data/ext/ruby-cbc/install/include/coin/CoinShallowPackedVector.hpp +148 -0
  208. data/ext/ruby-cbc/install/include/coin/CoinSignal.hpp +117 -0
  209. data/ext/ruby-cbc/install/include/coin/CoinSimpFactorization.hpp +431 -0
  210. data/ext/ruby-cbc/install/include/coin/CoinSmartPtr.hpp +528 -0
  211. data/ext/ruby-cbc/install/include/coin/CoinSnapshot.hpp +476 -0
  212. data/ext/ruby-cbc/install/include/coin/CoinSort.hpp +678 -0
  213. data/ext/ruby-cbc/install/include/coin/CoinStructuredModel.hpp +247 -0
  214. data/ext/ruby-cbc/install/include/coin/CoinTime.hpp +310 -0
  215. data/ext/ruby-cbc/install/include/coin/CoinTypes.hpp +64 -0
  216. data/ext/ruby-cbc/install/include/coin/CoinUtility.hpp +19 -0
  217. data/ext/ruby-cbc/install/include/coin/CoinUtilsConfig.h +34 -0
  218. data/ext/ruby-cbc/install/include/coin/CoinWarmStart.hpp +58 -0
  219. data/ext/ruby-cbc/install/include/coin/CoinWarmStartBasis.hpp +456 -0
  220. data/ext/ruby-cbc/install/include/coin/CoinWarmStartDual.hpp +166 -0
  221. data/ext/ruby-cbc/install/include/coin/CoinWarmStartPrimalDual.hpp +211 -0
  222. data/ext/ruby-cbc/install/include/coin/CoinWarmStartVector.hpp +488 -0
  223. data/ext/ruby-cbc/install/include/coin/Coin_C_defines.h +115 -0
  224. data/ext/ruby-cbc/install/include/coin/Idiot.hpp +298 -0
  225. data/ext/ruby-cbc/install/include/coin/OsiAuxInfo.hpp +206 -0
  226. data/ext/ruby-cbc/install/include/coin/OsiBranchingObject.hpp +1005 -0
  227. data/ext/ruby-cbc/install/include/coin/OsiCbcSolverInterface.hpp +764 -0
  228. data/ext/ruby-cbc/install/include/coin/OsiChooseVariable.hpp +534 -0
  229. data/ext/ruby-cbc/install/include/coin/OsiClpSolverInterface.hpp +1509 -0
  230. data/ext/ruby-cbc/install/include/coin/OsiColCut.hpp +324 -0
  231. data/ext/ruby-cbc/install/include/coin/OsiCollections.hpp +35 -0
  232. data/ext/ruby-cbc/install/include/coin/OsiConfig.h +19 -0
  233. data/ext/ruby-cbc/install/include/coin/OsiCut.hpp +245 -0
  234. data/ext/ruby-cbc/install/include/coin/OsiCuts.hpp +474 -0
  235. data/ext/ruby-cbc/install/include/coin/OsiPresolve.hpp +252 -0
  236. data/ext/ruby-cbc/install/include/coin/OsiRowCut.hpp +331 -0
  237. data/ext/ruby-cbc/install/include/coin/OsiRowCutDebugger.hpp +187 -0
  238. data/ext/ruby-cbc/install/include/coin/OsiSolverBranch.hpp +152 -0
  239. data/ext/ruby-cbc/install/include/coin/OsiSolverInterface.hpp +2143 -0
  240. data/ext/ruby-cbc/install/include/coin/OsiSolverParameters.hpp +142 -0
  241. data/ext/ruby-cbc/install/include/coin/OsiUnitTests.hpp +374 -0
  242. data/ext/ruby-cbc/install/lib/libCbc.la +35 -0
  243. data/ext/ruby-cbc/install/lib/libCbc.so +0 -0
  244. data/ext/ruby-cbc/install/lib/libCbc.so.3 +0 -0
  245. data/ext/ruby-cbc/install/lib/libCbc.so.3.9.7 +0 -0
  246. data/ext/ruby-cbc/install/lib/libCbcSolver.la +35 -0
  247. data/ext/ruby-cbc/install/lib/libCbcSolver.so +0 -0
  248. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3 +0 -0
  249. data/ext/ruby-cbc/install/lib/libCbcSolver.so.3.9.7 +0 -0
  250. data/ext/ruby-cbc/install/lib/libCgl.la +35 -0
  251. data/ext/ruby-cbc/install/lib/libCgl.so +0 -0
  252. data/ext/ruby-cbc/install/lib/libCgl.so.1 +0 -0
  253. data/ext/ruby-cbc/install/lib/libCgl.so.1.9.7 +0 -0
  254. data/ext/ruby-cbc/install/lib/libClp.la +35 -0
  255. data/ext/ruby-cbc/install/lib/libClp.so +0 -0
  256. data/ext/ruby-cbc/install/lib/libClp.so.1 +0 -0
  257. data/ext/ruby-cbc/install/lib/libClp.so.1.13.9 +0 -0
  258. data/ext/ruby-cbc/install/lib/libClpSolver.la +35 -0
  259. data/ext/ruby-cbc/install/lib/libClpSolver.so +0 -0
  260. data/ext/ruby-cbc/install/lib/libClpSolver.so.1 +0 -0
  261. data/ext/ruby-cbc/install/lib/libClpSolver.so.1.13.9 +0 -0
  262. data/ext/ruby-cbc/install/lib/libCoinUtils.la +35 -0
  263. data/ext/ruby-cbc/install/lib/libCoinUtils.so +0 -0
  264. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3 +0 -0
  265. data/ext/ruby-cbc/install/lib/libCoinUtils.so.3.10.11 +0 -0
  266. data/ext/ruby-cbc/install/lib/libOsi.la +35 -0
  267. data/ext/ruby-cbc/install/lib/libOsi.so +0 -0
  268. data/ext/ruby-cbc/install/lib/libOsi.so.1 +0 -0
  269. data/ext/ruby-cbc/install/lib/libOsi.so.1.12.6 +0 -0
  270. data/ext/ruby-cbc/install/lib/libOsiCbc.la +35 -0
  271. data/ext/ruby-cbc/install/lib/libOsiCbc.so +0 -0
  272. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3 +0 -0
  273. data/ext/ruby-cbc/install/lib/libOsiCbc.so.3.9.7 +0 -0
  274. data/ext/ruby-cbc/install/lib/libOsiClp.la +35 -0
  275. data/ext/ruby-cbc/install/lib/libOsiClp.so +0 -0
  276. data/ext/ruby-cbc/install/lib/libOsiClp.so.1 +0 -0
  277. data/ext/ruby-cbc/install/lib/libOsiClp.so.1.13.9 +0 -0
  278. data/ext/ruby-cbc/install/lib/libOsiCommonTests.la +35 -0
  279. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so +0 -0
  280. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1 +0 -0
  281. data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1.12.6 +0 -0
  282. data/ext/ruby-cbc/install/lib/pkgconfig/cbc.pc +12 -0
  283. data/ext/ruby-cbc/install/lib/pkgconfig/cgl.pc +12 -0
  284. data/ext/ruby-cbc/install/lib/pkgconfig/clp.pc +12 -0
  285. data/ext/ruby-cbc/install/lib/pkgconfig/coindatamiplib3.pc +9 -0
  286. data/ext/ruby-cbc/install/lib/pkgconfig/coindatasample.pc +9 -0
  287. data/ext/ruby-cbc/install/lib/pkgconfig/coinutils.pc +12 -0
  288. data/ext/ruby-cbc/install/lib/pkgconfig/osi-cbc.pc +12 -0
  289. data/ext/ruby-cbc/install/lib/pkgconfig/osi-clp.pc +12 -0
  290. data/ext/ruby-cbc/install/lib/pkgconfig/osi-unittests.pc +12 -0
  291. data/ext/ruby-cbc/install/lib/pkgconfig/osi.pc +12 -0
  292. data/lib/ruby-cbc/ilp/constant.rb +44 -0
  293. data/lib/ruby-cbc/ilp/constraint.rb +32 -0
  294. data/lib/ruby-cbc/ilp/objective.rb +26 -0
  295. data/lib/ruby-cbc/ilp/term.rb +47 -0
  296. data/lib/ruby-cbc/ilp/term_array.rb +80 -0
  297. data/lib/ruby-cbc/ilp/var.rb +62 -0
  298. data/lib/ruby-cbc/model.rb +125 -0
  299. data/lib/ruby-cbc/problem.rb +170 -0
  300. data/lib/ruby-cbc/version.rb +3 -0
  301. data/lib/ruby-cbc.rb +21 -0
  302. data/ruby-cbc.gemspec +36 -0
  303. metadata +431 -0
@@ -0,0 +1,401 @@
1
+ /* $Id: ClpNonLinearCost.hpp 1769 2011-07-26 09:31:51Z forrest $ */
2
+ // Copyright (C) 2002, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #ifndef ClpNonLinearCost_H
7
+ #define ClpNonLinearCost_H
8
+
9
+
10
+ #include "CoinPragma.hpp"
11
+
12
+ class ClpSimplex;
13
+ class CoinIndexedVector;
14
+
15
+ /** Trivial class to deal with non linear costs
16
+
17
+ I don't make any explicit assumptions about convexity but I am
18
+ sure I do make implicit ones.
19
+
20
+ One interesting idea for normal LP's will be to allow non-basic
21
+ variables to come into basis as infeasible i.e. if variable at
22
+ lower bound has very large positive reduced cost (when problem
23
+ is infeasible) could it reduce overall problem infeasibility more
24
+ by bringing it into basis below its lower bound.
25
+
26
+ Another feature would be to automatically discover when problems
27
+ are convex piecewise linear and re-formulate to use non-linear.
28
+ I did some work on this many years ago on "grade" problems, but
29
+ while it improved primal interior point algorithms were much better
30
+ for that particular problem.
31
+ */
32
+ /* status has original status and current status
33
+ 0 - below lower so stored is upper
34
+ 1 - in range
35
+ 2 - above upper so stored is lower
36
+ 4 - (for current) - same as original
37
+ */
38
+ #define CLP_BELOW_LOWER 0
39
+ #define CLP_FEASIBLE 1
40
+ #define CLP_ABOVE_UPPER 2
41
+ #define CLP_SAME 4
42
+ inline int originalStatus(unsigned char status)
43
+ {
44
+ return (status & 15);
45
+ }
46
+ inline int currentStatus(unsigned char status)
47
+ {
48
+ return (status >> 4);
49
+ }
50
+ inline void setOriginalStatus(unsigned char & status, int value)
51
+ {
52
+ status = static_cast<unsigned char>(status & ~15);
53
+ status = static_cast<unsigned char>(status | value);
54
+ }
55
+ inline void setCurrentStatus(unsigned char &status, int value)
56
+ {
57
+ status = static_cast<unsigned char>(status & ~(15 << 4));
58
+ status = static_cast<unsigned char>(status | (value << 4));
59
+ }
60
+ inline void setInitialStatus(unsigned char &status)
61
+ {
62
+ status = static_cast<unsigned char>(CLP_FEASIBLE | (CLP_SAME << 4));
63
+ }
64
+ inline void setSameStatus(unsigned char &status)
65
+ {
66
+ status = static_cast<unsigned char>(status & ~(15 << 4));
67
+ status = static_cast<unsigned char>(status | (CLP_SAME << 4));
68
+ }
69
+ // Use second version to get more speed
70
+ //#define FAST_CLPNON
71
+ #ifndef FAST_CLPNON
72
+ #define CLP_METHOD1 ((method_&1)!=0)
73
+ #define CLP_METHOD2 ((method_&2)!=0)
74
+ #else
75
+ #define CLP_METHOD1 (false)
76
+ #define CLP_METHOD2 (true)
77
+ #endif
78
+ class ClpNonLinearCost {
79
+
80
+ public:
81
+
82
+ public:
83
+
84
+ /**@name Constructors, destructor */
85
+ //@{
86
+ /// Default constructor.
87
+ ClpNonLinearCost();
88
+ /** Constructor from simplex.
89
+ This will just set up wasteful arrays for linear, but
90
+ later may do dual analysis and even finding duplicate columns .
91
+ */
92
+ ClpNonLinearCost(ClpSimplex * model, int method = 1);
93
+ /** Constructor from simplex and list of non-linearities (columns only)
94
+ First lower of each column has to match real lower
95
+ Last lower has to be <= upper (if == then cost ignored)
96
+ This could obviously be changed to make more user friendly
97
+ */
98
+ ClpNonLinearCost(ClpSimplex * model, const int * starts,
99
+ const double * lower, const double * cost);
100
+ /// Destructor
101
+ ~ClpNonLinearCost();
102
+ // Copy
103
+ ClpNonLinearCost(const ClpNonLinearCost&);
104
+ // Assignment
105
+ ClpNonLinearCost& operator=(const ClpNonLinearCost&);
106
+ //@}
107
+
108
+
109
+ /**@name Actual work in primal */
110
+ //@{
111
+ /** Changes infeasible costs and computes number and cost of infeas
112
+ Puts all non-basic (non free) variables to bounds
113
+ and all free variables to zero if oldTolerance is non-zero
114
+ - but does not move those <= oldTolerance away*/
115
+ void checkInfeasibilities(double oldTolerance = 0.0);
116
+ /** Changes infeasible costs for each variable
117
+ The indices are row indices and need converting to sequences
118
+ */
119
+ void checkInfeasibilities(int numberInArray, const int * index);
120
+ /** Puts back correct infeasible costs for each variable
121
+ The input indices are row indices and need converting to sequences
122
+ for costs.
123
+ On input array is empty (but indices exist). On exit just
124
+ changed costs will be stored as normal CoinIndexedVector
125
+ */
126
+ void checkChanged(int numberInArray, CoinIndexedVector * update);
127
+ /** Goes through one bound for each variable.
128
+ If multiplier*work[iRow]>0 goes down, otherwise up.
129
+ The indices are row indices and need converting to sequences
130
+ Temporary offsets may be set
131
+ Rhs entries are increased
132
+ */
133
+ void goThru(int numberInArray, double multiplier,
134
+ const int * index, const double * work,
135
+ double * rhs);
136
+ /** Takes off last iteration (i.e. offsets closer to 0)
137
+ */
138
+ void goBack(int numberInArray, const int * index,
139
+ double * rhs);
140
+ /** Puts back correct infeasible costs for each variable
141
+ The input indices are row indices and need converting to sequences
142
+ for costs.
143
+ At the end of this all temporary offsets are zero
144
+ */
145
+ void goBackAll(const CoinIndexedVector * update);
146
+ /// Temporary zeroing of feasible costs
147
+ void zapCosts();
148
+ /// Refreshes costs always makes row costs zero
149
+ void refreshCosts(const double * columnCosts);
150
+ /// Puts feasible bounds into lower and upper
151
+ void feasibleBounds();
152
+ /// Refresh - assuming regions OK
153
+ void refresh();
154
+ /** Sets bounds and cost for one variable
155
+ Returns change in cost
156
+ May need to be inline for speed */
157
+ double setOne(int sequence, double solutionValue);
158
+ /** Sets bounds and infeasible cost and true cost for one variable
159
+ This is for gub and column generation etc */
160
+ void setOne(int sequence, double solutionValue, double lowerValue, double upperValue,
161
+ double costValue = 0.0);
162
+ /** Sets bounds and cost for outgoing variable
163
+ may change value
164
+ Returns direction */
165
+ int setOneOutgoing(int sequence, double &solutionValue);
166
+ /// Returns nearest bound
167
+ double nearest(int sequence, double solutionValue);
168
+ /** Returns change in cost - one down if alpha >0.0, up if <0.0
169
+ Value is current - new
170
+ */
171
+ inline double changeInCost(int sequence, double alpha) const {
172
+ double returnValue = 0.0;
173
+ if (CLP_METHOD1) {
174
+ int iRange = whichRange_[sequence] + offset_[sequence];
175
+ if (alpha > 0.0)
176
+ returnValue = cost_[iRange] - cost_[iRange-1];
177
+ else
178
+ returnValue = cost_[iRange] - cost_[iRange+1];
179
+ }
180
+ if (CLP_METHOD2) {
181
+ returnValue = (alpha > 0.0) ? infeasibilityWeight_ : -infeasibilityWeight_;
182
+ }
183
+ return returnValue;
184
+ }
185
+ inline double changeUpInCost(int sequence) const {
186
+ double returnValue = 0.0;
187
+ if (CLP_METHOD1) {
188
+ int iRange = whichRange_[sequence] + offset_[sequence];
189
+ if (iRange + 1 != start_[sequence+1] && !infeasible(iRange + 1))
190
+ returnValue = cost_[iRange] - cost_[iRange+1];
191
+ else
192
+ returnValue = -1.0e100;
193
+ }
194
+ if (CLP_METHOD2) {
195
+ returnValue = -infeasibilityWeight_;
196
+ }
197
+ return returnValue;
198
+ }
199
+ inline double changeDownInCost(int sequence) const {
200
+ double returnValue = 0.0;
201
+ if (CLP_METHOD1) {
202
+ int iRange = whichRange_[sequence] + offset_[sequence];
203
+ if (iRange != start_[sequence] && !infeasible(iRange - 1))
204
+ returnValue = cost_[iRange] - cost_[iRange-1];
205
+ else
206
+ returnValue = 1.0e100;
207
+ }
208
+ if (CLP_METHOD2) {
209
+ returnValue = infeasibilityWeight_;
210
+ }
211
+ return returnValue;
212
+ }
213
+ /// This also updates next bound
214
+ inline double changeInCost(int sequence, double alpha, double &rhs) {
215
+ double returnValue = 0.0;
216
+ #ifdef NONLIN_DEBUG
217
+ double saveRhs = rhs;
218
+ #endif
219
+ if (CLP_METHOD1) {
220
+ int iRange = whichRange_[sequence] + offset_[sequence];
221
+ if (alpha > 0.0) {
222
+ assert(iRange - 1 >= start_[sequence]);
223
+ offset_[sequence]--;
224
+ rhs += lower_[iRange] - lower_[iRange-1];
225
+ returnValue = alpha * (cost_[iRange] - cost_[iRange-1]);
226
+ } else {
227
+ assert(iRange + 1 < start_[sequence+1] - 1);
228
+ offset_[sequence]++;
229
+ rhs += lower_[iRange+2] - lower_[iRange+1];
230
+ returnValue = alpha * (cost_[iRange] - cost_[iRange+1]);
231
+ }
232
+ }
233
+ if (CLP_METHOD2) {
234
+ #ifdef NONLIN_DEBUG
235
+ double saveRhs1 = rhs;
236
+ rhs = saveRhs;
237
+ #endif
238
+ unsigned char iStatus = status_[sequence];
239
+ int iWhere = currentStatus(iStatus);
240
+ if (iWhere == CLP_SAME)
241
+ iWhere = originalStatus(iStatus);
242
+ // rhs always increases
243
+ if (iWhere == CLP_FEASIBLE) {
244
+ if (alpha > 0.0) {
245
+ // going below
246
+ iWhere = CLP_BELOW_LOWER;
247
+ rhs = COIN_DBL_MAX;
248
+ } else {
249
+ // going above
250
+ iWhere = CLP_ABOVE_UPPER;
251
+ rhs = COIN_DBL_MAX;
252
+ }
253
+ } else if (iWhere == CLP_BELOW_LOWER) {
254
+ assert (alpha < 0);
255
+ // going feasible
256
+ iWhere = CLP_FEASIBLE;
257
+ rhs += bound_[sequence] - model_->upperRegion()[sequence];
258
+ } else {
259
+ assert (iWhere == CLP_ABOVE_UPPER);
260
+ // going feasible
261
+ iWhere = CLP_FEASIBLE;
262
+ rhs += model_->lowerRegion()[sequence] - bound_[sequence];
263
+ }
264
+ setCurrentStatus(status_[sequence], iWhere);
265
+ #ifdef NONLIN_DEBUG
266
+ assert(saveRhs1 == rhs);
267
+ #endif
268
+ returnValue = fabs(alpha) * infeasibilityWeight_;
269
+ }
270
+ return returnValue;
271
+ }
272
+ /// Returns current lower bound
273
+ inline double lower(int sequence) const {
274
+ return lower_[whichRange_[sequence] + offset_[sequence]];
275
+ }
276
+ /// Returns current upper bound
277
+ inline double upper(int sequence) const {
278
+ return lower_[whichRange_[sequence] + offset_[sequence] + 1];
279
+ }
280
+ /// Returns current cost
281
+ inline double cost(int sequence) const {
282
+ return cost_[whichRange_[sequence] + offset_[sequence]];
283
+ }
284
+ //@}
285
+
286
+
287
+ /**@name Gets and sets */
288
+ //@{
289
+ /// Number of infeasibilities
290
+ inline int numberInfeasibilities() const {
291
+ return numberInfeasibilities_;
292
+ }
293
+ /// Change in cost
294
+ inline double changeInCost() const {
295
+ return changeCost_;
296
+ }
297
+ /// Feasible cost
298
+ inline double feasibleCost() const {
299
+ return feasibleCost_;
300
+ }
301
+ /// Feasible cost with offset and direction (i.e. for reporting)
302
+ double feasibleReportCost() const;
303
+ /// Sum of infeasibilities
304
+ inline double sumInfeasibilities() const {
305
+ return sumInfeasibilities_;
306
+ }
307
+ /// Largest infeasibility
308
+ inline double largestInfeasibility() const {
309
+ return largestInfeasibility_;
310
+ }
311
+ /// Average theta
312
+ inline double averageTheta() const {
313
+ return averageTheta_;
314
+ }
315
+ inline void setAverageTheta(double value) {
316
+ averageTheta_ = value;
317
+ }
318
+ inline void setChangeInCost(double value) {
319
+ changeCost_ = value;
320
+ }
321
+ inline void setMethod(int value) {
322
+ method_ = value;
323
+ }
324
+ /// See if may want to look both ways
325
+ inline bool lookBothWays() const {
326
+ return bothWays_;
327
+ }
328
+ //@}
329
+ ///@name Private functions to deal with infeasible regions
330
+ inline bool infeasible(int i) const {
331
+ return ((infeasible_[i>>5] >> (i & 31)) & 1) != 0;
332
+ }
333
+ inline void setInfeasible(int i, bool trueFalse) {
334
+ unsigned int & value = infeasible_[i>>5];
335
+ int bit = i & 31;
336
+ if (trueFalse)
337
+ value |= (1 << bit);
338
+ else
339
+ value &= ~(1 << bit);
340
+ }
341
+ inline unsigned char * statusArray() const {
342
+ return status_;
343
+ }
344
+ /// For debug
345
+ void validate();
346
+ //@}
347
+
348
+ private:
349
+ /**@name Data members */
350
+ //@{
351
+ /// Change in cost because of infeasibilities
352
+ double changeCost_;
353
+ /// Feasible cost
354
+ double feasibleCost_;
355
+ /// Current infeasibility weight
356
+ double infeasibilityWeight_;
357
+ /// Largest infeasibility
358
+ double largestInfeasibility_;
359
+ /// Sum of infeasibilities
360
+ double sumInfeasibilities_;
361
+ /// Average theta - kept here as only for primal
362
+ double averageTheta_;
363
+ /// Number of rows (mainly for checking and copy)
364
+ int numberRows_;
365
+ /// Number of columns (mainly for checking and copy)
366
+ int numberColumns_;
367
+ /// Starts for each entry (columns then rows)
368
+ int * start_;
369
+ /// Range for each entry (columns then rows)
370
+ int * whichRange_;
371
+ /// Temporary range offset for each entry (columns then rows)
372
+ int * offset_;
373
+ /** Lower bound for each range (upper bound is next lower).
374
+ For various reasons there is always an infeasible range
375
+ at bottom - even if lower bound is - infinity */
376
+ double * lower_;
377
+ /// Cost for each range
378
+ double * cost_;
379
+ /// Model
380
+ ClpSimplex * model_;
381
+ // Array to say which regions are infeasible
382
+ unsigned int * infeasible_;
383
+ /// Number of infeasibilities found
384
+ int numberInfeasibilities_;
385
+ // new stuff
386
+ /// Contains status at beginning and current
387
+ unsigned char * status_;
388
+ /// Bound which has been replaced in lower_ or upper_
389
+ double * bound_;
390
+ /// Feasible cost array
391
+ double * cost2_;
392
+ /// Method 1 old, 2 new, 3 both!
393
+ int method_;
394
+ /// If all non-linear costs convex
395
+ bool convex_;
396
+ /// If we should look both ways for djs
397
+ bool bothWays_;
398
+ //@}
399
+ };
400
+
401
+ #endif
@@ -0,0 +1,134 @@
1
+ /* $Id: ClpObjective.hpp 1825 2011-11-20 16:02:57Z forrest $ */
2
+ // Copyright (C) 2002, International Business Machines
3
+ // Corporation and others. All Rights Reserved.
4
+ // This code is licensed under the terms of the Eclipse Public License (EPL).
5
+
6
+ #ifndef ClpObjective_H
7
+ #define ClpObjective_H
8
+
9
+
10
+ //#############################################################################
11
+ class ClpSimplex;
12
+ class ClpModel;
13
+
14
+ /** Objective Abstract Base Class
15
+
16
+ Abstract Base Class for describing an objective function
17
+
18
+ */
19
+ class ClpObjective {
20
+
21
+ public:
22
+
23
+ ///@name Stuff
24
+ //@{
25
+
26
+ /** Returns gradient. If Linear then solution may be NULL,
27
+ also returns an offset (to be added to current one)
28
+ If refresh is false then uses last solution
29
+ Uses model for scaling
30
+ includeLinear 0 - no, 1 as is, 2 as feasible
31
+ */
32
+ virtual double * gradient(const ClpSimplex * model,
33
+ const double * solution,
34
+ double & offset, bool refresh,
35
+ int includeLinear = 2) = 0;
36
+ /** Returns reduced gradient.Returns an offset (to be added to current one).
37
+ */
38
+ virtual double reducedGradient(ClpSimplex * model, double * region,
39
+ bool useFeasibleCosts) = 0;
40
+ /** Returns step length which gives minimum of objective for
41
+ solution + theta * change vector up to maximum theta.
42
+
43
+ arrays are numberColumns+numberRows
44
+ Also sets current objective, predicted and at maximumTheta
45
+ */
46
+ virtual double stepLength(ClpSimplex * model,
47
+ const double * solution,
48
+ const double * change,
49
+ double maximumTheta,
50
+ double & currentObj,
51
+ double & predictedObj,
52
+ double & thetaObj) = 0;
53
+ /// Return objective value (without any ClpModel offset) (model may be NULL)
54
+ virtual double objectiveValue(const ClpSimplex * model, const double * solution) const = 0;
55
+ /// Resize objective
56
+ virtual void resize(int newNumberColumns) = 0;
57
+ /// Delete columns in objective
58
+ virtual void deleteSome(int numberToDelete, const int * which) = 0;
59
+ /// Scale objective
60
+ virtual void reallyScale(const double * columnScale) = 0;
61
+ /** Given a zeroed array sets nonlinear columns to 1.
62
+ Returns number of nonlinear columns
63
+ */
64
+ virtual int markNonlinear(char * which);
65
+ /// Say we have new primal solution - so may need to recompute
66
+ virtual void newXValues() {}
67
+ //@}
68
+
69
+
70
+ ///@name Constructors and destructors
71
+ //@{
72
+ /// Default Constructor
73
+ ClpObjective();
74
+
75
+ /// Copy constructor
76
+ ClpObjective(const ClpObjective &);
77
+
78
+ /// Assignment operator
79
+ ClpObjective & operator=(const ClpObjective& rhs);
80
+
81
+ /// Destructor
82
+ virtual ~ClpObjective ();
83
+
84
+ /// Clone
85
+ virtual ClpObjective * clone() const = 0;
86
+ /** Subset clone. Duplicates are allowed
87
+ and order is as given.
88
+ Derived classes need not provide this as it may not always make
89
+ sense */
90
+ virtual ClpObjective * subsetClone (int numberColumns,
91
+ const int * whichColumns) const;
92
+
93
+ //@}
94
+
95
+ ///@name Other
96
+ //@{
97
+ /// Returns type (above 63 is extra information)
98
+ inline int type() const {
99
+ return type_;
100
+ }
101
+ /// Sets type (above 63 is extra information)
102
+ inline void setType(int value) {
103
+ type_ = value;
104
+ }
105
+ /// Whether activated
106
+ inline int activated() const {
107
+ return activated_;
108
+ }
109
+ /// Set whether activated
110
+ inline void setActivated(int value) {
111
+ activated_ = value;
112
+ }
113
+
114
+ /// Objective offset
115
+ inline double nonlinearOffset () const {
116
+ return offset_;
117
+ }
118
+ //@}
119
+
120
+ //---------------------------------------------------------------------------
121
+
122
+ protected:
123
+ ///@name Protected member data
124
+ //@{
125
+ /// Value of non-linear part of objective
126
+ double offset_;
127
+ /// Type of objective - linear is 1
128
+ int type_;
129
+ /// Whether activated
130
+ int activated_;
131
+ //@}
132
+ };
133
+
134
+ #endif