-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Library for using Mixed Integer Programming (MIP) -- -- Please see the README on GitHub at -- https://github.com/msakai/haskell-MIP/tree/master/MIP#readme @package MIP @version 0.1.2.0 -- | Mixed-Integer Programming Problems with some commmonly used extensions module Numeric.Optimization.MIP.Base -- | Problem data Problem c Problem :: Maybe Text -> ObjectiveFunction c -> [Constraint c] -> [SOSConstraint c] -> [Constraint c] -> Map Var VarType -> Map Var (Bounds c) -> Problem c [name] :: Problem c -> Maybe Text [objectiveFunction] :: Problem c -> ObjectiveFunction c [constraints] :: Problem c -> [Constraint c] [sosConstraints] :: Problem c -> [SOSConstraint c] [userCuts] :: Problem c -> [Constraint c] [varType] :: Problem c -> Map Var VarType [varBounds] :: Problem c -> Map Var (Bounds c) -- | label type Label = Text -- | variable type Var = InternedText -- | convert a string into a variable toVar :: String -> Var -- | convert a variable into a string fromVar :: Var -> String data VarType ContinuousVariable :: VarType IntegerVariable :: VarType SemiContinuousVariable :: VarType SemiIntegerVariable :: VarType -- | looking up bounds for a variable getVarType :: Problem c -> Var -> VarType -- | type for representing lower/upper bound of variables type BoundExpr c = Extended c -- | Extended r is an extension of r with positive/negative -- infinity (±∞). data () => Extended r -- | negative infinity (-∞) NegInf :: Extended r -- | finite value Finite :: !r -> Extended r -- | positive infinity (+∞) PosInf :: Extended r -- | type for representing lower/upper bound of variables type Bounds c = (BoundExpr c, BoundExpr c) -- | default bounds defaultBounds :: Num c => Bounds c -- | default lower bound (0) defaultLB :: Num c => BoundExpr c -- | default upper bound (+∞) defaultUB :: BoundExpr c -- | looking up bounds for a variable getBounds :: Num c => Problem c -> Var -> Bounds c variables :: Problem c -> Set Var integerVariables :: Problem c -> Set Var semiContinuousVariables :: Problem c -> Set Var semiIntegerVariables :: Problem c -> Set Var -- | expressions newtype Expr c Expr :: [Term c] -> Expr c varExpr :: Num c => Var -> Expr c constExpr :: (Eq c, Num c) => c -> Expr c terms :: Expr c -> [Term c] -- | terms data Term c Term :: c -> [Var] -> Term c -- | The OptDir type represents optimization directions. data () => OptDir -- | minimization OptMin :: OptDir -- | maximization OptMax :: OptDir -- | objective function data ObjectiveFunction c ObjectiveFunction :: Maybe Label -> OptDir -> Expr c -> ObjectiveFunction c [objLabel] :: ObjectiveFunction c -> Maybe Label [objDir] :: ObjectiveFunction c -> OptDir [objExpr] :: ObjectiveFunction c -> Expr c -- | constraint data Constraint c Constraint :: Maybe Label -> Maybe (Var, c) -> Expr c -> BoundExpr c -> BoundExpr c -> Bool -> Constraint c [constrLabel] :: Constraint c -> Maybe Label [constrIndicator] :: Constraint c -> Maybe (Var, c) [constrExpr] :: Constraint c -> Expr c [constrLB] :: Constraint c -> BoundExpr c [constrUB] :: Constraint c -> BoundExpr c [constrIsLazy] :: Constraint c -> Bool -- | Equality constraint. (.==.) :: Num c => Expr c -> Expr c -> Constraint c infix 4 .==. -- | Inequality constraint (≤). (.<=.) :: Num c => Expr c -> Expr c -> Constraint c infix 4 .<=. -- | Inequality constraint (≥). (.>=.) :: Num c => Expr c -> Expr c -> Constraint c infix 4 .>=. -- | relational operators data RelOp Le :: RelOp Ge :: RelOp Eql :: RelOp -- | types of SOS (special ordered sets) constraints data SOSType -- | Type 1 SOS constraint S1 :: SOSType -- | Type 2 SOS constraint S2 :: SOSType -- | SOS (special ordered sets) constraints data SOSConstraint c SOSConstraint :: Maybe Label -> SOSType -> [(Var, c)] -> SOSConstraint c [sosLabel] :: SOSConstraint c -> Maybe Label [sosType] :: SOSConstraint c -> SOSType [sosBody] :: SOSConstraint c -> [(Var, c)] -- | Type for representing a solution of MIP problem. data Solution r Solution :: Status -> Maybe r -> Map Var r -> Solution r [solStatus] :: Solution r -> Status [solObjectiveValue] :: Solution r -> Maybe r [solVariables] :: Solution r -> Map Var r -- | MIP status with the following partial order: -- data Status StatusUnknown :: Status StatusFeasible :: Status StatusOptimal :: Status StatusInfeasibleOrUnbounded :: Status StatusInfeasible :: Status StatusUnbounded :: Status -- | meet (greatest lower bound) operator of the partial order of -- Status type. -- -- If the version of lattices is <2, then -- MeetSemiLattice instance can also be used. meetStatus :: Status -> Status -> Status data FileOptions FileOptions :: Maybe TextEncoding -> FileOptions [optFileEncoding] :: FileOptions -> Maybe TextEncoding -- | A class for types with a default value. class () => Default a -- | The default value for this type. def :: Default a => a class Variables a vars :: Variables a => a -> Set Var intersectBounds :: Ord c => Bounds c -> Bounds c -> Bounds c instance GHC.Show.Show Numeric.Optimization.MIP.Base.VarType instance GHC.Classes.Ord Numeric.Optimization.MIP.Base.VarType instance GHC.Classes.Eq Numeric.Optimization.MIP.Base.VarType instance GHC.Show.Show c => GHC.Show.Show (Numeric.Optimization.MIP.Base.Term c) instance GHC.Classes.Ord c => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.Term c) instance GHC.Classes.Eq c => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.Term c) instance GHC.Show.Show c => GHC.Show.Show (Numeric.Optimization.MIP.Base.Expr c) instance GHC.Classes.Ord c => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.Expr c) instance GHC.Classes.Eq c => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.Expr c) instance GHC.Show.Show c => GHC.Show.Show (Numeric.Optimization.MIP.Base.ObjectiveFunction c) instance GHC.Classes.Ord c => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.ObjectiveFunction c) instance GHC.Classes.Eq c => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.ObjectiveFunction c) instance GHC.Show.Show c => GHC.Show.Show (Numeric.Optimization.MIP.Base.Constraint c) instance GHC.Classes.Ord c => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.Constraint c) instance GHC.Classes.Eq c => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.Constraint c) instance GHC.Show.Show Numeric.Optimization.MIP.Base.RelOp instance GHC.Enum.Enum Numeric.Optimization.MIP.Base.RelOp instance GHC.Classes.Ord Numeric.Optimization.MIP.Base.RelOp instance GHC.Classes.Eq Numeric.Optimization.MIP.Base.RelOp instance GHC.Read.Read Numeric.Optimization.MIP.Base.SOSType instance GHC.Show.Show Numeric.Optimization.MIP.Base.SOSType instance GHC.Enum.Enum Numeric.Optimization.MIP.Base.SOSType instance GHC.Classes.Ord Numeric.Optimization.MIP.Base.SOSType instance GHC.Classes.Eq Numeric.Optimization.MIP.Base.SOSType instance GHC.Show.Show c => GHC.Show.Show (Numeric.Optimization.MIP.Base.SOSConstraint c) instance GHC.Classes.Ord c => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.SOSConstraint c) instance GHC.Classes.Eq c => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.SOSConstraint c) instance GHC.Classes.Ord c => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.Problem c) instance GHC.Classes.Eq c => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.Problem c) instance GHC.Show.Show c => GHC.Show.Show (Numeric.Optimization.MIP.Base.Problem c) instance GHC.Show.Show Numeric.Optimization.MIP.Base.Status instance GHC.Enum.Bounded Numeric.Optimization.MIP.Base.Status instance GHC.Enum.Enum Numeric.Optimization.MIP.Base.Status instance GHC.Classes.Ord Numeric.Optimization.MIP.Base.Status instance GHC.Classes.Eq Numeric.Optimization.MIP.Base.Status instance GHC.Show.Show r => GHC.Show.Show (Numeric.Optimization.MIP.Base.Solution r) instance GHC.Classes.Ord r => GHC.Classes.Ord (Numeric.Optimization.MIP.Base.Solution r) instance GHC.Classes.Eq r => GHC.Classes.Eq (Numeric.Optimization.MIP.Base.Solution r) instance GHC.Show.Show Numeric.Optimization.MIP.Base.FileOptions instance Data.Default.Class.Default Numeric.Optimization.MIP.Base.FileOptions instance Numeric.Optimization.MIP.Base.Variables a => Numeric.Optimization.MIP.Base.Variables [a] instance (Numeric.Optimization.MIP.Base.Variables a, Numeric.Optimization.MIP.Base.Variables b) => Numeric.Optimization.MIP.Base.Variables (Data.Either.Either a b) instance Numeric.Optimization.MIP.Base.Variables (Numeric.Optimization.MIP.Base.Problem c) instance Numeric.Optimization.MIP.Base.Variables (Numeric.Optimization.MIP.Base.Expr c) instance Numeric.Optimization.MIP.Base.Variables (Numeric.Optimization.MIP.Base.Term c) instance Numeric.Optimization.MIP.Base.Variables (Numeric.Optimization.MIP.Base.ObjectiveFunction c) instance Numeric.Optimization.MIP.Base.Variables (Numeric.Optimization.MIP.Base.Constraint c) instance Numeric.Optimization.MIP.Base.Variables (Numeric.Optimization.MIP.Base.SOSConstraint c) instance GHC.Base.Functor Numeric.Optimization.MIP.Base.Solution instance Data.Default.Class.Default (Numeric.Optimization.MIP.Base.Solution r) instance Algebra.PartialOrd.PartialOrd Numeric.Optimization.MIP.Base.Status instance Data.Default.Class.Default (Numeric.Optimization.MIP.Base.Problem c) instance GHC.Base.Functor Numeric.Optimization.MIP.Base.Problem instance GHC.Base.Functor Numeric.Optimization.MIP.Base.SOSConstraint instance Data.Default.Class.Default (Numeric.Optimization.MIP.Base.Constraint c) instance GHC.Base.Functor Numeric.Optimization.MIP.Base.Constraint instance Data.Default.Class.Default (Numeric.Optimization.MIP.Base.ObjectiveFunction c) instance GHC.Base.Functor Numeric.Optimization.MIP.Base.ObjectiveFunction instance GHC.Num.Num c => GHC.Num.Num (Numeric.Optimization.MIP.Base.Expr c) instance GHC.Base.Functor Numeric.Optimization.MIP.Base.Expr instance GHC.Base.Functor Numeric.Optimization.MIP.Base.Term instance Data.Default.Class.Default Numeric.Optimization.MIP.Base.VarType module Numeric.Optimization.MIP.FileUtils -- | Error type for parsing. -- -- The definition is slightly different based on the megaparsec -- version. type ParseError s = ParseErrorBundle s Void -- | A CPLEX .lp format parser library. -- -- References: -- -- module Numeric.Optimization.MIP.LPFile -- | Parse a string containing LP file data. The source name is only used -- in error messages and may be the empty string. parseString :: (Stream s, Token s ~ Char, IsString (Tokens s)) => FileOptions -> String -> s -> Either (ParseError s) (Problem Scientific) -- | Parse a file containing LP file data. parseFile :: FileOptions -> FilePath -> IO (Problem Scientific) -- | Error type for parsing. -- -- The definition is slightly different based on the megaparsec -- version. type ParseError s = ParseErrorBundle s Void -- | LP file parser parser :: (MonadParsec e s m, Token s ~ Char, IsString (Tokens s)) => m (Problem Scientific) -- | Render a problem into a Text containing LP file data. render :: FileOptions -> Problem Scientific -> Either String Text -- | A .mps format parser library. -- -- References: -- -- module Numeric.Optimization.MIP.MPSFile -- | Parse a string containing MPS file data. The source name is only used -- in error messages and may be the empty string. parseString :: (Stream s, Token s ~ Char, IsString (Tokens s)) => FileOptions -> String -> s -> Either (ParseError s) (Problem Scientific) -- | Parse a file containing MPS file data. parseFile :: FileOptions -> FilePath -> IO (Problem Scientific) -- | Error type for parsing. -- -- The definition is slightly different based on the megaparsec -- version. type ParseError s = ParseErrorBundle s Void -- | MPS file parser parser :: (MonadParsec e s m, Token s ~ Char, IsString (Tokens s)) => m (Problem Scientific) -- | Render a problem into a Text containing MPS file data. render :: FileOptions -> Problem Scientific -> Either String Text instance GHC.Enum.Bounded Numeric.Optimization.MIP.MPSFile.BoundType instance GHC.Enum.Enum Numeric.Optimization.MIP.MPSFile.BoundType instance GHC.Read.Read Numeric.Optimization.MIP.MPSFile.BoundType instance GHC.Show.Show Numeric.Optimization.MIP.MPSFile.BoundType instance GHC.Classes.Ord Numeric.Optimization.MIP.MPSFile.BoundType instance GHC.Classes.Eq Numeric.Optimization.MIP.MPSFile.BoundType -- | Mixed-Integer Programming Problems with some commmonly used extensions module Numeric.Optimization.MIP -- | Parse LP or MPS file based on file extension. readFile :: FileOptions -> FilePath -> IO (Problem Scientific) -- | Parse a file containing LP file data. readLPFile :: FileOptions -> FilePath -> IO (Problem Scientific) -- | Parse a file containing MPS file data. readMPSFile :: FileOptions -> FilePath -> IO (Problem Scientific) -- | Parse a string containing LP file data. parseLPString :: (Stream s, Token s ~ Char, IsString (Tokens s)) => FileOptions -> String -> s -> Either (ParseError s) (Problem Scientific) -- | Parse a string containing MPS file data. parseMPSString :: (Stream s, Token s ~ Char, IsString (Tokens s)) => FileOptions -> String -> s -> Either (ParseError s) (Problem Scientific) -- | Error type for parsing. -- -- The definition is slightly different based on the megaparsec -- version. type ParseError s = ParseErrorBundle s Void -- | Generate LP file or MPS file based on file extension. writeFile :: FileOptions -> FilePath -> Problem Scientific -> IO () -- | Generate LP file. writeLPFile :: FileOptions -> FilePath -> Problem Scientific -> IO () -- | Generate MPS file. writeMPSFile :: FileOptions -> FilePath -> Problem Scientific -> IO () -- | Generate a Text containing LP file data. toLPString :: FileOptions -> Problem Scientific -> Either String Text -- | Generate a Text containing MPS file data. toMPSString :: FileOptions -> Problem Scientific -> Either String Text module Numeric.Optimization.MIP.Solution.CBC -- | Type for representing a solution of MIP problem. data Solution r Solution :: Status -> Maybe r -> Map Var r -> Solution r [solStatus] :: Solution r -> Status [solObjectiveValue] :: Solution r -> Maybe r [solVariables] :: Solution r -> Map Var r parse :: Text -> Solution Scientific readFile :: FilePath -> IO (Solution Scientific) module Numeric.Optimization.MIP.Solution.CPLEX -- | Type for representing a solution of MIP problem. data Solution r Solution :: Status -> Maybe r -> Map Var r -> Solution r [solStatus] :: Solution r -> Status [solObjectiveValue] :: Solution r -> Maybe r [solVariables] :: Solution r -> Map Var r parse :: Text -> Solution Scientific readFile :: FilePath -> IO (Solution Scientific) module Numeric.Optimization.MIP.Solution.GLPK -- | Type for representing a solution of MIP problem. data Solution r Solution :: Status -> Maybe r -> Map Var r -> Solution r [solStatus] :: Solution r -> Status [solObjectiveValue] :: Solution r -> Maybe r [solVariables] :: Solution r -> Map Var r parse :: Text -> Solution Scientific readFile :: FilePath -> IO (Solution Scientific) module Numeric.Optimization.MIP.Solution.Gurobi -- | Type for representing a solution of MIP problem. data Solution r Solution :: Status -> Maybe r -> Map Var r -> Solution r [solStatus] :: Solution r -> Status [solObjectiveValue] :: Solution r -> Maybe r [solVariables] :: Solution r -> Map Var r render :: Solution Scientific -> Text writeFile :: FilePath -> Solution Scientific -> IO () parse :: Text -> Solution Scientific readFile :: FilePath -> IO (Solution Scientific) module Numeric.Optimization.MIP.Solution.SCIP -- | Type for representing a solution of MIP problem. data Solution r Solution :: Status -> Maybe r -> Map Var r -> Solution r [solStatus] :: Solution r -> Status [solObjectiveValue] :: Solution r -> Maybe r [solVariables] :: Solution r -> Map Var r parse :: Text -> Solution Scientific readFile :: FilePath -> IO (Solution Scientific) module Numeric.Optimization.MIP.Solver.Base data SolveOptions SolveOptions :: Maybe Double -> (String -> IO ()) -> (String -> IO ()) -> SolveOptions -- | time limit in seconds [solveTimeLimit] :: SolveOptions -> Maybe Double -- | invoked when a solver output a line [solveLogger] :: SolveOptions -> String -> IO () -- | invoked when a solver output a line to stderr [solveErrorLogger] :: SolveOptions -> String -> IO () -- | A class for types with a default value. class () => Default a -- | The default value for this type. def :: Default a => a class Monad m => IsSolver s m | s -> m solve :: IsSolver s m => s -> SolveOptions -> Problem Scientific -> m (Solution Scientific) instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.Base.SolveOptions module Numeric.Optimization.MIP.Solver.CBC data CBC CBC :: String -> CBC [cbcPath] :: CBC -> String cbc :: CBC instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.CBC.CBC instance Numeric.Optimization.MIP.Solver.Base.IsSolver Numeric.Optimization.MIP.Solver.CBC.CBC GHC.Types.IO module Numeric.Optimization.MIP.Solver.CPLEX data CPLEX CPLEX :: String -> CPLEX [cplexPath] :: CPLEX -> String cplex :: CPLEX instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.CPLEX.CPLEX instance Numeric.Optimization.MIP.Solver.Base.IsSolver Numeric.Optimization.MIP.Solver.CPLEX.CPLEX GHC.Types.IO module Numeric.Optimization.MIP.Solver.Glpsol data Glpsol Glpsol :: String -> Glpsol [glpsolPath] :: Glpsol -> String glpsol :: Glpsol instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.Glpsol.Glpsol instance Numeric.Optimization.MIP.Solver.Base.IsSolver Numeric.Optimization.MIP.Solver.Glpsol.Glpsol GHC.Types.IO module Numeric.Optimization.MIP.Solver.GurobiCl data GurobiCl GurobiCl :: String -> GurobiCl [gurobiClPath] :: GurobiCl -> String gurobiCl :: GurobiCl instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.GurobiCl.GurobiCl instance Numeric.Optimization.MIP.Solver.Base.IsSolver Numeric.Optimization.MIP.Solver.GurobiCl.GurobiCl GHC.Types.IO module Numeric.Optimization.MIP.Solver.LPSolve data LPSolve LPSolve :: String -> LPSolve [lpSolvePath] :: LPSolve -> String lpSolve :: LPSolve instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.LPSolve.LPSolve instance Numeric.Optimization.MIP.Solver.Base.IsSolver Numeric.Optimization.MIP.Solver.LPSolve.LPSolve GHC.Types.IO module Numeric.Optimization.MIP.Solver.SCIP data SCIP SCIP :: String -> SCIP [scipPath] :: SCIP -> String scip :: SCIP instance Data.Default.Class.Default Numeric.Optimization.MIP.Solver.SCIP.SCIP instance Numeric.Optimization.MIP.Solver.Base.IsSolver Numeric.Optimization.MIP.Solver.SCIP.SCIP GHC.Types.IO module Numeric.Optimization.MIP.Solver