From d18078afc441f4c56ca62298a7331fe407b3e129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20L=C3=B6fberg?= Date: Fri, 1 Dec 2023 10:12:40 +0100 Subject: [PATCH] Fixes #1350 mpMILP with parametric cost fails --- modules/parametric/mpt_project_back_equality.m | 4 ++++ modules/parametric/mpt_project_on_equality.m | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/parametric/mpt_project_back_equality.m b/modules/parametric/mpt_project_back_equality.m index d0390c91..6d516aa7 100644 --- a/modules/parametric/mpt_project_back_equality.m +++ b/modules/parametric/mpt_project_back_equality.m @@ -27,6 +27,10 @@ for i=1:length(Fi) details.Bi{i} = OriginalMatrices.H*Fi{i} + OriginalMatrices.F; details.Ci{i} = OriginalMatrices.H*Gi{i}; + if isfield(OriginalMatrices,'D') + % details.Ai{i} = Fi{i}'*OriginalMatrices.D; + details.Bi{i} = details.Bi{i} + Gi{i}'*OriginalMatrices.D; + end end end end diff --git a/modules/parametric/mpt_project_on_equality.m b/modules/parametric/mpt_project_on_equality.m index 925774cb..06573cec 100644 --- a/modules/parametric/mpt_project_on_equality.m +++ b/modules/parametric/mpt_project_on_equality.m @@ -80,7 +80,8 @@ Matrices.H = M.H*S1; if isfield(Matrices,'D') % Latest MPT does not fullify D - Matrices.D = full((Matrices.D'*S1)'); + Matrices.Cx = full(Matrices.Cx + S3'*Matrices.D); + Matrices.D = full((Matrices.D'*S1)'); end end