From 412ac91a614ce7c373938a2d45eb6bc78cca9ea6 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Wed, 21 Oct 2015 21:38:31 +0000 Subject: [PATCH] Bug fix in multi-objective value iteration: non-convergence when one objective has weight 0. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10806 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/sparse/PS_NondetMultiObj.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prism/src/sparse/PS_NondetMultiObj.cc b/prism/src/sparse/PS_NondetMultiObj.cc index 826f78cf..02e22c78 100644 --- a/prism/src/sparse/PS_NondetMultiObj.cc +++ b/prism/src/sparse/PS_NondetMultiObj.cc @@ -471,7 +471,7 @@ JNIEXPORT jdoubleArray __jlongpointer JNICALL Java_sparse_PrismSparse_PS_1Nondet doneBeforeBounded = true; for (i = 0; i < n; i++) { for (int it = 0; it < lenProb + lenRew; it++) { - if (it != ignoredWeight && fabs(psoln2[it][i] - psoln[it][i]) > term_crit_param) { + if (it != ignoredWeight && weights[it] > 0 && fabs(psoln2[it][i] - psoln[it][i]) > term_crit_param) { done = false; doneBeforeBounded = false; goto end_switch; @@ -493,7 +493,7 @@ JNIEXPORT jdoubleArray __jlongpointer JNICALL Java_sparse_PrismSparse_PS_1Nondet doneBeforeBounded = true; for (i = 0; i < n; i++) { for (int it = 0; it < lenProb + lenRew; it++) { - if (it != ignoredWeight && fabs(psoln2[it][i] - psoln[it][i])/fabs(psoln2[it][i]) > term_crit_param) { + if (it != ignoredWeight && weights[it] > 0 && fabs(psoln2[it][i] - psoln[it][i])/fabs(psoln2[it][i]) > term_crit_param) { done = false; doneBeforeBounded = false; goto end_switch;