From: Matt McCutchen Date: Sat, 2 Aug 2008 20:20:44 +0000 (-0400) Subject: Make the evaluator's review weights configurable. X-Git-Url: https://mattmccutchen.net/match/match.git/commitdiff_plain/35ce78e3b164a71da6177f0577b598a12198d237 Make the evaluator's review weights configurable. --- diff --git a/program/Evaluation.hs b/program/Evaluation.hs index c93e799..032a1a9 100644 --- a/program/Evaluation.hs +++ b/program/Evaluation.hs @@ -18,15 +18,11 @@ evaluateMatching cfg inst@(PMInstance numRvrs numProps rloadA prefA) matching = -- Sort this proposal's reviews, best first. let jPrefsInc = sort $ map (\i -> prefA ! (i,j)) rl in -- Charge each review's assignmentCost. - sum $ zipWith (\wt prf -> (numAsWt wt) * assignmentCost cfg prf) - -- The assignment costs are weighted by - -- reviewsEachProposal, ..., 1 from best to worst. - -- (It's most important for the best to be good.) - (take (reviewsEachProposal cfg) $ - iterate (subtract 1) (reviewsEachProposal cfg)) + sum $ zipWith (\wt prf -> wt * assignmentCost cfg prf) + (reviewEvalWeights cfg) -- A missing review counts as a preference of 50 (really bad). (jPrefsInc ++ repeat 50) - ) + ) reviewersByProposal doEvaluateMatching :: PMConfig -> PMInstance -> MatchingEvaluation diff --git a/program/PMConfig.hs b/program/PMConfig.hs index ecbe1cb..d88f3d4 100644 --- a/program/PMConfig.hs +++ b/program/PMConfig.hs @@ -25,5 +25,6 @@ data PMConfig = PMConfig { knowledgeableBonus :: Wt, expertBonus :: Wt, numTopics :: Int, - topicZipfExponent :: Wt + topicZipfExponent :: Wt, + reviewEvalWeights :: [Wt] } diff --git a/program/PMDefaults.hs b/program/PMDefaults.hs index a68d182..2f4a687 100644 --- a/program/PMDefaults.hs +++ b/program/PMDefaults.hs @@ -67,6 +67,14 @@ expertBonus = 1000, numTopics = 20, -- Exponent of the Zipf distribution used to choose topics for each proposal. -topicZipfExponent = -0.5 +topicZipfExponent = -0.5, + +-- === Parameters for the matching evaluator === + +-- The weights given to the best, ..., worst review of a proposal in evaluating +-- its "unhappiness". Default is [reviewsEachProposal, ..., 1] since it's most +-- important for the best review to be good. +reviewEvalWeights = let rep = reviewsEachProposal pmDefaults in + map numAsWt [rep, rep-1 .. 1] }