Skip to content

Commit 214f9a8

Browse files
committedApr 9, 2017
Brush it a bit.
1 parent ba946a2 commit 214f9a8

File tree

2 files changed

+20
-56
lines changed

2 files changed

+20
-56
lines changed
 

‎example/Main.hs

+18-54
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,14 @@
22

33
import Sesyrel.FaultTree
44
import Sesyrel.FaultTree.Dynamic
5-
import Sesyrel.FaultTree.Static
6-
import Sesyrel.FaultTree.Elimination (Algorithm(..), findOrdering, pretend)
75

8-
import Control.Monad (replicateM, forM_, foldM)
6+
import Control.Monad (replicateM, forM_)
97
import Control.Monad.Logger
108
import System.Log.FastLogger
11-
import Data.Monoid ((<>))
12-
import Data.Maybe (fromJust)
13-
14-
import Data.List (delete)
15-
import qualified Data.Text as T (pack)
169

1710
main :: IO ()
1811
main = withFastLogger (LogFileNoRotate "output.tex" 1048576) $ \logger ->
19-
runLoggingT (mainComplexity) (\_ _ _ -> logger)
12+
runLoggingT (mainS >> mainD) (\_ _ _ -> logger)
2013

2114
processDynamicFaultTree :: MonadLogger m => String -> Maybe [Variable] -> FaultTreeMonad Rational [Variable] -> m [DynamicFactor]
2215
processDynamicFaultTree name mbOrder ftreeM =
@@ -36,35 +29,28 @@ mainD =
3629
let doIt (name, mbOrder, ftreeM, points) = do
3730
factor : _ <- processDynamicFaultTree name mbOrder ftreeM
3831
logDynamicFactorInfo factor points
39-
in mapM_ doIt trees
32+
in mapM_ doIt treesD
4033

4134
mainS :: MonadLogger m => m ()
4235
mainS =
4336
let doIt (name, mbOrder, ftreeM, points) =
4437
processStaticFaultTree name mbOrder ftreeM points
45-
in mapM_ doIt trees
46-
47-
mainComplexity :: MonadLogger m => m ()
48-
mainComplexity =
49-
let doIt (name, _, ftreeM, _) = do
50-
let vars = faultTreeVariables faultTree
51-
(topVar : _, faultTree) = runFaultTreeMonad ftreeM
52-
toElim = delete topVar $ foldl1 unionVariables vars
53-
ordering = findOrdering (Just GraphMinNeighbors) toElim vars
54-
logInfoN $ "\\section{" <> T.pack name <> "}\n\n"
55-
eliminationOrderLog ordering
56-
cliqueHistoryLog $ pretend (map fst ordering) vars
57-
logInfoN "\n"
58-
in mapM_ doIt trees
38+
in mapM_ doIt treesS
39+
40+
treesD :: Fractional k => [(String, Maybe [Variable], FaultTreeMonad k [Variable], [Double])]
41+
treesD =
42+
[ ("ftree1", Nothing, simpleFaultTreeMonad, [1, 3])
43+
, ("ftree1", Just [4, 1, 3, 2], simpleFaultTreeMonad, [])
44+
, ("traditional", Nothing, traditionalHydrosystemsM True >>= traditionalActuationsM True, [5e-6])
45+
, ("more electrical", Nothing, medianHydrosystemsM True >>= medianActuationsM True, [5e-6])
46+
, ("electrical", Nothing, electroHydrosystemsM True False >>= electroActuationsM False, [5e-6])
47+
]
5948

60-
trees :: Fractional k => [(String, Maybe [Variable], FaultTreeMonad k [Variable], [Double])]
61-
trees =
62-
[ ("voterTree", Nothing, moreTestVoterM, [1])
63-
--, ("ftree1", Nothing, simpleFaultTreeMonad, [1, 3])
64-
--, ("ftree1", Just [4, 1, 3, 2], simpleFaultTreeMonad, [])
65-
-- ("traditional", Nothing, traditionalHydrosystemsM True >>= traditionalActuationsM True, [5e-6])
66-
-- ("more electrical", Nothing, medianHydrosystemsM True >>= medianActuationsM True, [5e-6])
67-
-- ("electrical", Nothing, electroHydrosystemsM True False >>= electroActuationsM False, [5e-6])
49+
treesS :: Fractional k => [(String, Maybe [Variable], FaultTreeMonad k [Variable], [Double])]
50+
treesS =
51+
[ ("voterTree", Nothing, testVoterM, [0])
52+
, ("ftree1", Nothing, simpleFaultTreeMonad, [1, 3])
53+
, ("ftree1", Just [4, 1, 3, 2], simpleFaultTreeMonad, [])
6854
]
6955

7056
testVoterM :: Fractional k => FaultTreeMonad k [Variable]
@@ -73,28 +59,6 @@ testVoterM = do
7359
v <- foldingVoterM 20 bases
7460
return [v]
7561

76-
moreTestVoterM :: Fractional k => FaultTreeMonad k [Variable]
77-
moreTestVoterM = do
78-
bases <- replicateM 200 (constantM 0.1)
79-
let f (dl, x) y = do
80-
z <- orM x y
81-
a <- constantM 0.1
82-
t <- orM a z
83-
return $ (dl . (t :), z)
84-
(dl, _) <- foldM f (id, head bases) $ tail bases
85-
v <- foldingVoterM 20 (dl [])
86-
return [v]
87-
88-
testTreeM :: Fractional k => FaultTreeMonad k [Variable]
89-
testTreeM = do
90-
a <- lambdaM 3.0
91-
b <- lambdaM 5.0
92-
c <- orM b b
93-
d <- orM b c
94-
_ <- andM a c
95-
_ <- andM c d
96-
return []
97-
9862
simpleFaultTreeMonad :: Fractional k => FaultTreeMonad k [Variable]
9963
simpleFaultTreeMonad = do
10064
a <- lambdaM 15.0

‎src/Sesyrel/FaultTree.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ eliminationOrderLog order = do
5454
mconcat (intersperse ", " (map (texify . fst) order)) <> "\n\n"
5555
logInfoN . T.pack $ "Max produced clique size: " <>
5656
show (maximum $ map snd order) <> "\n\n"
57-
logInfoN . T.pack $ "History: " <> show order <> "\n\n"
57+
--logInfoN . T.pack $ "History: " <> show order <> "\n\n"
5858

5959
cliqueHistoryLog :: MonadLogger m => [[[Variable]]] -> m ()
6060
cliqueHistoryLog history = do
@@ -69,7 +69,7 @@ factorsEliminate elims algo factors = noLogger (factorsEliminateM elims algo fac
6969
factorsEliminateM :: (Factor f, MonadLogger m) => [Variable] -> Bool -> [f] -> m [f]
7070
factorsEliminateM elims algo factors = do
7171
eliminationOrderLog order
72-
cliqueHistoryLog history
72+
--cliqueHistoryLog history
7373
go factors (map fst order)
7474
where
7575
vars = map variables factors

0 commit comments

Comments
 (0)
Please sign in to comment.