Anonymous | Login | Signup for a new account | 2024-11-22 09:53 MSK |
Main | My View | View Issues | Change Log | Roadmap | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||
0000822 | [ALGLIB] Optimization | minor | have not tried | 2018-08-20 17:49 | 2018-12-27 18:12 | ||
Reporter | SergeyB | View Status | public | ||||
Assigned To | SergeyB | ||||||
Priority | normal | Resolution | fixed | ||||
Status | resolved | Product Version | |||||
Summary | 0000822: FIXED: gradient checking functionality in nonlinear optimizers does not handle scaling properly | ||||||
Description |
=== ORIGINAL REPORT BY USER === Problem: When I run minlbfgssetgradientcheck(state, 1e-4) to verify that the numerical gradient is accurate enough, I only get a good result when the scale is set to 1 for each variable. If I first set the scale the way I think is desirable using minlbfgssetscale(state, s), I always get the -7 status. My hypothesis is that the gradient check does not take the scale into account properly. More specifically, I think that the line if( !derivativecheck(state->fm1, state->fp1, state->fm2, state->fp2, state->f, state->g.ptr.p_double[i], 2*state->teststep, _state) ) should be: if( !derivativecheck(state->fm1, state->fp1, state->fm2, state->fp2, state->f, state->g.ptr.p_double[i], 2*state->teststep * state->s.ptr.p_double[i], _state) ) to take the scaling properly into account. === SOLUTION === Switched everything to new OptGuard API which has this error fixed. |
||||||
Additional Information | |||||||
Programming language | Unspecified | ||||||
Attached Files | |||||||
|
There are no notes attached to this issue. |
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |