SPEC
SPEC copied to clipboard
Conjugate gradient for SPEC
The request for using the conjugate gradient (CG) method for minimization was raised recently. Here is what I posted at FOCUS repository about my limited experience of using CG. You can have a look and take it as a reference.
The current nonlinear conjugate gradient (CG) method was written by myself based on the strategy of Yuan & Dai. The line search subroutine is also written by myself based on Numerical Optimization. It is often observed un-converged line search.
In the develop
branch, FOCUS is linked to another well-written library, CG-descent. If you want to use the old version CG, just compile with PFLAGS='-D oldcg'
.
Here is a test using the rotating ellipse. Solid lines are the CG-descent
, and dashed lines the old CG.
-
Convergence over iterations.
-
Convergence over wall-time.
-
Poincare plots from
CG-descent
-
Poincare plots from
old CG
The testing results show that the CG-descent
is much faster in speed. My guess is that I didn't implement a very good line search subroutine. So I will encourage everyone to test the CG-descent
and will merge it into master
after some time.
git fetch
git checkout develop
make clean; make xfocus; make dfocus