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