}
randomTopic cfg = withWeight $
- map (\i -> (numAsWt (i+1) ** topicZipfExponent cfg, return i))
+ map (\i -> (widenInteger (i+1) ** topicZipfExponent cfg, return i))
[0 .. numTopics cfg - 1]
randomProposalInfo cfg = do
PTopic1 jt1 -> expertnessToPref (iTE ! jt1)
PTopic2 jt1 jt2 -> (expertnessToPref (iTE ! jt1)
+ expertnessToPref (iTE ! jt2)) / 2
- in if isConflict then 40 else topicPref * jD - 4)
- return $ PMInstance numRvrs numProps loadA prefA
+ -- Use a formula designed for the old pref scale with the new.
+ in if isConflict then -100 else prefOldToNew (topicPref * jD - 4))
+ let expA = funcArray ((0, 0), (numRvrs-1, numProps-1)) (\(i,j) ->
+ let
+ ReviewerInfo iTE iC = reviewerInfos ! i
+ ProposalInfo jT jD = proposalInfos ! j
+ isConflict = elem j iC
+ topicExp = case jT of
+ PTopic1 jt1 -> 1 + (iTE ! jt1)
+ PTopic2 jt1 jt2 -> 1 + ((iTE ! jt1)
+ + (iTE ! jt2)) / 2
+ in topicExp)
+ -- defaults
+ let fixA = constArray ((0,0), (numRvrs-1,numProps-1)) False
+ let pnrA = constArray (0, numProps-1) (reviewsEachProposal cfg)
+ return $ PMInstance numRvrs numProps loadA prefA expA fixA pnrA