- Add the notes Samir emailed me on 2008-07-06.
[match/match.git] / program / ProposalMatchConfig.hs
diff --git a/program/ProposalMatchConfig.hs b/program/ProposalMatchConfig.hs
new file mode 100644 (file)
index 0000000..39055c1
--- /dev/null
@@ -0,0 +1,29 @@
+module ProposalMatchConfig where
+
+prefIsExpert p = p <= 10
+prefIsConflict p = p >= 40
+
+{-
+Each proposal should have 'wantExpertReviews' expert reviews plus
+'wantGeneralReviews' general reviews (can be by experts).  If we
+fall short on expert reviews, we give 'wantReviewsSubstForExpert'
+additional general reviews for each expert review we fell short.
+Values 2, 1, 2 give the ">= 3 of which >= 1 is expert, failing that >= 4"
+criterion that Samir indicated.
+-}
+wantGeneralReviews = 2
+wantExpertReviews = 1
+wantReviewsSubstForExpert = 2
+
+-- A hard limit that we hope will never be hit.
+maxReviewerLoad = 10
+
+-- I'm using quadratic cost functions as a first attempt.
+prefToCost p = p ^ 2
+{-
+I chose the number 225 to make the preference difference between 20 and 25
+approximately equivalent to one unit of load imbalance (e.g., the difference
+between (k, k) and (k+1, k-1)); that seemed reasonable to me.
+Adjust the number as necessary.
+-}
+marginalLoadCost nr = 225 * fromInteger nr