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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +203 -0
- data/Rakefile +40 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/ext/ruby-cbc/cbc.i +15 -0
- data/ext/ruby-cbc/cbc_wrap.c +4618 -0
- data/ext/ruby-cbc/extconf.rb +60 -0
- data/ext/ruby-cbc/install/bin/cbc +0 -0
- data/ext/ruby-cbc/install/bin/clp +0 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchActual.hpp +24 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchAllDifferent.hpp +62 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchBase.hpp +78 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchCut.hpp +183 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchDecision.hpp +129 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchDefaultDecision.hpp +100 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchDynamic.hpp +206 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchLotsize.hpp +242 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchToFixLots.hpp +94 -0
- data/ext/ruby-cbc/install/include/coin/CbcBranchingObject.hpp +236 -0
- data/ext/ruby-cbc/install/include/coin/CbcClique.hpp +303 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompare.hpp +39 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompareActual.hpp +14 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompareBase.hpp +142 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompareDefault.hpp +120 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompareDepth.hpp +47 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompareEstimate.hpp +48 -0
- data/ext/ruby-cbc/install/include/coin/CbcCompareObjective.hpp +49 -0
- data/ext/ruby-cbc/install/include/coin/CbcConfig.h +14 -0
- data/ext/ruby-cbc/install/include/coin/CbcConsequence.hpp +49 -0
- data/ext/ruby-cbc/install/include/coin/CbcCountRowCut.hpp +168 -0
- data/ext/ruby-cbc/install/include/coin/CbcCutGenerator.hpp +482 -0
- data/ext/ruby-cbc/install/include/coin/CbcCutModifier.hpp +57 -0
- data/ext/ruby-cbc/install/include/coin/CbcCutSubsetModifier.hpp +66 -0
- data/ext/ruby-cbc/install/include/coin/CbcDummyBranchingObject.hpp +83 -0
- data/ext/ruby-cbc/install/include/coin/CbcEventHandler.hpp +245 -0
- data/ext/ruby-cbc/install/include/coin/CbcFathom.hpp +137 -0
- data/ext/ruby-cbc/install/include/coin/CbcFathomDynamicProgramming.hpp +169 -0
- data/ext/ruby-cbc/install/include/coin/CbcFeasibilityBase.hpp +56 -0
- data/ext/ruby-cbc/install/include/coin/CbcFixVariable.hpp +67 -0
- data/ext/ruby-cbc/install/include/coin/CbcFollowOn.hpp +207 -0
- data/ext/ruby-cbc/install/include/coin/CbcFullNodeInfo.hpp +161 -0
- data/ext/ruby-cbc/install/include/coin/CbcGeneral.hpp +60 -0
- data/ext/ruby-cbc/install/include/coin/CbcGeneralDepth.hpp +279 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristic.hpp +682 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDINS.hpp +96 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDW.hpp +309 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDive.hpp +192 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveCoefficient.hpp +52 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveFractional.hpp +52 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveGuided.hpp +55 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveLineSearch.hpp +52 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDivePseudoCost.hpp +60 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicDiveVectorLength.hpp +52 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicFPump.hpp +340 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicGreedy.hpp +280 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicLocal.hpp +271 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicPivotAndFix.hpp +58 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicRENS.hpp +77 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicRINS.hpp +102 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicRandRound.hpp +58 -0
- data/ext/ruby-cbc/install/include/coin/CbcHeuristicVND.hpp +94 -0
- data/ext/ruby-cbc/install/include/coin/CbcLinked.hpp +1406 -0
- data/ext/ruby-cbc/install/include/coin/CbcMessage.hpp +94 -0
- data/ext/ruby-cbc/install/include/coin/CbcMipStartIO.hpp +26 -0
- data/ext/ruby-cbc/install/include/coin/CbcModel.hpp +2952 -0
- data/ext/ruby-cbc/install/include/coin/CbcNWay.hpp +166 -0
- data/ext/ruby-cbc/install/include/coin/CbcNode.hpp +351 -0
- data/ext/ruby-cbc/install/include/coin/CbcNodeInfo.hpp +349 -0
- data/ext/ruby-cbc/install/include/coin/CbcObject.hpp +272 -0
- data/ext/ruby-cbc/install/include/coin/CbcObjectUpdateData.hpp +64 -0
- data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.cpp +4134 -0
- data/ext/ruby-cbc/install/include/coin/CbcOrClpParam.hpp +532 -0
- data/ext/ruby-cbc/install/include/coin/CbcParam.hpp +324 -0
- data/ext/ruby-cbc/install/include/coin/CbcPartialNodeInfo.hpp +110 -0
- data/ext/ruby-cbc/install/include/coin/CbcSOS.hpp +279 -0
- data/ext/ruby-cbc/install/include/coin/CbcSimpleInteger.hpp +286 -0
- data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerDynamicPseudoCost.hpp +564 -0
- data/ext/ruby-cbc/install/include/coin/CbcSimpleIntegerPseudoCost.hpp +114 -0
- data/ext/ruby-cbc/install/include/coin/CbcSolver.hpp +447 -0
- data/ext/ruby-cbc/install/include/coin/CbcStrategy.hpp +258 -0
- data/ext/ruby-cbc/install/include/coin/CbcSubProblem.hpp +83 -0
- data/ext/ruby-cbc/install/include/coin/CbcTree.hpp +490 -0
- data/ext/ruby-cbc/install/include/coin/CbcTreeLocal.hpp +372 -0
- data/ext/ruby-cbc/install/include/coin/Cbc_C_Interface.h +381 -0
- data/ext/ruby-cbc/install/include/coin/Cgl012cut.hpp +464 -0
- data/ext/ruby-cbc/install/include/coin/CglAllDifferent.hpp +115 -0
- data/ext/ruby-cbc/install/include/coin/CglClique.hpp +308 -0
- data/ext/ruby-cbc/install/include/coin/CglConfig.h +19 -0
- data/ext/ruby-cbc/install/include/coin/CglCutGenerator.hpp +121 -0
- data/ext/ruby-cbc/install/include/coin/CglDuplicateRow.hpp +189 -0
- data/ext/ruby-cbc/install/include/coin/CglFlowCover.hpp +371 -0
- data/ext/ruby-cbc/install/include/coin/CglGMI.hpp +364 -0
- data/ext/ruby-cbc/install/include/coin/CglGMIParam.hpp +313 -0
- data/ext/ruby-cbc/install/include/coin/CglGomory.hpp +204 -0
- data/ext/ruby-cbc/install/include/coin/CglKnapsackCover.hpp +310 -0
- data/ext/ruby-cbc/install/include/coin/CglLandP.hpp +306 -0
- data/ext/ruby-cbc/install/include/coin/CglLandPValidator.hpp +130 -0
- data/ext/ruby-cbc/install/include/coin/CglLiftAndProject.hpp +104 -0
- data/ext/ruby-cbc/install/include/coin/CglMessage.hpp +50 -0
- data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding.hpp +429 -0
- data/ext/ruby-cbc/install/include/coin/CglMixedIntegerRounding2.hpp +427 -0
- data/ext/ruby-cbc/install/include/coin/CglOddHole.hpp +160 -0
- data/ext/ruby-cbc/install/include/coin/CglParam.hpp +93 -0
- data/ext/ruby-cbc/install/include/coin/CglPreProcess.hpp +492 -0
- data/ext/ruby-cbc/install/include/coin/CglProbing.hpp +543 -0
- data/ext/ruby-cbc/install/include/coin/CglRedSplit.hpp +448 -0
- data/ext/ruby-cbc/install/include/coin/CglRedSplit2.hpp +494 -0
- data/ext/ruby-cbc/install/include/coin/CglRedSplit2Param.hpp +495 -0
- data/ext/ruby-cbc/install/include/coin/CglRedSplitParam.hpp +272 -0
- data/ext/ruby-cbc/install/include/coin/CglResidualCapacity.hpp +240 -0
- data/ext/ruby-cbc/install/include/coin/CglSimpleRounding.hpp +174 -0
- data/ext/ruby-cbc/install/include/coin/CglStored.hpp +125 -0
- data/ext/ruby-cbc/install/include/coin/CglTreeInfo.hpp +180 -0
- data/ext/ruby-cbc/install/include/coin/CglTwomir.hpp +565 -0
- data/ext/ruby-cbc/install/include/coin/CglZeroHalf.hpp +133 -0
- data/ext/ruby-cbc/install/include/coin/ClpAmplObjective.hpp +113 -0
- data/ext/ruby-cbc/install/include/coin/ClpCholeskyBase.hpp +294 -0
- data/ext/ruby-cbc/install/include/coin/ClpCholeskyDense.hpp +162 -0
- data/ext/ruby-cbc/install/include/coin/ClpConfig.h +17 -0
- data/ext/ruby-cbc/install/include/coin/ClpConstraint.hpp +125 -0
- data/ext/ruby-cbc/install/include/coin/ClpConstraintAmpl.hpp +108 -0
- data/ext/ruby-cbc/install/include/coin/ClpConstraintLinear.hpp +110 -0
- data/ext/ruby-cbc/install/include/coin/ClpConstraintQuadratic.hpp +119 -0
- data/ext/ruby-cbc/install/include/coin/ClpDualRowDantzig.hpp +71 -0
- data/ext/ruby-cbc/install/include/coin/ClpDualRowPivot.hpp +129 -0
- data/ext/ruby-cbc/install/include/coin/ClpDualRowSteepest.hpp +153 -0
- data/ext/ruby-cbc/install/include/coin/ClpDummyMatrix.hpp +183 -0
- data/ext/ruby-cbc/install/include/coin/ClpDynamicExampleMatrix.hpp +186 -0
- data/ext/ruby-cbc/install/include/coin/ClpDynamicMatrix.hpp +381 -0
- data/ext/ruby-cbc/install/include/coin/ClpEventHandler.hpp +187 -0
- data/ext/ruby-cbc/install/include/coin/ClpFactorization.hpp +432 -0
- data/ext/ruby-cbc/install/include/coin/ClpGubDynamicMatrix.hpp +247 -0
- data/ext/ruby-cbc/install/include/coin/ClpGubMatrix.hpp +358 -0
- data/ext/ruby-cbc/install/include/coin/ClpInterior.hpp +570 -0
- data/ext/ruby-cbc/install/include/coin/ClpLinearObjective.hpp +103 -0
- data/ext/ruby-cbc/install/include/coin/ClpMatrixBase.hpp +524 -0
- data/ext/ruby-cbc/install/include/coin/ClpMessage.hpp +131 -0
- data/ext/ruby-cbc/install/include/coin/ClpModel.hpp +1307 -0
- data/ext/ruby-cbc/install/include/coin/ClpNetworkMatrix.hpp +229 -0
- data/ext/ruby-cbc/install/include/coin/ClpNode.hpp +349 -0
- data/ext/ruby-cbc/install/include/coin/ClpNonLinearCost.hpp +401 -0
- data/ext/ruby-cbc/install/include/coin/ClpObjective.hpp +134 -0
- data/ext/ruby-cbc/install/include/coin/ClpPackedMatrix.hpp +638 -0
- data/ext/ruby-cbc/install/include/coin/ClpParameters.hpp +126 -0
- data/ext/ruby-cbc/install/include/coin/ClpPdcoBase.hpp +103 -0
- data/ext/ruby-cbc/install/include/coin/ClpPlusMinusOneMatrix.hpp +290 -0
- data/ext/ruby-cbc/install/include/coin/ClpPresolve.hpp +299 -0
- data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnDantzig.hpp +72 -0
- data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnPivot.hpp +155 -0
- data/ext/ruby-cbc/install/include/coin/ClpPrimalColumnSteepest.hpp +247 -0
- data/ext/ruby-cbc/install/include/coin/ClpQuadraticObjective.hpp +155 -0
- data/ext/ruby-cbc/install/include/coin/ClpSimplex.hpp +1797 -0
- data/ext/ruby-cbc/install/include/coin/ClpSimplexDual.hpp +300 -0
- data/ext/ruby-cbc/install/include/coin/ClpSimplexNonlinear.hpp +117 -0
- data/ext/ruby-cbc/install/include/coin/ClpSimplexOther.hpp +277 -0
- data/ext/ruby-cbc/install/include/coin/ClpSimplexPrimal.hpp +244 -0
- data/ext/ruby-cbc/install/include/coin/ClpSolve.hpp +446 -0
- data/ext/ruby-cbc/install/include/coin/Clp_C_Interface.h +525 -0
- data/ext/ruby-cbc/install/include/coin/CoinAlloc.hpp +176 -0
- data/ext/ruby-cbc/install/include/coin/CoinBuild.hpp +149 -0
- data/ext/ruby-cbc/install/include/coin/CoinDenseFactorization.hpp +419 -0
- data/ext/ruby-cbc/install/include/coin/CoinDenseVector.hpp +383 -0
- data/ext/ruby-cbc/install/include/coin/CoinDistance.hpp +48 -0
- data/ext/ruby-cbc/install/include/coin/CoinError.hpp +257 -0
- data/ext/ruby-cbc/install/include/coin/CoinFactorization.hpp +2044 -0
- data/ext/ruby-cbc/install/include/coin/CoinFileIO.hpp +166 -0
- data/ext/ruby-cbc/install/include/coin/CoinFinite.hpp +34 -0
- data/ext/ruby-cbc/install/include/coin/CoinFloatEqual.hpp +177 -0
- data/ext/ruby-cbc/install/include/coin/CoinHelperFunctions.hpp +1111 -0
- data/ext/ruby-cbc/install/include/coin/CoinIndexedVector.hpp +1164 -0
- data/ext/ruby-cbc/install/include/coin/CoinLpIO.hpp +805 -0
- data/ext/ruby-cbc/install/include/coin/CoinMessage.hpp +96 -0
- data/ext/ruby-cbc/install/include/coin/CoinMessageHandler.hpp +666 -0
- data/ext/ruby-cbc/install/include/coin/CoinModel.hpp +1054 -0
- data/ext/ruby-cbc/install/include/coin/CoinModelUseful.hpp +441 -0
- data/ext/ruby-cbc/install/include/coin/CoinMpsIO.hpp +1056 -0
- data/ext/ruby-cbc/install/include/coin/CoinOslFactorization.hpp +280 -0
- data/ext/ruby-cbc/install/include/coin/CoinPackedMatrix.hpp +947 -0
- data/ext/ruby-cbc/install/include/coin/CoinPackedVector.hpp +657 -0
- data/ext/ruby-cbc/install/include/coin/CoinPackedVectorBase.hpp +269 -0
- data/ext/ruby-cbc/install/include/coin/CoinParam.hpp +644 -0
- data/ext/ruby-cbc/install/include/coin/CoinPragma.hpp +26 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveDoubleton.hpp +73 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveDual.hpp +85 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveDupcol.hpp +226 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveEmpty.hpp +116 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveFixed.hpp +181 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveForcing.hpp +61 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveImpliedFree.hpp +60 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveIsolated.hpp +51 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveMatrix.hpp +1842 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveMonitor.hpp +105 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolvePsdebug.hpp +166 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveSingleton.hpp +112 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveSubst.hpp +101 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveTighten.hpp +55 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveTripleton.hpp +66 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveUseless.hpp +63 -0
- data/ext/ruby-cbc/install/include/coin/CoinPresolveZeros.hpp +60 -0
- data/ext/ruby-cbc/install/include/coin/CoinRational.hpp +44 -0
- data/ext/ruby-cbc/install/include/coin/CoinSearchTree.hpp +465 -0
- data/ext/ruby-cbc/install/include/coin/CoinShallowPackedVector.hpp +148 -0
- data/ext/ruby-cbc/install/include/coin/CoinSignal.hpp +117 -0
- data/ext/ruby-cbc/install/include/coin/CoinSimpFactorization.hpp +431 -0
- data/ext/ruby-cbc/install/include/coin/CoinSmartPtr.hpp +528 -0
- data/ext/ruby-cbc/install/include/coin/CoinSnapshot.hpp +476 -0
- data/ext/ruby-cbc/install/include/coin/CoinSort.hpp +678 -0
- data/ext/ruby-cbc/install/include/coin/CoinStructuredModel.hpp +247 -0
- data/ext/ruby-cbc/install/include/coin/CoinTime.hpp +310 -0
- data/ext/ruby-cbc/install/include/coin/CoinTypes.hpp +64 -0
- data/ext/ruby-cbc/install/include/coin/CoinUtility.hpp +19 -0
- data/ext/ruby-cbc/install/include/coin/CoinUtilsConfig.h +34 -0
- data/ext/ruby-cbc/install/include/coin/CoinWarmStart.hpp +58 -0
- data/ext/ruby-cbc/install/include/coin/CoinWarmStartBasis.hpp +456 -0
- data/ext/ruby-cbc/install/include/coin/CoinWarmStartDual.hpp +166 -0
- data/ext/ruby-cbc/install/include/coin/CoinWarmStartPrimalDual.hpp +211 -0
- data/ext/ruby-cbc/install/include/coin/CoinWarmStartVector.hpp +488 -0
- data/ext/ruby-cbc/install/include/coin/Coin_C_defines.h +115 -0
- data/ext/ruby-cbc/install/include/coin/Idiot.hpp +298 -0
- data/ext/ruby-cbc/install/include/coin/OsiAuxInfo.hpp +206 -0
- data/ext/ruby-cbc/install/include/coin/OsiBranchingObject.hpp +1005 -0
- data/ext/ruby-cbc/install/include/coin/OsiCbcSolverInterface.hpp +764 -0
- data/ext/ruby-cbc/install/include/coin/OsiChooseVariable.hpp +534 -0
- data/ext/ruby-cbc/install/include/coin/OsiClpSolverInterface.hpp +1509 -0
- data/ext/ruby-cbc/install/include/coin/OsiColCut.hpp +324 -0
- data/ext/ruby-cbc/install/include/coin/OsiCollections.hpp +35 -0
- data/ext/ruby-cbc/install/include/coin/OsiConfig.h +19 -0
- data/ext/ruby-cbc/install/include/coin/OsiCut.hpp +245 -0
- data/ext/ruby-cbc/install/include/coin/OsiCuts.hpp +474 -0
- data/ext/ruby-cbc/install/include/coin/OsiPresolve.hpp +252 -0
- data/ext/ruby-cbc/install/include/coin/OsiRowCut.hpp +331 -0
- data/ext/ruby-cbc/install/include/coin/OsiRowCutDebugger.hpp +187 -0
- data/ext/ruby-cbc/install/include/coin/OsiSolverBranch.hpp +152 -0
- data/ext/ruby-cbc/install/include/coin/OsiSolverInterface.hpp +2143 -0
- data/ext/ruby-cbc/install/include/coin/OsiSolverParameters.hpp +142 -0
- data/ext/ruby-cbc/install/include/coin/OsiUnitTests.hpp +374 -0
- data/ext/ruby-cbc/install/lib/libCbc.la +35 -0
- data/ext/ruby-cbc/install/lib/libCbc.so +0 -0
- data/ext/ruby-cbc/install/lib/libCbc.so.3 +0 -0
- data/ext/ruby-cbc/install/lib/libCbc.so.3.9.7 +0 -0
- data/ext/ruby-cbc/install/lib/libCbcSolver.la +35 -0
- data/ext/ruby-cbc/install/lib/libCbcSolver.so +0 -0
- data/ext/ruby-cbc/install/lib/libCbcSolver.so.3 +0 -0
- data/ext/ruby-cbc/install/lib/libCbcSolver.so.3.9.7 +0 -0
- data/ext/ruby-cbc/install/lib/libCgl.la +35 -0
- data/ext/ruby-cbc/install/lib/libCgl.so +0 -0
- data/ext/ruby-cbc/install/lib/libCgl.so.1 +0 -0
- data/ext/ruby-cbc/install/lib/libCgl.so.1.9.7 +0 -0
- data/ext/ruby-cbc/install/lib/libClp.la +35 -0
- data/ext/ruby-cbc/install/lib/libClp.so +0 -0
- data/ext/ruby-cbc/install/lib/libClp.so.1 +0 -0
- data/ext/ruby-cbc/install/lib/libClp.so.1.13.9 +0 -0
- data/ext/ruby-cbc/install/lib/libClpSolver.la +35 -0
- data/ext/ruby-cbc/install/lib/libClpSolver.so +0 -0
- data/ext/ruby-cbc/install/lib/libClpSolver.so.1 +0 -0
- data/ext/ruby-cbc/install/lib/libClpSolver.so.1.13.9 +0 -0
- data/ext/ruby-cbc/install/lib/libCoinUtils.la +35 -0
- data/ext/ruby-cbc/install/lib/libCoinUtils.so +0 -0
- data/ext/ruby-cbc/install/lib/libCoinUtils.so.3 +0 -0
- data/ext/ruby-cbc/install/lib/libCoinUtils.so.3.10.11 +0 -0
- data/ext/ruby-cbc/install/lib/libOsi.la +35 -0
- data/ext/ruby-cbc/install/lib/libOsi.so +0 -0
- data/ext/ruby-cbc/install/lib/libOsi.so.1 +0 -0
- data/ext/ruby-cbc/install/lib/libOsi.so.1.12.6 +0 -0
- data/ext/ruby-cbc/install/lib/libOsiCbc.la +35 -0
- data/ext/ruby-cbc/install/lib/libOsiCbc.so +0 -0
- data/ext/ruby-cbc/install/lib/libOsiCbc.so.3 +0 -0
- data/ext/ruby-cbc/install/lib/libOsiCbc.so.3.9.7 +0 -0
- data/ext/ruby-cbc/install/lib/libOsiClp.la +35 -0
- data/ext/ruby-cbc/install/lib/libOsiClp.so +0 -0
- data/ext/ruby-cbc/install/lib/libOsiClp.so.1 +0 -0
- data/ext/ruby-cbc/install/lib/libOsiClp.so.1.13.9 +0 -0
- data/ext/ruby-cbc/install/lib/libOsiCommonTests.la +35 -0
- data/ext/ruby-cbc/install/lib/libOsiCommonTests.so +0 -0
- data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1 +0 -0
- data/ext/ruby-cbc/install/lib/libOsiCommonTests.so.1.12.6 +0 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/cbc.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/cgl.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/clp.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/coindatamiplib3.pc +9 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/coindatasample.pc +9 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/coinutils.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/osi-cbc.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/osi-clp.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/osi-unittests.pc +12 -0
- data/ext/ruby-cbc/install/lib/pkgconfig/osi.pc +12 -0
- data/lib/ruby-cbc/ilp/constant.rb +44 -0
- data/lib/ruby-cbc/ilp/constraint.rb +32 -0
- data/lib/ruby-cbc/ilp/objective.rb +26 -0
- data/lib/ruby-cbc/ilp/term.rb +47 -0
- data/lib/ruby-cbc/ilp/term_array.rb +80 -0
- data/lib/ruby-cbc/ilp/var.rb +62 -0
- data/lib/ruby-cbc/model.rb +125 -0
- data/lib/ruby-cbc/problem.rb +170 -0
- data/lib/ruby-cbc/version.rb +3 -0
- data/lib/ruby-cbc.rb +21 -0
- data/ruby-cbc.gemspec +36 -0
- metadata +431 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/* $Id: ClpConstraint.hpp 1665 2011-01-04 17:55:54Z lou $ */
|
|
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 ClpConstraint_H
|
|
7
|
+
#define ClpConstraint_H
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
//#############################################################################
|
|
11
|
+
class ClpSimplex;
|
|
12
|
+
class ClpModel;
|
|
13
|
+
|
|
14
|
+
/** Constraint Abstract Base Class
|
|
15
|
+
|
|
16
|
+
Abstract Base Class for describing a constraint or objective function
|
|
17
|
+
|
|
18
|
+
*/
|
|
19
|
+
class ClpConstraint {
|
|
20
|
+
|
|
21
|
+
public:
|
|
22
|
+
|
|
23
|
+
///@name Stuff
|
|
24
|
+
//@{
|
|
25
|
+
|
|
26
|
+
/** Fills gradient. If Linear then solution may be NULL,
|
|
27
|
+
also returns true value of function and offset so we can use x not deltaX in constraint
|
|
28
|
+
If refresh is false then uses last solution
|
|
29
|
+
Uses model for scaling
|
|
30
|
+
Returns non-zero if gradient undefined at current solution
|
|
31
|
+
*/
|
|
32
|
+
virtual int gradient(const ClpSimplex * model,
|
|
33
|
+
const double * solution,
|
|
34
|
+
double * gradient,
|
|
35
|
+
double & functionValue ,
|
|
36
|
+
double & offset,
|
|
37
|
+
bool useScaling = false,
|
|
38
|
+
bool refresh = true) const = 0;
|
|
39
|
+
/// Constraint function value
|
|
40
|
+
virtual double functionValue (const ClpSimplex * model,
|
|
41
|
+
const double * solution,
|
|
42
|
+
bool useScaling = false,
|
|
43
|
+
bool refresh = true) const ;
|
|
44
|
+
/// Resize constraint
|
|
45
|
+
virtual void resize(int newNumberColumns) = 0;
|
|
46
|
+
/// Delete columns in constraint
|
|
47
|
+
virtual void deleteSome(int numberToDelete, const int * which) = 0;
|
|
48
|
+
/// Scale constraint
|
|
49
|
+
virtual void reallyScale(const double * columnScale) = 0;
|
|
50
|
+
/** Given a zeroed array sets nonlinear columns to 1.
|
|
51
|
+
Returns number of nonlinear columns
|
|
52
|
+
*/
|
|
53
|
+
virtual int markNonlinear(char * which) const = 0;
|
|
54
|
+
/** Given a zeroed array sets possible nonzero coefficients to 1.
|
|
55
|
+
Returns number of nonzeros
|
|
56
|
+
*/
|
|
57
|
+
virtual int markNonzero(char * which) const = 0;
|
|
58
|
+
//@}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
///@name Constructors and destructors
|
|
62
|
+
//@{
|
|
63
|
+
/// Default Constructor
|
|
64
|
+
ClpConstraint();
|
|
65
|
+
|
|
66
|
+
/// Copy constructor
|
|
67
|
+
ClpConstraint(const ClpConstraint &);
|
|
68
|
+
|
|
69
|
+
/// Assignment operator
|
|
70
|
+
ClpConstraint & operator=(const ClpConstraint& rhs);
|
|
71
|
+
|
|
72
|
+
/// Destructor
|
|
73
|
+
virtual ~ClpConstraint ();
|
|
74
|
+
|
|
75
|
+
/// Clone
|
|
76
|
+
virtual ClpConstraint * clone() const = 0;
|
|
77
|
+
|
|
78
|
+
//@}
|
|
79
|
+
|
|
80
|
+
///@name Other
|
|
81
|
+
//@{
|
|
82
|
+
/// Returns type, 0 linear, 1 nonlinear
|
|
83
|
+
inline int type() {
|
|
84
|
+
return type_;
|
|
85
|
+
}
|
|
86
|
+
/// Row number (-1 is objective)
|
|
87
|
+
inline int rowNumber() const {
|
|
88
|
+
return rowNumber_;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/// Number of possible coefficients in gradient
|
|
92
|
+
virtual int numberCoefficients() const = 0;
|
|
93
|
+
|
|
94
|
+
/// Stored constraint function value
|
|
95
|
+
inline double functionValue () const {
|
|
96
|
+
return functionValue_;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/// Constraint offset
|
|
100
|
+
inline double offset () const {
|
|
101
|
+
return offset_;
|
|
102
|
+
}
|
|
103
|
+
/// Say we have new primal solution - so may need to recompute
|
|
104
|
+
virtual void newXValues() {}
|
|
105
|
+
//@}
|
|
106
|
+
|
|
107
|
+
//---------------------------------------------------------------------------
|
|
108
|
+
|
|
109
|
+
protected:
|
|
110
|
+
///@name Protected member data
|
|
111
|
+
//@{
|
|
112
|
+
/// Gradient at last evaluation
|
|
113
|
+
mutable double * lastGradient_;
|
|
114
|
+
/// Value of non-linear part of constraint
|
|
115
|
+
mutable double functionValue_;
|
|
116
|
+
/// Value of offset for constraint
|
|
117
|
+
mutable double offset_;
|
|
118
|
+
/// Type of constraint - linear is 1
|
|
119
|
+
int type_;
|
|
120
|
+
/// Row number (-1 is objective)
|
|
121
|
+
int rowNumber_;
|
|
122
|
+
//@}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
#endif
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/* $Id: ClpConstraintAmpl.hpp 1899 2013-04-09 18:12:08Z 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 ClpConstraintAmpl_H
|
|
7
|
+
#define ClpConstraintAmpl_H
|
|
8
|
+
|
|
9
|
+
#include "ClpConstraint.hpp"
|
|
10
|
+
|
|
11
|
+
//#############################################################################
|
|
12
|
+
|
|
13
|
+
/** Ampl Constraint Class
|
|
14
|
+
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class ClpConstraintAmpl : public ClpConstraint {
|
|
18
|
+
|
|
19
|
+
public:
|
|
20
|
+
|
|
21
|
+
///@name Stuff
|
|
22
|
+
//@{
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
/** Fills gradient. If Ampl then solution may be NULL,
|
|
26
|
+
also returns true value of function and offset so we can use x not deltaX in constraint
|
|
27
|
+
If refresh is false then uses last solution
|
|
28
|
+
Uses model for scaling
|
|
29
|
+
Returns non-zero if gradient udefined at current solution
|
|
30
|
+
*/
|
|
31
|
+
virtual int gradient(const ClpSimplex * model,
|
|
32
|
+
const double * solution,
|
|
33
|
+
double * gradient,
|
|
34
|
+
double & functionValue ,
|
|
35
|
+
double & offset,
|
|
36
|
+
bool useScaling = false,
|
|
37
|
+
bool refresh = true) const ;
|
|
38
|
+
/// Resize constraint
|
|
39
|
+
virtual void resize(int newNumberColumns) ;
|
|
40
|
+
/// Delete columns in constraint
|
|
41
|
+
virtual void deleteSome(int numberToDelete, const int * which) ;
|
|
42
|
+
/// Scale constraint
|
|
43
|
+
virtual void reallyScale(const double * columnScale) ;
|
|
44
|
+
/** Given a zeroed array sets nonampl columns to 1.
|
|
45
|
+
Returns number of nonampl columns
|
|
46
|
+
*/
|
|
47
|
+
virtual int markNonlinear(char * which) const ;
|
|
48
|
+
/** Given a zeroed array sets possible nonzero coefficients to 1.
|
|
49
|
+
Returns number of nonzeros
|
|
50
|
+
*/
|
|
51
|
+
virtual int markNonzero(char * which) const;
|
|
52
|
+
/// Say we have new primal solution - so may need to recompute
|
|
53
|
+
virtual void newXValues() ;
|
|
54
|
+
//@}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
///@name Constructors and destructors
|
|
58
|
+
//@{
|
|
59
|
+
/// Default Constructor
|
|
60
|
+
ClpConstraintAmpl();
|
|
61
|
+
|
|
62
|
+
/// Constructor from ampl
|
|
63
|
+
ClpConstraintAmpl(int row, void * amplInfo);
|
|
64
|
+
|
|
65
|
+
/** Copy constructor .
|
|
66
|
+
*/
|
|
67
|
+
ClpConstraintAmpl(const ClpConstraintAmpl & rhs);
|
|
68
|
+
|
|
69
|
+
/// Assignment operator
|
|
70
|
+
ClpConstraintAmpl & operator=(const ClpConstraintAmpl& rhs);
|
|
71
|
+
|
|
72
|
+
/// Destructor
|
|
73
|
+
virtual ~ClpConstraintAmpl ();
|
|
74
|
+
|
|
75
|
+
/// Clone
|
|
76
|
+
virtual ClpConstraint * clone() const;
|
|
77
|
+
//@}
|
|
78
|
+
///@name Gets and sets
|
|
79
|
+
//@{
|
|
80
|
+
/// Number of coefficients
|
|
81
|
+
virtual int numberCoefficients() const;
|
|
82
|
+
/// Columns
|
|
83
|
+
inline const int * column() const {
|
|
84
|
+
return column_;
|
|
85
|
+
}
|
|
86
|
+
/// Coefficients
|
|
87
|
+
inline const double * coefficient() const {
|
|
88
|
+
return coefficient_;
|
|
89
|
+
}
|
|
90
|
+
//@}
|
|
91
|
+
|
|
92
|
+
//---------------------------------------------------------------------------
|
|
93
|
+
|
|
94
|
+
private:
|
|
95
|
+
///@name Private member data
|
|
96
|
+
/// Ampl info
|
|
97
|
+
void * amplInfo_;
|
|
98
|
+
/// Column
|
|
99
|
+
int * column_;
|
|
100
|
+
/// Coefficients
|
|
101
|
+
double * coefficient_;
|
|
102
|
+
/// Number of coefficients in gradient
|
|
103
|
+
int numberCoefficients_;
|
|
104
|
+
//@}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
#endif
|
|
108
|
+
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/* $Id: ClpConstraintLinear.hpp 1665 2011-01-04 17:55:54Z lou $ */
|
|
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 ClpConstraintLinear_H
|
|
7
|
+
#define ClpConstraintLinear_H
|
|
8
|
+
|
|
9
|
+
#include "ClpConstraint.hpp"
|
|
10
|
+
|
|
11
|
+
//#############################################################################
|
|
12
|
+
|
|
13
|
+
/** Linear Constraint Class
|
|
14
|
+
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class ClpConstraintLinear : public ClpConstraint {
|
|
18
|
+
|
|
19
|
+
public:
|
|
20
|
+
|
|
21
|
+
///@name Stuff
|
|
22
|
+
//@{
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
/** Fills gradient. If Linear then solution may be NULL,
|
|
26
|
+
also returns true value of function and offset so we can use x not deltaX in constraint
|
|
27
|
+
If refresh is false then uses last solution
|
|
28
|
+
Uses model for scaling
|
|
29
|
+
Returns non-zero if gradient udefined at current solution
|
|
30
|
+
*/
|
|
31
|
+
virtual int gradient(const ClpSimplex * model,
|
|
32
|
+
const double * solution,
|
|
33
|
+
double * gradient,
|
|
34
|
+
double & functionValue ,
|
|
35
|
+
double & offset,
|
|
36
|
+
bool useScaling = false,
|
|
37
|
+
bool refresh = true) const ;
|
|
38
|
+
/// Resize constraint
|
|
39
|
+
virtual void resize(int newNumberColumns) ;
|
|
40
|
+
/// Delete columns in constraint
|
|
41
|
+
virtual void deleteSome(int numberToDelete, const int * which) ;
|
|
42
|
+
/// Scale constraint
|
|
43
|
+
virtual void reallyScale(const double * columnScale) ;
|
|
44
|
+
/** Given a zeroed array sets nonlinear columns to 1.
|
|
45
|
+
Returns number of nonlinear columns
|
|
46
|
+
*/
|
|
47
|
+
virtual int markNonlinear(char * which) const ;
|
|
48
|
+
/** Given a zeroed array sets possible nonzero coefficients to 1.
|
|
49
|
+
Returns number of nonzeros
|
|
50
|
+
*/
|
|
51
|
+
virtual int markNonzero(char * which) const;
|
|
52
|
+
//@}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
///@name Constructors and destructors
|
|
56
|
+
//@{
|
|
57
|
+
/// Default Constructor
|
|
58
|
+
ClpConstraintLinear();
|
|
59
|
+
|
|
60
|
+
/// Constructor from constraint
|
|
61
|
+
ClpConstraintLinear(int row, int numberCoefficients, int numberColumns,
|
|
62
|
+
const int * column, const double * element);
|
|
63
|
+
|
|
64
|
+
/** Copy constructor .
|
|
65
|
+
*/
|
|
66
|
+
ClpConstraintLinear(const ClpConstraintLinear & rhs);
|
|
67
|
+
|
|
68
|
+
/// Assignment operator
|
|
69
|
+
ClpConstraintLinear & operator=(const ClpConstraintLinear& rhs);
|
|
70
|
+
|
|
71
|
+
/// Destructor
|
|
72
|
+
virtual ~ClpConstraintLinear ();
|
|
73
|
+
|
|
74
|
+
/// Clone
|
|
75
|
+
virtual ClpConstraint * clone() const;
|
|
76
|
+
//@}
|
|
77
|
+
///@name Gets and sets
|
|
78
|
+
//@{
|
|
79
|
+
/// Number of coefficients
|
|
80
|
+
virtual int numberCoefficients() const;
|
|
81
|
+
/// Number of columns in linear constraint
|
|
82
|
+
inline int numberColumns() const {
|
|
83
|
+
return numberColumns_;
|
|
84
|
+
}
|
|
85
|
+
/// Columns
|
|
86
|
+
inline const int * column() const {
|
|
87
|
+
return column_;
|
|
88
|
+
}
|
|
89
|
+
/// Coefficients
|
|
90
|
+
inline const double * coefficient() const {
|
|
91
|
+
return coefficient_;
|
|
92
|
+
}
|
|
93
|
+
//@}
|
|
94
|
+
|
|
95
|
+
//---------------------------------------------------------------------------
|
|
96
|
+
|
|
97
|
+
private:
|
|
98
|
+
///@name Private member data
|
|
99
|
+
/// Column
|
|
100
|
+
int * column_;
|
|
101
|
+
/// Coefficients
|
|
102
|
+
double * coefficient_;
|
|
103
|
+
/// Useful to have number of columns about
|
|
104
|
+
int numberColumns_;
|
|
105
|
+
/// Number of coefficients
|
|
106
|
+
int numberCoefficients_;
|
|
107
|
+
//@}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
#endif
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/* $Id: ClpConstraintQuadratic.hpp 1665 2011-01-04 17:55:54Z lou $ */
|
|
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 ClpConstraintQuadratic_H
|
|
7
|
+
#define ClpConstraintQuadratic_H
|
|
8
|
+
|
|
9
|
+
#include "ClpConstraint.hpp"
|
|
10
|
+
|
|
11
|
+
//#############################################################################
|
|
12
|
+
|
|
13
|
+
/** Quadratic Constraint Class
|
|
14
|
+
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class ClpConstraintQuadratic : public ClpConstraint {
|
|
18
|
+
|
|
19
|
+
public:
|
|
20
|
+
|
|
21
|
+
///@name Stuff
|
|
22
|
+
//@{
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
/** Fills gradient. If Quadratic then solution may be NULL,
|
|
26
|
+
also returns true value of function and offset so we can use x not deltaX in constraint
|
|
27
|
+
If refresh is false then uses last solution
|
|
28
|
+
Uses model for scaling
|
|
29
|
+
Returns non-zero if gradient udefined at current solution
|
|
30
|
+
*/
|
|
31
|
+
virtual int gradient(const ClpSimplex * model,
|
|
32
|
+
const double * solution,
|
|
33
|
+
double * gradient,
|
|
34
|
+
double & functionValue ,
|
|
35
|
+
double & offset,
|
|
36
|
+
bool useScaling = false,
|
|
37
|
+
bool refresh = true) const ;
|
|
38
|
+
/// Resize constraint
|
|
39
|
+
virtual void resize(int newNumberColumns) ;
|
|
40
|
+
/// Delete columns in constraint
|
|
41
|
+
virtual void deleteSome(int numberToDelete, const int * which) ;
|
|
42
|
+
/// Scale constraint
|
|
43
|
+
virtual void reallyScale(const double * columnScale) ;
|
|
44
|
+
/** Given a zeroed array sets nonquadratic columns to 1.
|
|
45
|
+
Returns number of nonquadratic columns
|
|
46
|
+
*/
|
|
47
|
+
virtual int markNonlinear(char * which) const ;
|
|
48
|
+
/** Given a zeroed array sets possible nonzero coefficients to 1.
|
|
49
|
+
Returns number of nonzeros
|
|
50
|
+
*/
|
|
51
|
+
virtual int markNonzero(char * which) const;
|
|
52
|
+
//@}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
///@name Constructors and destructors
|
|
56
|
+
//@{
|
|
57
|
+
/// Default Constructor
|
|
58
|
+
ClpConstraintQuadratic();
|
|
59
|
+
|
|
60
|
+
/// Constructor from quadratic
|
|
61
|
+
ClpConstraintQuadratic(int row, int numberQuadraticColumns, int numberColumns,
|
|
62
|
+
const CoinBigIndex * start,
|
|
63
|
+
const int * column, const double * element);
|
|
64
|
+
|
|
65
|
+
/** Copy constructor .
|
|
66
|
+
*/
|
|
67
|
+
ClpConstraintQuadratic(const ClpConstraintQuadratic & rhs);
|
|
68
|
+
|
|
69
|
+
/// Assignment operator
|
|
70
|
+
ClpConstraintQuadratic & operator=(const ClpConstraintQuadratic& rhs);
|
|
71
|
+
|
|
72
|
+
/// Destructor
|
|
73
|
+
virtual ~ClpConstraintQuadratic ();
|
|
74
|
+
|
|
75
|
+
/// Clone
|
|
76
|
+
virtual ClpConstraint * clone() const;
|
|
77
|
+
//@}
|
|
78
|
+
///@name Gets and sets
|
|
79
|
+
//@{
|
|
80
|
+
/// Number of coefficients
|
|
81
|
+
virtual int numberCoefficients() const;
|
|
82
|
+
/// Number of columns in constraint
|
|
83
|
+
inline int numberColumns() const {
|
|
84
|
+
return numberColumns_;
|
|
85
|
+
}
|
|
86
|
+
/// Column starts
|
|
87
|
+
inline CoinBigIndex * start() const {
|
|
88
|
+
return start_;
|
|
89
|
+
}
|
|
90
|
+
/// Columns
|
|
91
|
+
inline const int * column() const {
|
|
92
|
+
return column_;
|
|
93
|
+
}
|
|
94
|
+
/// Coefficients
|
|
95
|
+
inline const double * coefficient() const {
|
|
96
|
+
return coefficient_;
|
|
97
|
+
}
|
|
98
|
+
//@}
|
|
99
|
+
|
|
100
|
+
//---------------------------------------------------------------------------
|
|
101
|
+
|
|
102
|
+
private:
|
|
103
|
+
///@name Private member data
|
|
104
|
+
/// Column starts
|
|
105
|
+
CoinBigIndex * start_;
|
|
106
|
+
/// Column (if -1 then linear coefficient)
|
|
107
|
+
int * column_;
|
|
108
|
+
/// Coefficients
|
|
109
|
+
double * coefficient_;
|
|
110
|
+
/// Useful to have number of columns about
|
|
111
|
+
int numberColumns_;
|
|
112
|
+
/// Number of coefficients in gradient
|
|
113
|
+
int numberCoefficients_;
|
|
114
|
+
/// Number of quadratic columns
|
|
115
|
+
int numberQuadraticColumns_;
|
|
116
|
+
//@}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
#endif
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* $Id: ClpDualRowDantzig.hpp 1665 2011-01-04 17:55:54Z lou $ */
|
|
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 ClpDualRowDantzig_H
|
|
7
|
+
#define ClpDualRowDantzig_H
|
|
8
|
+
|
|
9
|
+
#include "ClpDualRowPivot.hpp"
|
|
10
|
+
|
|
11
|
+
//#############################################################################
|
|
12
|
+
|
|
13
|
+
/** Dual Row Pivot Dantzig Algorithm Class
|
|
14
|
+
|
|
15
|
+
This is simplest choice - choose largest infeasibility
|
|
16
|
+
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
class ClpDualRowDantzig : public ClpDualRowPivot {
|
|
20
|
+
|
|
21
|
+
public:
|
|
22
|
+
|
|
23
|
+
///@name Algorithmic methods
|
|
24
|
+
//@{
|
|
25
|
+
|
|
26
|
+
/// Returns pivot row, -1 if none
|
|
27
|
+
virtual int pivotRow();
|
|
28
|
+
|
|
29
|
+
/** Updates weights and returns pivot alpha.
|
|
30
|
+
Also does FT update */
|
|
31
|
+
virtual double updateWeights(CoinIndexedVector * input,
|
|
32
|
+
CoinIndexedVector * spare,
|
|
33
|
+
CoinIndexedVector * spare2,
|
|
34
|
+
CoinIndexedVector * updatedColumn);
|
|
35
|
+
/** Updates primal solution (and maybe list of candidates)
|
|
36
|
+
Uses input vector which it deletes
|
|
37
|
+
Computes change in objective function
|
|
38
|
+
*/
|
|
39
|
+
virtual void updatePrimalSolution(CoinIndexedVector * input,
|
|
40
|
+
double theta,
|
|
41
|
+
double & changeInObjective);
|
|
42
|
+
//@}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
///@name Constructors and destructors
|
|
46
|
+
//@{
|
|
47
|
+
/// Default Constructor
|
|
48
|
+
ClpDualRowDantzig();
|
|
49
|
+
|
|
50
|
+
/// Copy constructor
|
|
51
|
+
ClpDualRowDantzig(const ClpDualRowDantzig &);
|
|
52
|
+
|
|
53
|
+
/// Assignment operator
|
|
54
|
+
ClpDualRowDantzig & operator=(const ClpDualRowDantzig& rhs);
|
|
55
|
+
|
|
56
|
+
/// Destructor
|
|
57
|
+
virtual ~ClpDualRowDantzig ();
|
|
58
|
+
|
|
59
|
+
/// Clone
|
|
60
|
+
virtual ClpDualRowPivot * clone(bool copyData = true) const;
|
|
61
|
+
|
|
62
|
+
//@}
|
|
63
|
+
|
|
64
|
+
//---------------------------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
private:
|
|
67
|
+
///@name Private member data
|
|
68
|
+
//@}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
#endif
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/* $Id: ClpDualRowPivot.hpp 2070 2014-11-18 11:12:54Z 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 ClpDualRowPivot_H
|
|
7
|
+
#define ClpDualRowPivot_H
|
|
8
|
+
|
|
9
|
+
class ClpSimplex;
|
|
10
|
+
class CoinIndexedVector;
|
|
11
|
+
|
|
12
|
+
//#############################################################################
|
|
13
|
+
|
|
14
|
+
/** Dual Row Pivot Abstract Base Class
|
|
15
|
+
|
|
16
|
+
Abstract Base Class for describing an interface to an algorithm
|
|
17
|
+
to choose row pivot in dual simplex algorithm. For some algorithms
|
|
18
|
+
e.g. Dantzig choice then some functions may be null.
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
class ClpDualRowPivot {
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
|
|
26
|
+
///@name Algorithmic methods
|
|
27
|
+
//@{
|
|
28
|
+
|
|
29
|
+
/// Returns pivot row, -1 if none
|
|
30
|
+
virtual int pivotRow() = 0;
|
|
31
|
+
|
|
32
|
+
/** Updates weights and returns pivot alpha.
|
|
33
|
+
Also does FT update */
|
|
34
|
+
virtual double updateWeights(CoinIndexedVector * input,
|
|
35
|
+
CoinIndexedVector * spare,
|
|
36
|
+
CoinIndexedVector * spare2,
|
|
37
|
+
CoinIndexedVector * updatedColumn) = 0;
|
|
38
|
+
|
|
39
|
+
/** Updates primal solution (and maybe list of candidates)
|
|
40
|
+
Uses input vector which it deletes
|
|
41
|
+
Computes change in objective function
|
|
42
|
+
Would be faster if we kept basic regions, but on other hand it
|
|
43
|
+
means everything is always in sync
|
|
44
|
+
*/
|
|
45
|
+
/* FIXME: this was pure virtul (=0). Why? */
|
|
46
|
+
virtual void updatePrimalSolution(CoinIndexedVector * input,
|
|
47
|
+
double theta,
|
|
48
|
+
double & changeInObjective) = 0;
|
|
49
|
+
/** Saves any weights round factorization as pivot rows may change
|
|
50
|
+
Will be empty unless steepest edge (will save model)
|
|
51
|
+
May also recompute infeasibility stuff
|
|
52
|
+
1) before factorization
|
|
53
|
+
2) after good factorization (if weights empty may initialize)
|
|
54
|
+
3) after something happened but no factorization
|
|
55
|
+
(e.g. check for infeasible)
|
|
56
|
+
4) as 2 but restore weights from previous snapshot
|
|
57
|
+
5) for strong branching - initialize to 1 , infeasibilities
|
|
58
|
+
6) scale back
|
|
59
|
+
7) for strong branching - initialize full weights , infeasibilities
|
|
60
|
+
*/
|
|
61
|
+
virtual void saveWeights(ClpSimplex * model, int mode);
|
|
62
|
+
/// checks accuracy and may re-initialize (may be empty)
|
|
63
|
+
virtual void checkAccuracy();
|
|
64
|
+
/// Gets rid of last update (may be empty)
|
|
65
|
+
virtual void unrollWeights();
|
|
66
|
+
/// Gets rid of all arrays (may be empty)
|
|
67
|
+
virtual void clearArrays();
|
|
68
|
+
/// Returns true if would not find any row
|
|
69
|
+
virtual bool looksOptimal() const {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/// Called when maximum pivots changes
|
|
73
|
+
virtual void maximumPivotsChanged() {}
|
|
74
|
+
//@}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
///@name Constructors and destructors
|
|
78
|
+
//@{
|
|
79
|
+
/// Default Constructor
|
|
80
|
+
ClpDualRowPivot();
|
|
81
|
+
|
|
82
|
+
/// Copy constructor
|
|
83
|
+
ClpDualRowPivot(const ClpDualRowPivot &);
|
|
84
|
+
|
|
85
|
+
/// Assignment operator
|
|
86
|
+
ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs);
|
|
87
|
+
|
|
88
|
+
/// Destructor
|
|
89
|
+
virtual ~ClpDualRowPivot ();
|
|
90
|
+
|
|
91
|
+
/// Clone
|
|
92
|
+
virtual ClpDualRowPivot * clone(bool copyData = true) const = 0;
|
|
93
|
+
|
|
94
|
+
//@}
|
|
95
|
+
|
|
96
|
+
///@name Other
|
|
97
|
+
//@{
|
|
98
|
+
/// Returns model
|
|
99
|
+
inline ClpSimplex * model() {
|
|
100
|
+
return model_;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/// Sets model (normally to NULL)
|
|
104
|
+
inline void setModel(ClpSimplex * newmodel) {
|
|
105
|
+
model_ = newmodel;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/// Returns type (above 63 is extra information)
|
|
109
|
+
inline int type() {
|
|
110
|
+
return type_;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//@}
|
|
114
|
+
|
|
115
|
+
//---------------------------------------------------------------------------
|
|
116
|
+
|
|
117
|
+
protected:
|
|
118
|
+
///@name Protected member data
|
|
119
|
+
//@{
|
|
120
|
+
/// Pointer to model
|
|
121
|
+
ClpSimplex * model_;
|
|
122
|
+
/// Type of row pivot algorithm
|
|
123
|
+
int type_;
|
|
124
|
+
//@}
|
|
125
|
+
};
|
|
126
|
+
#ifndef CLP_DUAL_COLUMN_MULTIPLIER
|
|
127
|
+
//#define CLP_DUAL_COLUMN_MULTIPLIER 0.99999
|
|
128
|
+
#endif
|
|
129
|
+
#endif
|