Commit | Line | Data |
---|---|---|
d7d9561e MM |
1 | module ProposalMatchConfig where |
2 | ||
3 | prefIsExpert p = p <= 10 | |
4 | prefIsConflict p = p >= 40 | |
5 | ||
6 | {- | |
7 | Each proposal should have 'wantExpertReviews' expert reviews plus | |
8 | 'wantGeneralReviews' general reviews (can be by experts). If we | |
9 | fall short on expert reviews, we give 'wantReviewsSubstForExpert' | |
10 | additional general reviews for each expert review we fell short. | |
11 | Values 2, 1, 2 give the ">= 3 of which >= 1 is expert, failing that >= 4" | |
12 | criterion that Samir indicated. | |
13 | -} | |
14 | wantGeneralReviews = 2 | |
15 | wantExpertReviews = 1 | |
16 | wantReviewsSubstForExpert = 2 | |
17 | ||
18 | -- A hard limit that we hope will never be hit. | |
19 | maxReviewerLoad = 10 | |
20 | ||
21 | -- I'm using quadratic cost functions as a first attempt. | |
22 | prefToCost p = p ^ 2 | |
23 | {- | |
24 | I chose the number 225 to make the preference difference between 20 and 25 | |
25 | approximately equivalent to one unit of load imbalance (e.g., the difference | |
26 | between (k, k) and (k+1, k-1)); that seemed reasonable to me. | |
27 | Adjust the number as necessary. | |
28 | -} | |
29 | marginalLoadCost nr = 225 * fromInteger nr |