The random instance generator and other improvements.
[match/match.git] / program / ProposalMatcherConfig.hs
diff --git a/program/ProposalMatcherConfig.hs b/program/ProposalMatcherConfig.hs
new file mode 100644 (file)
index 0000000..750cf1f
--- /dev/null
@@ -0,0 +1,40 @@
+module ProposalMatcherConfig where
+import Instance
+
+type Pref = Int
+
+numAsWt x = fromInteger (toInteger x) :: Wt
+
+reviewsEachProposal = 3 :: Int
+
+prefIsExpert p = p <= 10
+prefIsKnowledgeable p = p <= 20
+
+prefIsBoring p = p > 15
+prefIsVeryBoring p = p > 25
+
+prefIsConflict p = p >= 40
+
+-- For now this is absolute.  Later it might be proportional to a reviewer's
+-- target load.
+loadTolerance = 1 :: Int
+
+-- Cost to overload by one review.
+-- tx = 0 at target load, 1 at end of tolerance.
+marginalLoadCost tx = 1000 + tx*1000 :: Wt
+
+-- Cost to review a boring (or very boring) proposal.
+-- lx = 0 at no load, 1 at target load.
+marginalBoringCost lx = 1000 + lx*1000 :: Wt
+-- Additional cost to review a very boring proposal.
+marginalVeryBoringCost lx = 1000 + lx*1000 :: Wt
+
+-- Cost to make a review.
+-- I'm using quadratic cost functions as a first attempt.
+assignmentCost pref = (numAsWt 10 + pref) ^ 2 :: Wt
+
+-- Bonus for a first knowledgeable or expert review.
+knowledgeableBonus = 1000 :: Wt
+
+-- Bonus for an additional expert review.
+expertBonus = 1000 :: Wt