totalRelativeLoad = foldl (+) 0 (map (rloadA !) [0 .. numRvrs - 1])
-- floor goes best with loadTolerance 2
targetLoad i = floor (widenInteger totalReviews * (rloadA ! i) / totalRelativeLoad) - 1
- -- A...H refer to idea book p.429
+ -- Edge groups A through H are indicated in the figure in the paper.
edgesABC = do
i <- [0 .. numRvrs - 1]
let tl = targetLoad i
let edgeH1 = (propNode j 1, sink, REdge undefined (numReviews - numPCReviews) 0)
-- "Designated PC" with knowledgeable bonus
let edgeGFirst = (propNode j 6, propNode j 3, REdge undefined 1 (-(knowledgeableBonus cfg)))
- let edgeGRest = (propNode j 6, propNode j 3, REdge undefined (numPCReviews - 2) 0)
- let edgeH = (propNode j 3, sink, REdge undefined (numPCReviews - 1) 0)
+ let edgeGRest = (propNode j 6, propNode j 3, REdge undefined (numPCReviews - 1) 0)
+ let edgeH = (propNode j 3, sink, REdge undefined (numPCReviews) 0)
edgesP ++ edgesR ++ [edgeF, edgeH1, edgeGFirst, edgeGRest, edgeH]
theNodes = [(x, ()) | x <- [0 .. numNodes - 1]]
-- Index the non-D edges