X-Git-Url: https://mattmccutchen.net/match/match.git/blobdiff_plain/e5c2839897cf7b71dd9f6f70478779474a704687..affb6e6a27325110e9f65c16506779eacf8c6c36:/program/ProposalMatchConfig.hs diff --git a/program/ProposalMatchConfig.hs b/program/ProposalMatchConfig.hs new file mode 100644 index 0000000..39055c1 --- /dev/null +++ b/program/ProposalMatchConfig.hs @@ -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