Commit | Line | Data |
---|---|---|
967c39ef MM |
1 | module Test ( |
2 | -- Export everything we need to have fun in GHCi: | |
967c39ef | 3 | module Test, |
fd0d2377 | 4 | module TestUtils, |
967c39ef | 5 | |
bc14b3b3 MM |
6 | -- Manipulate configurations. |
7 | module PMConfig, | |
8 | module PMDefaults, | |
9 | ||
967c39ef | 10 | -- Generate instances. |
05a6f0ed MM |
11 | module PMInstance, |
12 | module PMInstanceGenerator, | |
967c39ef MM |
13 | |
14 | -- Solve instances. | |
15 | module ProposalMatcher, | |
967c39ef MM |
16 | |
17 | -- Run randomized things. | |
18 | module System.Random, | |
eb6c3c9f MM |
19 | module RandomizedMonad, |
20 | ||
21 | -- Evaluate. | |
22 | module Evaluation | |
967c39ef | 23 | ) where |
fd0d2377 | 24 | import TestUtils |
bc14b3b3 MM |
25 | import PMConfig |
26 | import PMDefaults | |
05a6f0ed MM |
27 | import PMInstance |
28 | import PMInstanceGenerator | |
967c39ef | 29 | import ProposalMatcher |
967c39ef MM |
30 | import System.Random |
31 | import RandomizedMonad | |
eb6c3c9f | 32 | import Evaluation |
967c39ef MM |
33 | |
34 | -- Other imports we need | |
d7d9561e | 35 | import BellmanFord |
967c39ef MM |
36 | import Data.Array.IArray |
37 | import Data.Array.Unboxed | |
d7d9561e MM |
38 | import Data.Graph.Inductive.Graph |
39 | import Data.Graph.Inductive.Tree | |
967c39ef | 40 | import ArrayStuff |
2e7d5426 | 41 | |
2ed0056e | 42 | -- TESTING GRAPH ALGORITHMS |
d7d9561e | 43 | myGraph = mkGraph [(0, ()), (1, ()), (2, ())] |
5a07db44 | 44 | [(0, 1, (0, 2)), (0, 2, (1, 3)), (2, 1, (2, -2))] :: Gr () (Int, Int) |
d7d9561e | 45 | |
5a07db44 | 46 | bfResult = bellmanFord snd 0 myGraph |
d7d9561e | 47 | |
8c5ee850 | 48 | flowArray = minCostFlow pmDefaults (0, 2) fst (const 1) snd myGraph (0, 1) |
5a07db44 MM |
49 | |
50 | myNCGraph = mkGraph [(0, ())] [(0, 0, -1)] :: Gr () Int | |
51 | bfNCResult = bellmanFord id 0 myNCGraph | |
52 | ||
2ed0056e | 53 | -- PROPOSAL-MATCHING EXAMPLES |
d7d9561e MM |
54 | -- Example from idea book p. 425 |
55 | {- | |
56 | (myNumRvrs, myNumProps) = (4, 3) | |
57 | ||
58 | myPrefsArray = array ((0,0), (myNumRvrs-1,myNumProps-1)) [ | |
59 | ((0, 0), 15), ((1, 0), 10), ((2, 0), 15), ((3, 0), 40), | |
60 | ((0, 1), 30), ((1, 1), 7), ((2, 1), 10), ((3, 1), 15), | |
61 | ((0, 2), 15), ((1, 2), 25), ((2, 2), 20), ((3, 2), 20) | |
62 | ] | |
63 | -} | |
64 | ||
65 | (myNumRvrs, myNumProps) = (5, 3) | |
66 | ||
967c39ef MM |
67 | myPrefs = transposeArray $ listArray ((0,0), (myNumProps-1,myNumRvrs-1)) [ |
68 | 15, 10, 15, 40, 20, | |
69 | 30, 7, 10, 15, 15, | |
70 | 15, 25, 20, 20, 15 | |
71 | ] :: UArray (Int, Int) Wt | |
d7d9561e | 72 | |
05a6f0ed | 73 | myInst = PMInstance myNumRvrs myNumProps (constArray (0, myNumRvrs-1) 1) myPrefs |
d7d9561e | 74 | |
8c5ee850 | 75 | rdnResult = doReduction pmDefaults myInst |
5a07db44 | 76 | ReductionResult rrg rrso rrsi rreib rredi = rdnResult |
8c5ee850 | 77 | rdnFlowArray = minCostFlow pmDefaults rreib reIdx reCap reCost rrg (rrso, rrsi) |
5a07db44 | 78 | rrg2 = flowAnnotate rrg rdnFlowArray |
8c5ee850 | 79 | myMatching = doMatching pmDefaults myInst |
2ed0056e MM |
80 | |
81 | iGraph = showInstanceAsGraph myInst myMatching -- Visualize me! |