From 36c978f7f1293e8dbd56ef719e677ea412852145 Mon Sep 17 00:00:00 2001 From: Leo Strobel Date: Fri, 8 Dec 2023 15:48:48 -0800 Subject: [PATCH] Bugfix. Division by zero in OD-Calibration --- src/main/kotlin/de/uniwuerzburg/omod/core/Omod.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/de/uniwuerzburg/omod/core/Omod.kt b/src/main/kotlin/de/uniwuerzburg/omod/core/Omod.kt index 11a8f54e..8ee7899e 100644 --- a/src/main/kotlin/de/uniwuerzburg/omod/core/Omod.kt +++ b/src/main/kotlin/de/uniwuerzburg/omod/core/Omod.kt @@ -315,7 +315,11 @@ class Omod( // Normalize val omodProb = omodWeights[odZone]!! / weightSumOMOD val odProb = odWeights[odZone]!! / weightSumOD - factors[odZone] = odProb / omodProb + factors[odZone] = if (omodProb <= 0) { // Can't calibrate with k-factor if OMOD prob is 0 % + 0.0 + } else { + odProb / omodProb + } } return Pair(activity, factors) } @@ -367,10 +371,15 @@ class Omod( } else { for (destOdZone in originOdZone.destinations.map { it.first }) { // Normalize - val gamgProb = omodWeights[destOdZone]!! / weightSumOMOD + val omodProb = omodWeights[destOdZone]!! / weightSumOMOD val odProb = odWeights[destOdZone]!! / weightSumOD - factors[Pair(originOdZone, destOdZone)] = odProb / gamgProb + // Can't calibrate with k-factor if OMOD prob is 0 % + factors[Pair(originOdZone, destOdZone)] = if (omodProb <= 0) { + 0.0 + } else { + odProb / omodProb + } } } }