Skip to content

Commit c26ee4f

Browse files
committed
better stability
1 parent fd1ec69 commit c26ee4f

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/optimizer.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,11 @@ struct MEigen
9797
end
9898
function MEigen(m)
9999
e = eigen(Symmetric(m))
100-
if e.values[1] < 0
101-
e.values .-= 1.1 * e.values[1]
100+
if e.values[1] < 1e-16
101+
MEigen(m + 1e-15I)
102+
else
103+
MEigen(m, e, sqrt.(e.values))
102104
end
103-
MEigen(m, e, sqrt.(e.values))
104105
end
105106
function Covariance(n, μeff;
106107
c = default_cc(n, μeff),
@@ -129,7 +130,7 @@ function update!(c::Covariance, m, y, perm, w, h)
129130
w == 0 && continue
130131
v = y[:, j]
131132
if w < 0
132-
w *= length(v) / (maha_norm(c, v) + 1e-9)^2
133+
w *= length(v) / maha_norm(c, v)^2
133134
end
134135
BLAS.syr!('U', w, v, c.C.mat)
135136
end

0 commit comments

Comments
 (0)