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