Merge branch 'master' into popl2012
[match/match.git] / program / PMConfig.hs
1 module PMConfig where
2
3 import PMInstance
4 import IMinCostFlow
5
6 -- A PMConfig structure has a bunch of configuration values used by
7 -- many functions in PMInstanceGenerator, ProposalMatcher, and Evaluation, which
8 -- take a PMConfig as their first argument.  Module PMDefaults defines a sane
9 -- default configuration `pmDefaults'; it can be used as-is or individual fields
10 -- can be overridden, e.g., pmDefaults{loadTolerance = 2} .  See module
11 -- PMDefaults for documentation of each field.
12 data PMConfig = PMConfig {
13         minCostFlow :: MinCostFlowImpl,
14         reviewsEachProposal :: Int,
15         pcReviewsEachProposal :: Int,
16         expIsExpert :: Wt -> Bool,
17         expIsKnowledgeable :: Wt -> Bool,
18         prefIsBoring :: Wt -> Bool,
19         prefIsVeryBoring :: Wt -> Bool,
20         prefIsConflict :: Wt -> Bool,
21         loadTolerance :: Int,
22         ercLoadTolerance :: Int,
23         marginalLoadCost :: Wt -> Wt,
24         marginalBoringCost :: Wt -> Wt,
25         marginalVeryBoringCost :: Wt -> Wt,
26         assignmentCost :: Wt -> Wt,
27         knowledgeableBonus :: Wt,
28         expertBonus :: Wt,
29         numTopics :: Int,
30         topicZipfExponent :: Wt,
31         reviewEvalWeights :: [Wt]
32 }