Skip to content

Commit 871d6ce

Browse files
committed
wip
1 parent b1ec5cc commit 871d6ce

File tree

32 files changed

+382
-166
lines changed

32 files changed

+382
-166
lines changed

simplex-method.cabal

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,32 @@ source-repository head
2727

2828
library
2929
exposed-modules:
30-
Linear.Simplex.Constraint.Generic.Types
31-
Linear.Simplex.Constraint.Simple.Types
32-
Linear.Simplex.Constraint.Simple.Util
33-
Linear.Simplex.Constraint.Types
34-
Linear.Simplex.Constraint.Util
35-
Linear.Simplex.Expr.Types
36-
Linear.Simplex.Expr.Util
30+
Linear.AugmentedForm.Types
31+
Linear.AugmentedForm.Util
32+
Linear.Constraint.Generic.Types
33+
Linear.Constraint.Linear.Types
34+
Linear.Constraint.Simple.Types
35+
Linear.Constraint.Simple.Util
36+
Linear.Constraint.Standard.Types
37+
Linear.Constraint.Types
38+
Linear.Constraint.Util
39+
Linear.Expr.Types
40+
Linear.Expr.Util
3741
Linear.Simplex.Prettify
3842
Linear.Simplex.Solver.TwoPhase
39-
Linear.Simplex.StandardForm
43+
Linear.Simplex.Solver.Types
4044
Linear.Simplex.Standardize
41-
Linear.Simplex.System.Simple.Types
42-
Linear.Simplex.System.Simple.Util
43-
Linear.Simplex.Term.Types
44-
Linear.Simplex.Term.Util
4545
Linear.Simplex.Types
4646
Linear.Simplex.Util
47-
Linear.Simplex.Var.Types
48-
Linear.Simplex.Var.Util
47+
Linear.System.Linear.Types
48+
Linear.System.Simple.Types
49+
Linear.System.Simple.Util
50+
Linear.System.Standard.Types
51+
Linear.System.Types
52+
Linear.Term.Types
53+
Linear.Term.Util
54+
Linear.Var.Types
55+
Linear.Var.Util
4956
other-modules:
5057
Paths_simplex_method
5158
hs-source-dirs:
@@ -68,11 +75,12 @@ test-suite simplex-method-test
6875
type: exitcode-stdio-1.0
6976
main-is: Spec.hs
7077
other-modules:
71-
Linear.Simplex.Constraint.Simple.TypesSpec
72-
Linear.Simplex.Expr.TypesSpec
73-
Linear.Simplex.StandardFormSpec
74-
Linear.Simplex.System.Simple.TypesSpec
75-
Linear.Simplex.Term.TypesSpec
78+
Linear.AugmentedForm.UtilSpec
79+
Linear.Constraint.Simple.TypesSpec
80+
Linear.Expr.TypesSpec
81+
Linear.System.Simple.TypesSpec
82+
Linear.Term.TypesSpec
83+
Linear.Var.UtilSpec
7684
TestUtil
7785
Paths_simplex_method
7886
hs-source-dirs:

src/Linear/AugmentedForm/Types.hs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-- |
2+
-- Module: Linear.Simplex.AugmentedForm.Types
3+
-- Description: Types for augmented (slack) form of linear programming problems
4+
-- Copyright: (c) Junaid Rasheed, 2024
5+
-- License: BSD-3
6+
-- Maintainer: Junaid Rasheed <jrasheed178@gmail.com>
7+
-- Stability: experimental
8+
module Linear.AugmentedForm.Types where
9+
10+
import GHC.Generics (Generic)
11+
import Linear.Expr.Types (Expr)
12+
import Linear.System.Linear.Types (LinearSystem)
13+
import Linear.Var.Types (SimplexNum, Var)
14+
15+
-- Expr == SimplexNum
16+
data AugmentedForm = AugmentedForm
17+
{ maxObjective :: Expr -- TODO: should be no consts
18+
, constraints :: LinearSystem
19+
, vars :: [Var] -- all vars are non-negative
20+
}
21+
deriving (Show, Eq, Read, Generic)
22+
23+
class CanBeAugmentedForm a where
24+
toAugmentedForm :: a -> AugmentedForm

src/Linear/Simplex/StandardForm.hs renamed to src/Linear/AugmentedForm/Util.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,25 @@
55
-- License: BSD-3
66
-- Maintainer: Junaid Rasheed <jrasheed178@gmail.com>
77
-- Stability: experimental
8-
module Linear.Simplex.StandardForm where
8+
module Linear.AugmentedForm.Util where
99

1010
import qualified Data.Map as Map
11-
import Linear.Simplex.Constraint.Generic.Types
11+
import Linear.Constraint.Generic.Types
1212
( GenericConstraint ((:<=), (:==), (:>=))
1313
)
14-
import Linear.Simplex.Constraint.Simple.Util
14+
import Linear.Constraint.Simple.Util
1515
( substVarSimpleConstraint
1616
)
17-
import Linear.Simplex.Expr.Types (Expr (..))
18-
import Linear.Simplex.System.Simple.Types
17+
import Linear.Expr.Types (Expr (..))
18+
import Linear.System.Simple.Types
1919
( SimpleSystem
2020
, findHighestVar
2121
, simplifySimpleSystem
2222
)
23-
import Linear.Simplex.Term.Types
23+
import Linear.Term.Types
2424
( Term (CoeffTerm, ConstTerm, VarTerm)
2525
)
26-
import Linear.Simplex.Var.Types (Bounds (Bounds), Var, VarBounds)
26+
import Linear.Var.Types (Bounds (Bounds), Var, VarBounds)
2727

2828
-- | Eliminate non-zero lower bounds via substitution
2929
-- Return the system with the eliminated variables and a map of the eliminated variables to their equivalent expressions

src/Linear/Simplex/Constraint/Generic/Types.hs renamed to src/Linear/Constraint/Generic/Types.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
-- |
2-
-- Module : Linear.Simplex.Constraint.Generic.Types
2+
-- Module : Linear.Constraint.Generic.Types
33
-- Description : Types for constraints in linear programming problems
44
-- Copyright : (c) Junaid Rasheed, 2020-2024
55
-- License : BSD-3
66
-- Maintainer : jrasheed178@gmail.com
77
-- Stability : experimental
8-
module Linear.Simplex.Constraint.Generic.Types where
8+
module Linear.Constraint.Generic.Types where
99

1010
import Control.Applicative (liftA2)
1111
import GHC.Generics (Generic)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-- |
2+
-- Description: Types for linear constraints.
3+
-- Copyright: (c) Junaid Rasheed, 2024
4+
-- License: BSD-3
5+
-- Maintainer: Junaid Rasheed <jrasheed178@gmail.com>
6+
-- Stability: experimental
7+
module Linear.Constraint.Linear.Types where
8+
9+
import GHC.Generics (Generic)
10+
import Linear.Expr.Types
11+
import Linear.Var.Types
12+
13+
data LinearEquation = LinearEquation
14+
{ lhs :: Expr
15+
, rhs :: SimplexNum
16+
}
17+
deriving (Show, Eq, Read, Generic)
18+
19+
-- class CanBeLinearEquation a where
20+
-- toLinearEquation :: a -> LinearEquation
21+
-- fromLinearEquation :: LinearEquation -> a
22+
23+
-- instance CanBeLinearEquation LinearEquation where
24+
-- toLinearEquation = id
25+
-- fromLinearEquation = id

src/Linear/Simplex/Constraint/Simple/Types.hs renamed to src/Linear/Constraint/Simple/Types.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
-- |
2-
-- Module: Linear.Simplex.Constraint.Simple.Types
2+
-- Module: Linear.Constraint.Simple.Types
33
-- Description: Types for simple linear constraints
44
-- Copyright: (c) Junaid Rasheed, 2020-2024
55
-- License: BSD-3
66
-- Maintainer: jrasheed178@gmail.com
77
-- Stability: experimental
8-
module Linear.Simplex.Constraint.Simple.Types where
8+
module Linear.Constraint.Simple.Types where
99

10-
import Linear.Simplex.Constraint.Generic.Types
11-
import Linear.Simplex.Expr.Types
12-
import Linear.Simplex.Var.Types
10+
import Linear.Constraint.Generic.Types
11+
import Linear.Expr.Types
12+
import Linear.Var.Types
1313

1414
-- data TermsOnlyVars = VarTerm' Var | CoeffTerm' SimplexNum Var
1515
-- deriving (Show, Read, Eq, Generic)

src/Linear/Simplex/Constraint/Simple/Util.hs renamed to src/Linear/Constraint/Simple/Util.hs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
-- |
2-
-- Module: Linear.Simplex.Constraint.Simple.Util
2+
-- Module: Linear.Constraint.Simple.Util
33
-- Description: Utility functions for simple constraints
44
-- Copyright: (c) Junaid Rasheed, 2020-2024
55
-- License: BSD-3
66
-- Maintainer: jrasheed178@gmail.com
77
-- Stability: experimental
8-
module Linear.Simplex.Constraint.Simple.Util where
8+
module Linear.Constraint.Simple.Util where
99

1010
import qualified Data.List as L
1111
import qualified Data.Set as Set
12-
import Linear.Simplex.Constraint.Generic.Types
13-
import Linear.Simplex.Constraint.Simple.Types
14-
import Linear.Simplex.Constraint.Types
15-
import Linear.Simplex.Expr.Types
16-
import Linear.Simplex.Expr.Util
17-
import Linear.Simplex.Term.Types
18-
import Linear.Simplex.Var.Types
12+
import Linear.Constraint.Generic.Types
13+
import Linear.Constraint.Simple.Types
14+
import Linear.Constraint.Types
15+
import Linear.Expr.Types
16+
import Linear.Expr.Util
17+
import Linear.Var.Types
18+
import Linear.Term.Types
1919

2020
substVarSimpleConstraint :: Var -> Expr -> SimpleConstraint -> SimpleConstraint
2121
substVarSimpleConstraint var varReplacement (a :<= b) = substVarExpr var varReplacement a :<= b
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- |
2+
-- Module: Linear.Constraint.Standard.Types
3+
-- Description: Types for linear constraints in standard form
4+
-- Copyright: (c) Junaid Rasheed, 2024
5+
-- License: BSD-3
6+
-- Maintainer: Junaid Rasheed <jrasheed178@gmail.com>
7+
-- Stability: experimental
8+
module Linear.Constraint.Standard.Types where
9+
10+
import GHC.Generics (Generic)
11+
12+
-- lhs <= rhs
13+
data StandardConstraint = StandardConstraint
14+
{ lhs :: Expr
15+
, rhs :: SimplexNum
16+
}
17+
deriving (Show, Eq, Read, Generic)
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
-- |
2-
-- Module: Linear.Simplex.Constraint.Types
2+
-- Module: Linear.Constraint.Types
33
-- Description: Types for linear constraints
44
-- Copyright: (c) Junaid Rasheed, 2020-2024
55
-- License: BSD-3
66
-- Maintainer: jrasheed178@gmail.com
77
-- Stability: experimental
8-
module Linear.Simplex.Constraint.Types where
8+
module Linear.Constraint.Types where
99

1010
import qualified Data.Set as Set
1111
import GHC.Generics (Generic)
12-
import Linear.Simplex.Constraint.Generic.Types
13-
import Linear.Simplex.Expr.Types
14-
import Linear.Simplex.Var.Types
12+
import Linear.Constraint.Generic.Types
13+
import Linear.Expr.Types
14+
import Linear.Var.Types
1515

1616
-- Input
1717
type Constraint = GenericConstraint Expr Expr

src/Linear/Simplex/Constraint/Util.hs renamed to src/Linear/Constraint/Util.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
-- |
2-
-- Module: Linear.Simplex.Constraint.Util
2+
-- Module: Linear.Constraint.Util
33
-- Description: Utility functions for constraints
44
-- Copyright: (c) Junaid Rasheed, 2020-2024
55
-- License: BSD-3
66
-- Maintainer: jrasheed178@gmail.com
77
-- Stability: experimental
8-
module Linear.Simplex.Constraint.Util where
8+
module Linear.Constraint.Util where
99

1010
import qualified Data.Set as Set
11-
import Linear.Simplex.Constraint.Generic.Types
12-
import Linear.Simplex.Constraint.Types
13-
import Linear.Simplex.Expr.Types
14-
import Linear.Simplex.Expr.Util
15-
import Linear.Simplex.Var.Types
11+
import Linear.Constraint.Generic.Types
12+
import Linear.Constraint.Types
13+
import Linear.Expr.Types
14+
import Linear.Expr.Util
15+
import Linear.Var.Types
1616

1717
constraintVars :: Constraint -> Set.Set Var
1818
constraintVars (lhs :<= rhs) = exprVars lhs <> exprVars rhs

0 commit comments

Comments
 (0)