Corrected a bug leading to infinite loops with flat objectives #1542
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As reported in issue #1508 , the use of '<=' operator to determine the best step size in combination with the rule used to grow the step sizes across iterations leads to an infinite loop when the objective function is flat along the descent direction:
The condition line 347 leads to select the greatest step size for equal objective values:
The condition line 377 leads to grow the list of tested step sizes whenever the best selected step size was the last in the list:
Obviously when the function remains unchanged, the step sizes will grow indefinitely. Issue #1508 shows a simple sample code that triggers the bug.
Two changes are proposed: