2
2
3
3
import Sesyrel.FaultTree
4
4
import Sesyrel.FaultTree.Dynamic
5
- import Sesyrel.FaultTree.Static
6
- import Sesyrel.FaultTree.Elimination (Algorithm (.. ), findOrdering , pretend )
7
5
8
- import Control.Monad (replicateM , forM_ , foldM )
6
+ import Control.Monad (replicateM , forM_ )
9
7
import Control.Monad.Logger
10
8
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 )
16
9
17
10
main :: IO ()
18
11
main = withFastLogger (LogFileNoRotate " output.tex" 1048576 ) $ \ logger ->
19
- runLoggingT (mainComplexity ) (\ _ _ _ -> logger)
12
+ runLoggingT (mainS >> mainD ) (\ _ _ _ -> logger)
20
13
21
14
processDynamicFaultTree :: MonadLogger m => String -> Maybe [Variable ] -> FaultTreeMonad Rational [Variable ] -> m [DynamicFactor ]
22
15
processDynamicFaultTree name mbOrder ftreeM =
@@ -36,35 +29,28 @@ mainD =
36
29
let doIt (name, mbOrder, ftreeM, points) = do
37
30
factor : _ <- processDynamicFaultTree name mbOrder ftreeM
38
31
logDynamicFactorInfo factor points
39
- in mapM_ doIt trees
32
+ in mapM_ doIt treesD
40
33
41
34
mainS :: MonadLogger m => m ()
42
35
mainS =
43
36
let doIt (name, mbOrder, ftreeM, points) =
44
37
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
+ ]
59
48
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, [] )
68
54
]
69
55
70
56
testVoterM :: Fractional k => FaultTreeMonad k [Variable ]
@@ -73,28 +59,6 @@ testVoterM = do
73
59
v <- foldingVoterM 20 bases
74
60
return [v]
75
61
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
-
98
62
simpleFaultTreeMonad :: Fractional k => FaultTreeMonad k [Variable ]
99
63
simpleFaultTreeMonad = do
100
64
a <- lambdaM 15.0
0 commit comments