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,35 @@
|
|
|
1
|
+
# libClpSolver.la - a libtool library file
|
|
2
|
+
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
|
|
3
|
+
#
|
|
4
|
+
# Please DO NOT delete this file!
|
|
5
|
+
# It is necessary for linking the library.
|
|
6
|
+
|
|
7
|
+
# The name that we can dlopen(3).
|
|
8
|
+
dlname='libClpSolver.so.1'
|
|
9
|
+
|
|
10
|
+
# Names of this library.
|
|
11
|
+
library_names='libClpSolver.so.1.13.9 libClpSolver.so.1 libClpSolver.so'
|
|
12
|
+
|
|
13
|
+
# The name of the static archive.
|
|
14
|
+
old_library=''
|
|
15
|
+
|
|
16
|
+
# Libraries that this one depends upon.
|
|
17
|
+
dependency_libs=' /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libClp.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCoinUtils.la -lz'
|
|
18
|
+
|
|
19
|
+
# Version information for libClpSolver.
|
|
20
|
+
current=14
|
|
21
|
+
age=13
|
|
22
|
+
revision=9
|
|
23
|
+
|
|
24
|
+
# Is this an already installed library?
|
|
25
|
+
installed=yes
|
|
26
|
+
|
|
27
|
+
# Should we warn about portability when linking against -modules?
|
|
28
|
+
shouldnotlink=no
|
|
29
|
+
|
|
30
|
+
# Files to dlopen/dlpreopen
|
|
31
|
+
dlopen=''
|
|
32
|
+
dlpreopen=''
|
|
33
|
+
|
|
34
|
+
# Directory that this library needs to be installed in:
|
|
35
|
+
libdir='/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# libCoinUtils.la - a libtool library file
|
|
2
|
+
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
|
|
3
|
+
#
|
|
4
|
+
# Please DO NOT delete this file!
|
|
5
|
+
# It is necessary for linking the library.
|
|
6
|
+
|
|
7
|
+
# The name that we can dlopen(3).
|
|
8
|
+
dlname='libCoinUtils.so.3'
|
|
9
|
+
|
|
10
|
+
# Names of this library.
|
|
11
|
+
library_names='libCoinUtils.so.3.10.11 libCoinUtils.so.3 libCoinUtils.so'
|
|
12
|
+
|
|
13
|
+
# The name of the static archive.
|
|
14
|
+
old_library=''
|
|
15
|
+
|
|
16
|
+
# Libraries that this one depends upon.
|
|
17
|
+
dependency_libs=' -lz'
|
|
18
|
+
|
|
19
|
+
# Version information for libCoinUtils.
|
|
20
|
+
current=13
|
|
21
|
+
age=10
|
|
22
|
+
revision=11
|
|
23
|
+
|
|
24
|
+
# Is this an already installed library?
|
|
25
|
+
installed=yes
|
|
26
|
+
|
|
27
|
+
# Should we warn about portability when linking against -modules?
|
|
28
|
+
shouldnotlink=no
|
|
29
|
+
|
|
30
|
+
# Files to dlopen/dlpreopen
|
|
31
|
+
dlopen=''
|
|
32
|
+
dlpreopen=''
|
|
33
|
+
|
|
34
|
+
# Directory that this library needs to be installed in:
|
|
35
|
+
libdir='/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# libOsi.la - a libtool library file
|
|
2
|
+
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
|
|
3
|
+
#
|
|
4
|
+
# Please DO NOT delete this file!
|
|
5
|
+
# It is necessary for linking the library.
|
|
6
|
+
|
|
7
|
+
# The name that we can dlopen(3).
|
|
8
|
+
dlname='libOsi.so.1'
|
|
9
|
+
|
|
10
|
+
# Names of this library.
|
|
11
|
+
library_names='libOsi.so.1.12.6 libOsi.so.1 libOsi.so'
|
|
12
|
+
|
|
13
|
+
# The name of the static archive.
|
|
14
|
+
old_library=''
|
|
15
|
+
|
|
16
|
+
# Libraries that this one depends upon.
|
|
17
|
+
dependency_libs=' /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCoinUtils.la -lz'
|
|
18
|
+
|
|
19
|
+
# Version information for libOsi.
|
|
20
|
+
current=13
|
|
21
|
+
age=12
|
|
22
|
+
revision=6
|
|
23
|
+
|
|
24
|
+
# Is this an already installed library?
|
|
25
|
+
installed=yes
|
|
26
|
+
|
|
27
|
+
# Should we warn about portability when linking against -modules?
|
|
28
|
+
shouldnotlink=no
|
|
29
|
+
|
|
30
|
+
# Files to dlopen/dlpreopen
|
|
31
|
+
dlopen=''
|
|
32
|
+
dlpreopen=''
|
|
33
|
+
|
|
34
|
+
# Directory that this library needs to be installed in:
|
|
35
|
+
libdir='/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# libOsiCbc.la - a libtool library file
|
|
2
|
+
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
|
|
3
|
+
#
|
|
4
|
+
# Please DO NOT delete this file!
|
|
5
|
+
# It is necessary for linking the library.
|
|
6
|
+
|
|
7
|
+
# The name that we can dlopen(3).
|
|
8
|
+
dlname='libOsiCbc.so.3'
|
|
9
|
+
|
|
10
|
+
# Names of this library.
|
|
11
|
+
library_names='libOsiCbc.so.3.9.7 libOsiCbc.so.3 libOsiCbc.so'
|
|
12
|
+
|
|
13
|
+
# The name of the static archive.
|
|
14
|
+
old_library=''
|
|
15
|
+
|
|
16
|
+
# Libraries that this one depends upon.
|
|
17
|
+
dependency_libs=' /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCbc.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCgl.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libOsiClp.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libClpSolver.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libClp.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libOsi.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCoinUtils.la -lz'
|
|
18
|
+
|
|
19
|
+
# Version information for libOsiCbc.
|
|
20
|
+
current=12
|
|
21
|
+
age=9
|
|
22
|
+
revision=7
|
|
23
|
+
|
|
24
|
+
# Is this an already installed library?
|
|
25
|
+
installed=yes
|
|
26
|
+
|
|
27
|
+
# Should we warn about portability when linking against -modules?
|
|
28
|
+
shouldnotlink=no
|
|
29
|
+
|
|
30
|
+
# Files to dlopen/dlpreopen
|
|
31
|
+
dlopen=''
|
|
32
|
+
dlpreopen=''
|
|
33
|
+
|
|
34
|
+
# Directory that this library needs to be installed in:
|
|
35
|
+
libdir='/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# libOsiClp.la - a libtool library file
|
|
2
|
+
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
|
|
3
|
+
#
|
|
4
|
+
# Please DO NOT delete this file!
|
|
5
|
+
# It is necessary for linking the library.
|
|
6
|
+
|
|
7
|
+
# The name that we can dlopen(3).
|
|
8
|
+
dlname='libOsiClp.so.1'
|
|
9
|
+
|
|
10
|
+
# Names of this library.
|
|
11
|
+
library_names='libOsiClp.so.1.13.9 libOsiClp.so.1 libOsiClp.so'
|
|
12
|
+
|
|
13
|
+
# The name of the static archive.
|
|
14
|
+
old_library=''
|
|
15
|
+
|
|
16
|
+
# Libraries that this one depends upon.
|
|
17
|
+
dependency_libs=' /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libOsi.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libClp.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCoinUtils.la -lz'
|
|
18
|
+
|
|
19
|
+
# Version information for libOsiClp.
|
|
20
|
+
current=14
|
|
21
|
+
age=13
|
|
22
|
+
revision=9
|
|
23
|
+
|
|
24
|
+
# Is this an already installed library?
|
|
25
|
+
installed=yes
|
|
26
|
+
|
|
27
|
+
# Should we warn about portability when linking against -modules?
|
|
28
|
+
shouldnotlink=no
|
|
29
|
+
|
|
30
|
+
# Files to dlopen/dlpreopen
|
|
31
|
+
dlopen=''
|
|
32
|
+
dlpreopen=''
|
|
33
|
+
|
|
34
|
+
# Directory that this library needs to be installed in:
|
|
35
|
+
libdir='/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# libOsiCommonTests.la - a libtool library file
|
|
2
|
+
# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)
|
|
3
|
+
#
|
|
4
|
+
# Please DO NOT delete this file!
|
|
5
|
+
# It is necessary for linking the library.
|
|
6
|
+
|
|
7
|
+
# The name that we can dlopen(3).
|
|
8
|
+
dlname='libOsiCommonTests.so.1'
|
|
9
|
+
|
|
10
|
+
# Names of this library.
|
|
11
|
+
library_names='libOsiCommonTests.so.1.12.6 libOsiCommonTests.so.1 libOsiCommonTests.so'
|
|
12
|
+
|
|
13
|
+
# The name of the static archive.
|
|
14
|
+
old_library=''
|
|
15
|
+
|
|
16
|
+
# Libraries that this one depends upon.
|
|
17
|
+
dependency_libs=' /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libOsi.la /home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib/libCoinUtils.la -lz'
|
|
18
|
+
|
|
19
|
+
# Version information for libOsiCommonTests.
|
|
20
|
+
current=13
|
|
21
|
+
age=12
|
|
22
|
+
revision=6
|
|
23
|
+
|
|
24
|
+
# Is this an already installed library?
|
|
25
|
+
installed=yes
|
|
26
|
+
|
|
27
|
+
# Should we warn about portability when linking against -modules?
|
|
28
|
+
shouldnotlink=no
|
|
29
|
+
|
|
30
|
+
# Files to dlopen/dlpreopen
|
|
31
|
+
dlopen=''
|
|
32
|
+
dlpreopen=''
|
|
33
|
+
|
|
34
|
+
# Directory that this library needs to be installed in:
|
|
35
|
+
libdir='/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install/lib'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: CBC
|
|
7
|
+
Description: COIN-OR Branch and Cut
|
|
8
|
+
URL: https://projects.coin-or.org/Cbc
|
|
9
|
+
Version: 2.9.7
|
|
10
|
+
Libs: -L${libdir} -lCbcSolver -lCbc
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: osi-clp cgl osi coinutils
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: CGL
|
|
7
|
+
Description: COIN-OR Cut Generation Library
|
|
8
|
+
URL: https://projects.coin-or.org/Cgl
|
|
9
|
+
Version: 0.59.7
|
|
10
|
+
Libs: -L${libdir} -lCgl
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: osi-clp osi coinutils
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: CLP
|
|
7
|
+
Description: COIN-OR Linear Programming Solver
|
|
8
|
+
URL: https://projects.coin-or.org/Clp
|
|
9
|
+
Version: 1.16.9
|
|
10
|
+
Libs: -L${libdir} -lClpSolver -lClp
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: coinutils
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: CoinUtils
|
|
7
|
+
Description: COIN-OR Utilities
|
|
8
|
+
URL: https://projects.coin-or.org/CoinUtils
|
|
9
|
+
Version: 2.10.11
|
|
10
|
+
Libs: -L${libdir} -lCoinUtils -lz -lm
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: OsiCbc
|
|
7
|
+
Description: COIN-OR Open Solver Interface for CBC
|
|
8
|
+
URL: https://projects.coin-or.org/Osi
|
|
9
|
+
Version: 2.9.7
|
|
10
|
+
Libs: -L${libdir} -lOsiCbc
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: cbc
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: OsiClp
|
|
7
|
+
Description: COIN-OR Open Solver Interface for CLP
|
|
8
|
+
URL: https://projects.coin-or.org/Osi
|
|
9
|
+
Version: 1.16.9
|
|
10
|
+
Libs: -L${libdir} -lOsiClp
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: clp osi
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: OsiUnitTests
|
|
7
|
+
Description: COIN-OR Open Solver Interface Common Unit Tests
|
|
8
|
+
URL: https://projects.coin-or.org/Osi
|
|
9
|
+
Version: 0.107.6
|
|
10
|
+
Libs: -L${libdir} -lOsiCommonTests
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: osi
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
prefix=/home/guillaume/git/swig-cbc/src/cbc/ext/ruby-cbc/install
|
|
2
|
+
exec_prefix=${prefix}
|
|
3
|
+
libdir=${exec_prefix}/lib
|
|
4
|
+
includedir=${prefix}/include/coin
|
|
5
|
+
|
|
6
|
+
Name: Osi
|
|
7
|
+
Description: COIN-OR Open Solver Interface
|
|
8
|
+
URL: https://projects.coin-or.org/Osi
|
|
9
|
+
Version: 0.107.6
|
|
10
|
+
Libs: -L${libdir} -lOsi
|
|
11
|
+
Cflags: -I${includedir}
|
|
12
|
+
Requires: coinutils
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Ilp
|
|
2
|
+
class Constant
|
|
3
|
+
attr_accessor :value
|
|
4
|
+
def initialize(value)
|
|
5
|
+
raise ArgumentError, 'Argument is not numeric' unless value.is_a? Numeric
|
|
6
|
+
@value = value
|
|
7
|
+
end
|
|
8
|
+
def <= (term)
|
|
9
|
+
term >= value
|
|
10
|
+
end
|
|
11
|
+
def <(term)
|
|
12
|
+
term > value
|
|
13
|
+
end
|
|
14
|
+
def >=(term)
|
|
15
|
+
term <= value
|
|
16
|
+
end
|
|
17
|
+
def > (term)
|
|
18
|
+
term < value
|
|
19
|
+
end
|
|
20
|
+
def ==(term)
|
|
21
|
+
term == value
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def *(term)
|
|
25
|
+
term * value
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def +(term)
|
|
29
|
+
term + value
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def -(term)
|
|
33
|
+
-1 * term + value
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def to_s
|
|
37
|
+
value.to_s
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def pretty_print
|
|
41
|
+
value.to_s
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Ilp
|
|
2
|
+
class Constraint
|
|
3
|
+
|
|
4
|
+
LESS_OR_EQ = :less_or_eq
|
|
5
|
+
GREATER_OR_EQ = :greater_or_eq
|
|
6
|
+
EQUALS = :equals
|
|
7
|
+
|
|
8
|
+
attr_accessor :terms, :type, :bound
|
|
9
|
+
|
|
10
|
+
def initialize(terms, type, bound)
|
|
11
|
+
@terms = terms - bound
|
|
12
|
+
@terms.normalize!
|
|
13
|
+
@bound = -1 * @terms.send(:pop_constant)
|
|
14
|
+
@type = type
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
case @type
|
|
19
|
+
when LESS_OR_EQ
|
|
20
|
+
sign = '<='
|
|
21
|
+
when GREATER_OR_EQ
|
|
22
|
+
sign = '>='
|
|
23
|
+
when EQUALS
|
|
24
|
+
sign = '='
|
|
25
|
+
else
|
|
26
|
+
sign = '??'
|
|
27
|
+
end
|
|
28
|
+
"#{@terms.to_s} #{sign} #{@bound}"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Ilp
|
|
2
|
+
class Objective
|
|
3
|
+
|
|
4
|
+
MINIMIZE = :min
|
|
5
|
+
MAXIMIZE = :max
|
|
6
|
+
|
|
7
|
+
attr_accessor :terms, :objective_function
|
|
8
|
+
def initialize(terms, objective_function = MAXIMIZE)
|
|
9
|
+
@terms = terms
|
|
10
|
+
@terms = Ilp::Term.new(@terms) if @terms.is_a? Ilp::Var
|
|
11
|
+
@terms = Ilp::TermArray.new(@terms) if @terms.is_a? Ilp::Term
|
|
12
|
+
@terms.normalize!
|
|
13
|
+
cste = @terms.send(:pop_constant)
|
|
14
|
+
puts "Removing constant [#{cste}] in objective" if cste != 0
|
|
15
|
+
@objective_function = objective_function
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to_s
|
|
19
|
+
str = ""
|
|
20
|
+
str << (@objective_function == :max ? "Maximize" : "Minimize")
|
|
21
|
+
str << "\n "
|
|
22
|
+
str << terms.to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Ilp
|
|
2
|
+
class Term
|
|
3
|
+
|
|
4
|
+
attr_accessor :mult, :var
|
|
5
|
+
|
|
6
|
+
def initialize(var, mult = 1)
|
|
7
|
+
@mult = mult
|
|
8
|
+
@var = var
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def +(vars)
|
|
12
|
+
Ilp::TermArray.new(self) + vars
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def -(vars)
|
|
16
|
+
Ilp::TermArray.new(self) - vars
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def ==(vars)
|
|
20
|
+
Ilp::TermArray.new(self) == vars
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def <=(vars)
|
|
24
|
+
Ilp::TermArray.new(self) <= vars
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def >=(vars)
|
|
28
|
+
Ilp::TermArray.new(self) >= vars
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def *(mult)
|
|
33
|
+
raise ArgumentError, 'Argument is not numeric' unless mult.is_a? Numeric
|
|
34
|
+
Ilp::Term.new(@var, @mult * mult)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def coerce(num)
|
|
38
|
+
[Ilp::TermArray.new(self), num]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def to_s
|
|
42
|
+
str = "++-"[mult <=> 0] << " "
|
|
43
|
+
str << mult.abs.to_s << " " if mult != 1
|
|
44
|
+
str << var.to_s
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
module Ilp
|
|
2
|
+
class TermArray
|
|
3
|
+
include Enumerable
|
|
4
|
+
|
|
5
|
+
attr_accessor :terms
|
|
6
|
+
|
|
7
|
+
def initialize(*terms)
|
|
8
|
+
@terms = terms
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def +(vars)
|
|
12
|
+
if vars.is_a? Numeric
|
|
13
|
+
@terms << vars
|
|
14
|
+
elsif vars.is_a? Ilp::Var
|
|
15
|
+
@terms << Ilp::Term.new(vars)
|
|
16
|
+
elsif vars.is_a? Ilp::Term
|
|
17
|
+
@terms << vars
|
|
18
|
+
elsif vars.is_a? Ilp::TermArray
|
|
19
|
+
@terms += vars.terms
|
|
20
|
+
else
|
|
21
|
+
raise ArgumentError, "Argument is not allowed: #{vars} of type #{vars.class}"
|
|
22
|
+
end
|
|
23
|
+
self
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def -(vars)
|
|
27
|
+
self + -1 * vars
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def *(mult)
|
|
31
|
+
raise ArgumentError, 'Argument is not numeric' unless mult.is_a? Numeric
|
|
32
|
+
@terms.map! { |term| term * mult }
|
|
33
|
+
self
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# cste + nb * var + nb * var...
|
|
37
|
+
def normalize!
|
|
38
|
+
constant = @terms.select{ |t| t.is_a? Numeric }.inject(:+)
|
|
39
|
+
hterms = @terms.select{ |t| t.is_a? Ilp::Term }.group_by(&:var)
|
|
40
|
+
@terms = []
|
|
41
|
+
constant ||= 0
|
|
42
|
+
@terms << constant
|
|
43
|
+
hterms.each do |v, ts|
|
|
44
|
+
t = ts.inject(Ilp::Term.new(v, 0)) { |v1, v2| v1.mult += v2.mult; v1 }
|
|
45
|
+
terms << t if t.mult != 0
|
|
46
|
+
end
|
|
47
|
+
self
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def <=(value)
|
|
51
|
+
Ilp::Constraint.new(self, Ilp::Constraint::LESS_OR_EQ, value)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def >=(value)
|
|
55
|
+
Ilp::Constraint.new(self, Ilp::Constraint::GREATER_OR_EQ, value)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def ==(value)
|
|
59
|
+
Ilp::Constraint.new(self, Ilp::Constraint::EQUALS, value)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def coerce(value)
|
|
63
|
+
[Ilp::Constant.new(value), self]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def each(&block)
|
|
67
|
+
@terms.each(&block)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def to_s
|
|
71
|
+
@terms.map(&:to_s).join(' ')
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
# Must be normalized!
|
|
76
|
+
def pop_constant
|
|
77
|
+
terms.slice!(0)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|