Safe Haskell | None |
---|---|
Language | Haskell2010 |
A set of types and functions to help calling Minizinc as an external binary.
Current strategy is to use JSON encode/decoding for passing in inputs and reading outputs. At this time, only a primitive output parser is supported.
Synopsis
- data MiniZinc input answer = MiniZinc {
- model :: FilePath
- mkTmpDataPath :: input -> FilePath
- mkTimeLimit :: input -> MilliSeconds Int
- mkSolver :: input -> Solver
- mkExtraArgs :: input -> [String]
- simpleMiniZinc :: Hashable input => FilePath -> MilliSeconds Int -> Solver -> MiniZinc input answer
- withArgs :: [String] -> MiniZinc input answer -> MiniZinc input answer
- data Solver
- type SolverName = String
- type MilliSeconds a = Int
- data SearchState a
- = Exhausted a
- | Incomplete a
- | Unsatisfiable
- | InternalError String
- result :: SearchState a -> Maybe a
- data ResultHandler obj b = ResultHandler {
- handleNext :: b -> SearchState obj -> IO (b, Maybe (ResultHandler obj b))
- runMinizincJSON :: forall input answer b. (ToJSON input, FromJSON answer) => MiniZinc input answer -> input -> b -> ResultHandler answer b -> IO b
- collectResults :: ResultHandler obj [SearchState obj]
- keepLast :: ResultHandler obj (Maybe (SearchState obj))
- runLastMinizincJSON :: (ToJSON input, FromJSON answer) => MiniZinc input answer -> input -> IO (Maybe answer)
- cleanTmpFile :: MiniZinc input a -> input -> IO ()
Documentation
data MiniZinc input answer Source #
An object helping to run MiniZinc.
MiniZinc | |
|
simpleMiniZinc :: Hashable input => FilePath -> MilliSeconds Int -> Solver -> MiniZinc input answer Source #
A constructor for MiniZinc object for simple situations.
withArgs :: [String] -> MiniZinc input answer -> MiniZinc input answer Source #
Helper to set arguments.
Supported solvers or Other
.
type SolverName = String Source #
Name of a solver to be passed to the minizinc binary.
type MilliSeconds a = Int Source #
Type alias asking for milliseconds.
data SearchState a Source #
Instances
Functor SearchState Source # | |
Defined in Process.Minizinc fmap :: (a -> b) -> SearchState a -> SearchState b # (<$) :: a -> SearchState b -> SearchState a # | |
Eq a => Eq (SearchState a) Source # | |
Defined in Process.Minizinc (==) :: SearchState a -> SearchState a -> Bool # (/=) :: SearchState a -> SearchState a -> Bool # | |
Ord a => Ord (SearchState a) Source # | |
Defined in Process.Minizinc compare :: SearchState a -> SearchState a -> Ordering # (<) :: SearchState a -> SearchState a -> Bool # (<=) :: SearchState a -> SearchState a -> Bool # (>) :: SearchState a -> SearchState a -> Bool # (>=) :: SearchState a -> SearchState a -> Bool # max :: SearchState a -> SearchState a -> SearchState a # min :: SearchState a -> SearchState a -> SearchState a # | |
Show a => Show (SearchState a) Source # | |
Defined in Process.Minizinc showsPrec :: Int -> SearchState a -> ShowS # show :: SearchState a -> String # showList :: [SearchState a] -> ShowS # |
result :: SearchState a -> Maybe a Source #
data ResultHandler obj b Source #
ResultHandler | |
|
runMinizincJSON :: forall input answer b. (ToJSON input, FromJSON answer) => MiniZinc input answer -> input -> b -> ResultHandler answer b -> IO b Source #
collectResults :: ResultHandler obj [SearchState obj] Source #
Collect all results in memory. The resulting list is in reverse order (best are first elements in case of optimizations).
keepLast :: ResultHandler obj (Maybe (SearchState obj)) Source #
Keep only the latest result in memory.
runLastMinizincJSON :: (ToJSON input, FromJSON answer) => MiniZinc input answer -> input -> IO (Maybe answer) Source #
Runs MiniZinc on the input and parses output for the last answer.
cleanTmpFile :: MiniZinc input a -> input -> IO () Source #
Removes the temporary data file created as input before running minizinc.