From 3880018e1244a17f626f907e9607c5f3eaca8dc0 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Mon, 4 Apr 2022 12:59:40 -0500 Subject: [PATCH 1/5] Debug test failures --- src/RegisterOptimize.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RegisterOptimize.jl b/src/RegisterOptimize.jl index 166dbf0..250e06f 100644 --- a/src/RegisterOptimize.jl +++ b/src/RegisterOptimize.jl @@ -100,8 +100,8 @@ function optimize_rigid(fixed, moving, A::AffineMap, maxshift, MathProgBase.optimize!(m) stat = MathProgBase.status(m) - stat == :Optimal || @warn("Solution was not optimal") p = MathProgBase.getsolution(m) + stat == :Optimal || (@warn("Solution was not optimal"); @show p) fval = MathProgBase.getobjval(m) p2rigid(p, SD), fval From 9a0afe6d4683ca71b9739c24456894a75c6ee4c1 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Mon, 4 Apr 2022 15:42:22 -0500 Subject: [PATCH 2/5] Annot more --- src/RegisterOptimize.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/RegisterOptimize.jl b/src/RegisterOptimize.jl index 250e06f..0101d99 100644 --- a/src/RegisterOptimize.jl +++ b/src/RegisterOptimize.jl @@ -101,7 +101,7 @@ function optimize_rigid(fixed, moving, A::AffineMap, maxshift, stat = MathProgBase.status(m) p = MathProgBase.getsolution(m) - stat == :Optimal || (@warn("Solution was not optimal"); @show p) + stat == :Optimal || (@warn("Solution was not optimal 1"); @show p) fval = MathProgBase.getobjval(m) p2rigid(p, SD), fval @@ -475,8 +475,9 @@ function find_opt(P::AffineQHessian{AP,M,N,Φ}, b, maxshift, x0) where {AP,M,N, MathProgBase.setwarmstart!(m, x0) MathProgBase.optimize!(m) stat = MathProgBase.status(m) - stat == :Optimal || @warn("Solution was not optimal") - MathProgBase.getsolution(m) + p = MathProgBase.getsolution(m) + stat == :Optimal || (@warn("Solution was not optimal 2"); @show p) + return p end # We omit the constant term ∑_i cs[i]'*Qs[i]*cs[i], since it won't @@ -608,8 +609,8 @@ function _optimize!(objective, ϕ, dp, mmis, tol, print_level; kwargs...) MathProgBase.optimize!(m) stat = MathProgBase.status(m) - stat == :Optimal || @warn("Solution was not optimal") uopt = MathProgBase.getsolution(m) + stat == :Optimal || (@warn("Solution was not optimal 3"); @show uopt) fval = MathProgBase.getobjval(m) _copy!(ϕ, uopt) ϕ, fval, fval0 @@ -1164,8 +1165,8 @@ function fit_sigmoid(data, bottom, top, center, width) MathProgBase.optimize!(m) stat = MathProgBase.status(m) - stat == :Optimal || @warn("Solution was not optimal") x = MathProgBase.getsolution(m) + stat == :Optimal || (@warn("Solution was not optimal 4"); @show x) x[1], x[2], x[3], x[4], MathProgBase.getobjval(m) end From 60e4eb654c53273c55c1bbb3bd058609175ace27 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Mon, 4 Apr 2022 16:03:37 -0500 Subject: [PATCH 3/5] More info --- src/RegisterOptimize.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RegisterOptimize.jl b/src/RegisterOptimize.jl index 0101d99..adaaae7 100644 --- a/src/RegisterOptimize.jl +++ b/src/RegisterOptimize.jl @@ -610,7 +610,7 @@ function _optimize!(objective, ϕ, dp, mmis, tol, print_level; kwargs...) stat = MathProgBase.status(m) uopt = MathProgBase.getsolution(m) - stat == :Optimal || (@warn("Solution was not optimal 3"); @show uopt) + stat == :Optimal || (@warn("Solution was not optimal 3"); @show uvec uopt) fval = MathProgBase.getobjval(m) _copy!(ϕ, uopt) ϕ, fval, fval0 From 5dbeec89c080943e52a438ceb98a9a3bdaeb736d Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Mon, 4 Apr 2022 16:32:29 -0500 Subject: [PATCH 4/5] Print before --- src/RegisterOptimize.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/RegisterOptimize.jl b/src/RegisterOptimize.jl index adaaae7..f78d9b1 100644 --- a/src/RegisterOptimize.jl +++ b/src/RegisterOptimize.jl @@ -605,12 +605,13 @@ function _optimize!(objective, ϕ, dp, mmis, tol, print_level; kwargs...) MathProgBase.loadproblem!(m, length(uvec), 0, -ub, ub, T[], T[], :Min, objective) MathProgBase.setwarmstart!(m, uvec) fval0 = MathProgBase.eval_f(objective, uvec) + @show uvec isfinite(fval0) || error("Initial value must be finite") MathProgBase.optimize!(m) stat = MathProgBase.status(m) uopt = MathProgBase.getsolution(m) - stat == :Optimal || (@warn("Solution was not optimal 3"); @show uvec uopt) + stat == :Optimal || (@warn("Solution was not optimal 3"); @show uopt) fval = MathProgBase.getobjval(m) _copy!(ϕ, uopt) ϕ, fval, fval0 From 008d902f3b123517c3fcfcc8539f3106081e133e Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Mon, 4 Apr 2022 16:42:41 -0500 Subject: [PATCH 5/5] Also show fval --- src/RegisterOptimize.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RegisterOptimize.jl b/src/RegisterOptimize.jl index f78d9b1..2379ce8 100644 --- a/src/RegisterOptimize.jl +++ b/src/RegisterOptimize.jl @@ -605,7 +605,7 @@ function _optimize!(objective, ϕ, dp, mmis, tol, print_level; kwargs...) MathProgBase.loadproblem!(m, length(uvec), 0, -ub, ub, T[], T[], :Min, objective) MathProgBase.setwarmstart!(m, uvec) fval0 = MathProgBase.eval_f(objective, uvec) - @show uvec + @show uvec fval0 isfinite(fval0) || error("Initial value must be finite") MathProgBase.optimize!(m)