X-Git-Url: https://mattmccutchen.net/match/match.git/blobdiff_plain/066d7f5355c79a94b6d3a6fb2008e0a506b289c7..8c5ee850714e315aabbdcd173728e60811206b2c:/program/PMDefaults.hs diff --git a/program/PMDefaults.hs b/program/PMDefaults.hs new file mode 100644 index 0000000..5f9ede2 --- /dev/null +++ b/program/PMDefaults.hs @@ -0,0 +1,55 @@ +module PMDefaults where +import Instance +import ProposalMatcher + +import qualified NaiveMinCostFlow +import qualified CS2MinCostFlow + +pmDefaults = PMConfig { + +-- Choose a min-cost flow implementation (timings on mattlaptop2): + +-- A naive implementation that is slow for all but the smallest instances +-- (30s on a 20x50 example). +minCostFlow = NaiveMinCostFlow.minCostFlow, + +-- Uses CS2 (http://www.igsystems.com/cs2/), which requires a license for +-- non-research use but is faster (<1s on a 20x50 example, 64s on a 60x500 +-- example). Configure the path to cs2.exe in CS2MinCostFlow.hs. +--minCostFlow = CS2MinCostFlow.minCostFlow, + +reviewsEachProposal = 3, + +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, + +-- Cost to overload by one review. +-- tx = 0 at target load, 1 at end of tolerance. +marginalLoadCost = \tx -> 1000 + tx*1000, + +-- Cost to review a boring (or very boring) proposal. +-- lx = 0 at no load, 1 at target load. +marginalBoringCost = \lx -> 1000 + lx*1000, +-- Additional cost to review a very boring proposal. +marginalVeryBoringCost = \lx -> 1000 + lx*1000, + +-- Cost to make a review. +-- I'm using quadratic cost functions as a first attempt. +assignmentCost = \pref -> (numAsWt 10 + pref) ^ 2, + +-- Bonus for a first knowledgeable or expert review. +knowledgeableBonus = 1000, + +-- Bonus for an additional expert review. +expertBonus = 1000 + +}