{-# LANGUAGE CPP #-} module Control.CP.FD.Solvers where import qualified Control.CP.PriorityQueue as PriorityQueue import qualified Data.Sequence import Control.CP.ComposableTransformers import Control.CP.SearchTree import Control.CP.FD.FD -- import Control.CP.FD.OvertonFD.Sugar -- import Control.CP.FD.OvertonFD.OvertonFD -- import Control.CP.FD.Gecode.CodegenSolver #ifdef RGECODE -- import Control.CP.FD.Gecode.RuntimeSolver #endif -------------------------------------------------------------------------------- -- FORCE SOLVERS -------------------------------------------------------------------------------- -- as_overtonfd :: Tree (FDWrapper OvertonFD) a -> Tree OvertonFD a -- as_overtonfd = unwrap -- -- as_gecode_codegen :: Tree (FDWrapper CodegenSolver) a -> Tree CodegenSolver a -- as_gecode_codegen = unwrap -- -- as_gen_gecode_codegen :: (FDExpr CodegenSolver -> Tree (FDWrapper CodegenSolver) a) -> (FDExpr CodegenSolver -> Tree CodegenSolver a) -- as_gen_gecode_codegen f = (\x -> unwrap $ f x) -- -- #ifdef RGECODE -- as_gecode_runtime :: Tree (FDWrapper RuntimeSolver) a -> Tree RuntimeSolver a -- as_gecode_runtime = unwrap -- -- as_gecode_search :: Tree (FDWrapper SearchSolver) a -> Tree (FDWrapper SearchSolver) a -- as_gecode_search = id -- #endif ------------------------------------------------------------------------------ -- SEARCH STRATEGIES ------------------------------------------------------------------------------ dfs = [] bfs = Data.Sequence.empty pfs :: Ord a => PriorityQueue.PriorityQueue a (a,b,c) pfs = PriorityQueue.empty nb :: Int -> CNodeBoundedST s a nb = CNBST db :: Int -> CDepthBoundedST s a db = CDBST bb :: NewBound s -> CBranchBoundST s a bb = CBBST sb :: Int -> CSolutionBoundST s a sb = CSBST fs :: CFirstSolutionST s a fs = CFSST it :: CIdentityCST s a it = CIST ra :: Int -> CRandomST s a ra = CRST ld :: Int -> CLimitedDiscrepancyST s a ld = CLDST