Matt McCutchen's Web Site
/
match
/
match.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a minimal readme for the program.
[match/match.git]
/
program
/
ProposalMatcher.hs
diff --git
a/program/ProposalMatcher.hs
b/program/ProposalMatcher.hs
index
96c2c32
..
dcc757a
100644
(file)
--- 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])
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]
-- 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 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]
[(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 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
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
then [(i, j)]
else []
in
-
sort pairs
-- for prettiness
+
PMatching (sort pairs)
-- for prettiness