-
Notifications
You must be signed in to change notification settings - Fork 307
Description
Going through the code, I believe that there is a discrepancy between the description of the logic in the implementation paper in section 3.2 and the actual code. In the implementation paper, iterations in which no full-length step can be taken are counted, and then either of two heuristics are activated:
- the filter is reset if the current constraint violation does not exceed the maximum constraint violation by a factor of ten (and the maximum constraint violation is decreased)
- OR the watchdog procedure is triggered
Going through the code, these do not seem to be mutually exclusive, and the mechanisms that trigger them do appear to be separate and also not exactly as described in the paper. If I understand them correctly, then in IpBacktrackingLineSearch the watchdog
| if( watchdog_shortened_iter_trigger_ > 0 && !in_watchdog_ && !goto_resto && !tiny_step && !in_soft_resto_phase_ |
is triggered (excluding certain other phases) when watchdog_shortened_iter_ exceeds some number, and this counter is incremented whenever a shorter step size is taken (in particular for every backtracking step), here
| watchdog_shortened_iter_++; |
rather than whenever the full step size
The filter reset trigger appears to have been decoupled from this counter, and in IpFilterLSAcceptor, count_successive_filter_rejections_ appears to also not be special-cased to apply only in the case of not yet having backtracked
Ipopt/src/Algorithm/IpFilterLSAcceptor.cpp
Line 413 in cf09422
| count_successive_filter_rejections_++; |
I might miss where the coupling of these two heuristics occurs. If they can be triggered independently of one another by a succession of backtracking steps, then this would be valuable information for us to have. If so, for what reason was the behaviour altered here? Did you find it beneficial to trigger these heuristics more frequently? Do you believe the current approach to be more theoretically sound, given that it avoids special-casing the full-length step after factorisation?