ecbe1cb8c9634c91a04157cd5e4b6dcc6f66eafd
[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         prefIsExpert :: Wt -> Bool,
16         prefIsKnowledgeable :: Wt -> Bool,
17         prefIsBoring :: Wt -> Bool,
18         prefIsVeryBoring :: Wt -> Bool,
19         prefIsConflict :: Wt -> Bool,
20         loadTolerance :: Int,
21         marginalLoadCost :: Wt -> Wt,
22         marginalBoringCost :: Wt -> Wt,
23         marginalVeryBoringCost :: Wt -> Wt,
24         assignmentCost :: Wt -> Wt,
25         knowledgeableBonus :: Wt,
26         expertBonus :: Wt,
27         numTopics :: Int,
28         topicZipfExponent :: Wt
29 }