From 2be9d76af2b3e9fd52284c639a4c3f6dc1c51779 Mon Sep 17 00:00:00 2001 From: Wolfgang Witt Date: Tue, 16 Mar 2021 13:21:25 +0100 Subject: [PATCH] fix: use extraUsers instead of extraCapacity for unrestricted pseudo-capacity --- src/Handler/Utils/Exam.hs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Handler/Utils/Exam.hs b/src/Handler/Utils/Exam.hs index dc5ef2656..c1f784c6d 100644 --- a/src/Handler/Utils/Exam.hs +++ b/src/Handler/Utils/Exam.hs @@ -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