From 317de0c8499999e5e29ab4ae62c485d2318c6dcf Mon Sep 17 00:00:00 2001 From: Finkelman Date: Fri, 4 May 2018 09:30:44 -0400 Subject: [PATCH] fix numeric overflow fix non-convergence in tests --- urbansim/urbanchoice/mnl.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/urbansim/urbanchoice/mnl.py b/urbansim/urbanchoice/mnl.py index 41e06385..5459246e 100644 --- a/urbansim/urbanchoice/mnl.py +++ b/urbansim/urbanchoice/mnl.py @@ -35,6 +35,10 @@ def mnl_probs(data, beta, numalts): raise Exception("Number of alternatives is zero") utilities.reshape(numalts, utilities.size() // numalts) + # https://stats.stackexchange.com/questions/304758/softmax-overflow + if clamp: + utilities.mat -= utilities.mat.max() + exponentiated_utility = utilities.exp(inplace=True) if clamp: exponentiated_utility.inftoval(1e20)