From b96f9ba1fa97d6a3ea70628f1bcec2a770ae6b67 Mon Sep 17 00:00:00 2001 From: Mark Kattenbelt Date: Thu, 10 Jan 2008 16:31:31 +0000 Subject: [PATCH] Fix: no updates with probability 0 in update list simulator git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@553 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/simulator/simreasoning.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/prism/src/simulator/simreasoning.cc b/prism/src/simulator/simreasoning.cc index f33c5b84..64690e4e 100644 --- a/prism/src/simulator/simreasoning.cc +++ b/prism/src/simulator/simreasoning.cc @@ -471,8 +471,12 @@ void Calculate_Updates(int* variables) //cout << "should be actually adding it" << endl; upd = comm->updates[k]; - Get_Update(no_updates++)->Set - (upd->probability->EvaluateDouble(variables),(count_distributions-1),-1,i,upd); + // Added test for positive probability + if (upd->probability->EvaluateDouble(variables) > 0) + { + Get_Update(no_updates++)->Set + (upd->probability->EvaluateDouble(variables),(count_distributions-1),-1,i,upd); + } } } } @@ -488,8 +492,12 @@ void Calculate_Updates(int* variables) { //cout << "should be adding a synchronous update" << endl; upd = comm->updates[k]; - Get_Update(no_updates++)->Set - (upd->probability->EvaluateDouble(variables),(count_distributions-1),i,-1,upd); + + if (upd->probability->EvaluateDouble(variables) > 0) + { + Get_Update(no_updates++)->Set + (upd->probability->EvaluateDouble(variables),(count_distributions-1),i,-1,upd); + } } } } @@ -506,7 +514,6 @@ void Calculate_Updates(int* variables) Get_Update(i)->Normalise(no_distributions); } no_distributions = 1; - } }