The Fortran 77 version of UOBYQA encounters infinite cyclings very often if `PRIMA_REAL_PRECISION` is 32
zaikunzhang opened this issue · 0 comments
The Fortran 77 version of UOBYQA encounters infinite cyclings very often if PRIMA_REAL_PRECISION
is 32. This has been observed on the following CUTEst problems:
BEALE
BENNETT5LS
BOXBODLS
BROWNBS
CUBE
EXP2
HIELOW
HIMMELBB
JUDGE
S308
PRICE4
There do exist problems where the solver works, e.g., HILBERTA
and PRICE3
, but they seem to be rare among problems under 3 dimensions.
This is observed via the workflow https://github.com/fortlab/prima/actions/workflows/profile_uobyqa_small_sq.yml with 2394f47 . To reproduce it locally, do the following in a MATLAB command window.
! git clone https://github.com/libprima/prima.git
cd('prima');
! git checkout 2337c68
options.classical = true; options.single = true;
setup('uobyqa', options);
problem = macup('beale'); % This needs MatCUTEst at https://github.com/matcutest/matcutest_compiled
problem.options.classical = true; problem.options.precision = 'single';
uobyqa(problem);
This will drive UOBYQA into an infinite cycling.
Surely, this is not a concern for us, because it happens only to the original Fortran 77 implementation. Nevertheless, it is still interesting to investigate the reason underneath, to further understand the shortcomings of the original Fortran 77 implementation.