fix: use extraUsers instead of extraCapacity for unrestricted pseudo-capacity
This commit is contained in:
parent
b5ee9f2c05
commit
2be9d76af2
@ -433,14 +433,6 @@ examAutoOccurrence (hash -> seed) rule ExamAutoOccurrenceConfig{..} occurrences
|
||||
|
||||
restrictedSpace :: Natural
|
||||
restrictedSpace = sum restrictedLengths
|
||||
|
||||
extraCapacity :: Natural
|
||||
extraCapacity
|
||||
| restrictedSpace > numUnassignedUsers = restrictedSpace - numUnassignedUsers
|
||||
| otherwise = 0
|
||||
where
|
||||
numUnassignedUsers :: Natural
|
||||
numUnassignedUsers = sum $ view _2 <$> wordLengths
|
||||
|
||||
longestLine :: Natural
|
||||
-- ^ For scaling costs
|
||||
@ -545,9 +537,18 @@ examAutoOccurrence (hash -> seed) rule ExamAutoOccurrenceConfig{..} occurrences
|
||||
optimumRatio :: Rational
|
||||
optimumRatio = ((%) `on` fromIntegral . max 1 . sum) (map (view _2) wordLengths) restrictedLengths
|
||||
|
||||
numUnassignedUsers :: Natural
|
||||
numUnassignedUsers = sum $ view _2 <$> wordLengths
|
||||
|
||||
extraUsers :: Natural
|
||||
extraUsers
|
||||
| numUnassignedUsers > restrictedSpace = numUnassignedUsers - restrictedSpace
|
||||
| otherwise = 0
|
||||
|
||||
widthCost :: Maybe lineId -> ExamOccurrenceCapacity -> Natural -> Extended Rational
|
||||
widthCost l Unrestricted w
|
||||
= Finite ((fromIntegral w - fromIntegral extraCapacity) % List.genericLength unrestrictedLines
|
||||
= Finite (fromIntegral w
|
||||
- (fromIntegral extraUsers % List.genericLength unrestrictedLines)
|
||||
- nudgeRatio * fromIntegral longestLine)^2
|
||||
where
|
||||
nudgeRatio :: Rational
|
||||
|
||||
Loading…
Reference in New Issue
Block a user