From 13b60278454c8f96f4b76a4728c861eda5fc6296 Mon Sep 17 00:00:00 2001 From: napinoco <36883337+napinoco@users.noreply.github.com> Date: Tue, 1 Jul 2025 00:15:24 +0900 Subject: [PATCH 1/4] Fix a bug of SDPT3soln_SEDUMIsoln for non SDP --- Solver/SDPT3soln_SEDUMIsoln.m | 1 + 1 file changed, 1 insertion(+) diff --git a/Solver/SDPT3soln_SEDUMIsoln.m b/Solver/SDPT3soln_SEDUMIsoln.m index bffd9cf..afbcccd 100755 --- a/Solver/SDPT3soln_SEDUMIsoln.m +++ b/Solver/SDPT3soln_SEDUMIsoln.m @@ -63,6 +63,7 @@ %% extract semidefinite cone blk %% per = []; +sblk = []; len = 0; for p = 1:size(blk,1) pblk = blk(p,:); From 69a422ce77641b8d2525b7a2dc60a282717d2364 Mon Sep 17 00:00:00 2001 From: napinoco <36883337+napinoco@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:10:00 +0900 Subject: [PATCH 2/4] Use Bi-CGSTAB in the predictor step when use_LU is enabled --- Solver/linsysolve.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Solver/linsysolve.m b/Solver/linsysolve.m index bcb7822..9836399 100755 --- a/Solver/linsysolve.m +++ b/Solver/linsysolve.m @@ -217,8 +217,8 @@ L.Lt = L.L'; end if (solvesys) - [xx,resnrm,solve_ok] = symqmr(coeff,rhs,L,[],[],printlevel); - %%[xx,resnrm,solve_ok] = mybicgstab(coeff,rhs,L,[],[],printlevel); + %%[xx,resnrm,solve_ok] = symqmr(coeff,rhs,L,[],[],printlevel); + [xx,resnrm,solve_ok] = mybicgstab(coeff,rhs,L,[],[],printlevel); if (solve_ok<=0) && (printlevel) fprintf('\n warning: bicgstab fails: %3.1f,',solve_ok); end From 0f077cfbc3bb95be38c05a9ff081c4c19d267457 Mon Sep 17 00:00:00 2001 From: napinoco <36883337+napinoco@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:13:17 +0900 Subject: [PATCH 3/4] Fix bug in dual barrier function for second-order cone --- Solver/blkbarrier.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solver/blkbarrier.m b/Solver/blkbarrier.m index ca50a50..43f43a2 100755 --- a/Solver/blkbarrier.m +++ b/Solver/blkbarrier.m @@ -32,7 +32,7 @@ gamX = sqrt(qops(pblk,X{p},X{p},2)); gamZ = sqrt(qops(pblk,Z{p},Z{p},2)); tmp(1) = -sum(vpsub.*log(gamX(idx))); - tmp(2) = sum(vpsub.*log(gamZ(idx)) + vpsub); + tmp(2) = sum(vpsub.*log(gamZ(idx)) +vpsub.*(1-log(vpsub))); elseif strcmp(pblk{1},'l') logX = log(X{p}); logZ = log(Z{p}); tmp(1) = -sum(vpsub.*logX(idx)); From 3fcd406d3e2944a6ca38d5b4b7196f86c9b2caa3 Mon Sep 17 00:00:00 2001 From: napinoco <36883337+napinoco@users.noreply.github.com> Date: Thu, 3 Jul 2025 22:16:27 +0900 Subject: [PATCH 4/4] Fix bug in dual barrier function for second-order cone --- Solver/blkbarrier.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solver/blkbarrier.m b/Solver/blkbarrier.m index 43f43a2..714c498 100755 --- a/Solver/blkbarrier.m +++ b/Solver/blkbarrier.m @@ -32,7 +32,7 @@ gamX = sqrt(qops(pblk,X{p},X{p},2)); gamZ = sqrt(qops(pblk,Z{p},Z{p},2)); tmp(1) = -sum(vpsub.*log(gamX(idx))); - tmp(2) = sum(vpsub.*log(gamZ(idx)) +vpsub.*(1-log(vpsub))); + tmp(2) = sum(vpsub.*log(gamZ(idx)) + vpsub.*(1-log(vpsub))); elseif strcmp(pblk{1},'l') logX = log(X{p}); logZ = log(Z{p}); tmp(1) = -sum(vpsub.*logX(idx));