Objective Sensitivity
Pull Request Summary
Title: Objective Sensitivity
Description: This pull request implements functionality for obtaining the objective sensitivity with respect to parameters and the equivalent for reverse mode in the DiffOpt.jl package.
- Additions: 335 lines
- Deletions: 35 lines
- Changed Files: 7
- Commits: 11
- Comments: 1
- Review Comments: 4
- State: Open
- Mergeable: Yes (unstable)
Usage Example
# Always a good practice to clear previously set sensitivities
DiffOpt.empty_input_sensitivities!(model)
MOI.set(model, DiffOpt.ForwardConstraintSet(), ParameterRef(p), Parameter(3.0))
MOI.set(model, DiffOpt.ForwardConstraintSet(), ParameterRef(p_c), Parameter(3.0))
DiffOpt.forward_differentiate!(model)
MOI.get(model, DiffOpt.ForwardObjectiveSensitivity())
In the backward mode, we can calculate the parameter perturbation with respect to the objective perturbation:
# Always a good practice to clear previously set sensitivities
DiffOpt.empty_input_sensitivities!(model)
MOI.set(
model,
DiffOpt.ReverseObjectiveSensitivity(),
0.1,
)
DiffOpt.reverse_differentiate!(model)
MOI.get(model, DiffOpt.ReverseConstraintSet(), ParameterRef(p))
Codecov Report
:x: Patch coverage is 88.88889% with 8 lines in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 89.18%. Comparing base (93f058d) to head (a15f6f6).
:warning: Report is 3 commits behind head on master.
| Files with missing lines | Patch % | Lines |
|---|---|---|
| src/NonLinearProgram/NonLinearProgram.jl | 83.33% | 6 Missing :warning: |
| src/diff_opt.jl | 85.71% | 1 Missing :warning: |
| src/moi_wrapper.jl | 88.88% | 1 Missing :warning: |
Additional details and impacted files
@@ Coverage Diff @@
## master #282 +/- ##
==========================================
+ Coverage 89.08% 89.18% +0.10%
==========================================
Files 15 15
Lines 1969 2006 +37
==========================================
+ Hits 1754 1789 +35
- Misses 215 217 +2
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
closing in favor of https://github.com/jump-dev/DiffOpt.jl/pull/303