Apply a steeper join function for the piecewise-linear harvest control rule#687
Merged
iantaylor-NOAA merged 2 commits intomainfrom Jul 15, 2025
Merged
Apply a steeper join function for the piecewise-linear harvest control rule#687iantaylor-NOAA merged 2 commits intomainfrom
iantaylor-NOAA merged 2 commits intomainfrom
Conversation
Rick-Methot-NOAA
approved these changes
Jul 15, 2025
Collaborator
Rick-Methot-NOAA
left a comment
There was a problem hiding this comment.
approved. 100 might be but overkill so be watchful for numeric issues
|
Here are the successful executable builds from your PR: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Concisely describe what has been changed/addressed in the pull request.
The join function creating differentiable values for the piecewise-linear harvest control rule was leading to OFL*buffer != ACL, with differences in projected catch limits of 1-2 tons.
Catch limits are the subject of lots of interest, it's important to have the calculations match exactly. This may only impact petrale sole where the projection was occurring very close to the break point in the HCR. I worked around the problem previously by using fixed catches in the forecast file, but a new catch-only projection would benefit from this change to SS3.
Resolves issue #485
What tests have been done?
I tested replacing the multiplier 10 in the join function with 100 and 1000. Both produced identical results with OFL*buffer == ACL (identical within the accuracy of the precision of the reported values). Therefore, this PR uses 100 as the multiplier.
This changes shouldn't have a significant impact on model performance because the HCR is only used in projections and therefore doesn't impact the fit to any data.
Model files are attached to issue #485.
Is there an input change for users to Stock Synthesis?
[x] No, there was no input change.
Additional information (optional).
This doesn't solve the larger issue of replacing all the join functions throughout the SS3 code with a single function, but it's not clear how much benefit that would provide.