X-Git-Url: https://mattmccutchen.net/match/match.git/blobdiff_plain/bc14b3b3a9345cb74bc7d8f3808a1d8cdd0bf479..e95df3f5aa9099829c63bab4a5c5ea96808edeb0:/program/ProposalMatcher.hs diff --git a/program/ProposalMatcher.hs b/program/ProposalMatcher.hs index 96c2c32..dcc757a 100644 --- a/program/ProposalMatcher.hs +++ b/program/ProposalMatcher.hs @@ -54,7 +54,7 @@ doReduction cfg (PMInstance numRvrs numProps rloadA prefA) = let totalReviews = (reviewsEachProposal cfg) * numProps totalRelativeLoad = foldl (+) 0 (map (rloadA !) [0 .. numRvrs - 1]) - targetLoad i = ceiling (numAsWt totalReviews * (rloadA ! i) / totalRelativeLoad) + targetLoad i = ceiling (widenInteger totalReviews * (rloadA ! i) / totalRelativeLoad) -- A...H refer to idea book p.429 edgesABC = do i <- [0 .. numRvrs - 1] @@ -62,13 +62,13 @@ doReduction cfg (PMInstance numRvrs numProps rloadA prefA) = let freeEdgeA = (source, rvrNode i 0, REdge undefined tl 0) let nonfreeEdgesA = do l <- [tl .. tl + (loadTolerance cfg) - 1] - let costA = marginalLoadCost cfg ((numAsWt (l - tl) + 1/2) / numAsWt (loadTolerance cfg)) + let costA = marginalLoadCost cfg ((widenInteger (l - tl) + 1/2) / widenInteger (loadTolerance cfg)) [(source, rvrNode i 0, REdge undefined 1 costA)] let edgesBC = do l <- [0 .. tl + (loadTolerance cfg) - 1] - let costB = marginalBoringCost cfg ((numAsWt l + 1/2) / numAsWt tl) + let costB = marginalBoringCost cfg ((widenInteger l + 1/2) / widenInteger tl) let edgeB = (rvrNode i 0, rvrNode i 1, REdge undefined 1 costB) - let costC = marginalVeryBoringCost cfg ((numAsWt l + 1/2) / numAsWt tl) + let costC = marginalVeryBoringCost cfg ((widenInteger l + 1/2) / widenInteger tl) let edgeC = (rvrNode i 1, rvrNode i 2, REdge undefined 1 costC) [edgeB, edgeC] [freeEdgeA] ++ nonfreeEdgesA ++ edgesBC @@ -112,4 +112,4 @@ doMatching cfg inst@(PMInstance numRvrs numProps _ _) = then [(i, j)] else [] in - sort pairs -- for prettiness + PMatching (sort pairs) -- for prettiness