diff options
Diffstat (limited to 'packages/glpk')
-rw-r--r-- | packages/glpk/hmatrix-glpk.cabal | 4 | ||||
-rw-r--r-- | packages/glpk/src/Numeric/LinearProgramming.hs | 21 | ||||
-rw-r--r-- | packages/glpk/src/Numeric/LinearProgramming/L1.hs | 2 |
3 files changed, 14 insertions, 13 deletions
diff --git a/packages/glpk/hmatrix-glpk.cabal b/packages/glpk/hmatrix-glpk.cabal index 5a1b59c..e64e3e8 100644 --- a/packages/glpk/hmatrix-glpk.cabal +++ b/packages/glpk/hmatrix-glpk.cabal | |||
@@ -1,5 +1,5 @@ | |||
1 | Name: hmatrix-glpk | 1 | Name: hmatrix-glpk |
2 | Version: 0.4.1.0 | 2 | Version: 0.5.0.0 |
3 | License: GPL | 3 | License: GPL |
4 | License-file: LICENSE | 4 | License-file: LICENSE |
5 | Author: Alberto Ruiz | 5 | Author: Alberto Ruiz |
@@ -23,7 +23,7 @@ extra-source-files: examples/simplex1.hs | |||
23 | examples/simplex5.hs | 23 | examples/simplex5.hs |
24 | 24 | ||
25 | library | 25 | library |
26 | Build-Depends: base <5, hmatrix >= 0.16, containers >= 0.5.4.0 | 26 | Build-Depends: base <5, hmatrix >= 0.17 |
27 | 27 | ||
28 | hs-source-dirs: src | 28 | hs-source-dirs: src |
29 | 29 | ||
diff --git a/packages/glpk/src/Numeric/LinearProgramming.hs b/packages/glpk/src/Numeric/LinearProgramming.hs index 6a0c47d..7bf4279 100644 --- a/packages/glpk/src/Numeric/LinearProgramming.hs +++ b/packages/glpk/src/Numeric/LinearProgramming.hs | |||
@@ -85,8 +85,8 @@ module Numeric.LinearProgramming( | |||
85 | Solution(..) | 85 | Solution(..) |
86 | ) where | 86 | ) where |
87 | 87 | ||
88 | import Data.Packed | 88 | import Numeric.LinearAlgebra.HMatrix |
89 | import Data.Packed.Development | 89 | import Numeric.LinearAlgebra.Devel hiding (Dense) |
90 | import Foreign(Ptr) | 90 | import Foreign(Ptr) |
91 | import System.IO.Unsafe(unsafePerformIO) | 91 | import System.IO.Unsafe(unsafePerformIO) |
92 | import Foreign.C.Types | 92 | import Foreign.C.Types |
@@ -180,16 +180,17 @@ exact opt constr@(General _) bnds = exact opt (sparseOfGeneral constr) bnds | |||
180 | 180 | ||
181 | adapt :: Optimization -> (Int, Double, [Double]) | 181 | adapt :: Optimization -> (Int, Double, [Double]) |
182 | adapt opt = case opt of | 182 | adapt opt = case opt of |
183 | Maximize x -> (size x, 1 ,x) | 183 | Maximize x -> (sz x, 1 ,x) |
184 | Minimize x -> (size x, -1, (map negate x)) | 184 | Minimize x -> (sz x, -1, (map negate x)) |
185 | where size x | null x = error "simplex: objective function with zero variables" | 185 | where |
186 | | otherwise = length x | 186 | sz x | null x = error "simplex: objective function with zero variables" |
187 | | otherwise = length x | ||
187 | 188 | ||
188 | extract :: Double -> Vector Double -> Solution | 189 | extract :: Double -> Vector Double -> Solution |
189 | extract sg sol = r where | 190 | extract sg sol = r where |
190 | z = sg * (sol@>1) | 191 | z = sg * (sol!1) |
191 | v = toList $ subVector 2 (dim sol -2) sol | 192 | v = toList $ subVector 2 (size sol -2) sol |
192 | r = case round(sol@>0)::Int of | 193 | r = case round(sol!0)::Int of |
193 | 1 -> Undefined | 194 | 1 -> Undefined |
194 | 2 -> Feasible (z,v) | 195 | 2 -> Feasible (z,v) |
195 | 3 -> Infeasible (z,v) | 196 | 3 -> Infeasible (z,v) |
@@ -261,7 +262,7 @@ mkConstrD n f b1 | ok = fromLists (ob ++ co) | |||
261 | ok = all (==n) ls | 262 | ok = all (==n) ls |
262 | den = fromLists cs | 263 | den = fromLists cs |
263 | ob = map (([0,0]++).return) f | 264 | ob = map (([0,0]++).return) f |
264 | co = [[fromIntegral i, fromIntegral j,den@@>(i-1,j-1)]| i<-[1 ..rows den], j<-[1 .. cols den]] | 265 | co = [[fromIntegral i, fromIntegral j,den `atIndex` (i-1,j-1)]| i<-[1 ..rows den], j<-[1 .. cols den]] |
265 | 266 | ||
266 | mkConstrS :: Int -> [Double] -> [Bound [(Double, Int)]] -> Matrix Double | 267 | mkConstrS :: Int -> [Double] -> [Bound [(Double, Int)]] -> Matrix Double |
267 | mkConstrS n objfun b1 = fromLists (ob ++ co) where | 268 | mkConstrS n objfun b1 = fromLists (ob ++ co) where |
diff --git a/packages/glpk/src/Numeric/LinearProgramming/L1.hs b/packages/glpk/src/Numeric/LinearProgramming/L1.hs index f55c721..d7f1258 100644 --- a/packages/glpk/src/Numeric/LinearProgramming/L1.hs +++ b/packages/glpk/src/Numeric/LinearProgramming/L1.hs | |||
@@ -14,7 +14,7 @@ module Numeric.LinearProgramming.L1 ( | |||
14 | l1SolveU, | 14 | l1SolveU, |
15 | ) where | 15 | ) where |
16 | 16 | ||
17 | import Numeric.LinearAlgebra | 17 | import Numeric.LinearAlgebra.HMatrix |
18 | import Numeric.LinearProgramming | 18 | import Numeric.LinearProgramming |
19 | 19 | ||
20 | -- | L_inf solution of overconstrained system Ax=b. | 20 | -- | L_inf solution of overconstrained system Ax=b. |