-
Notifications
You must be signed in to change notification settings - Fork 841
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature multi-objective #292
Merged
Merged
Conversation
This file contains 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
…ective2 Conflicts: SU2_CFD/include/solver_structure.inl SU2_CFD/src/iteration_structure.cpp SU2_CFD/src/solver_direct_mean.cpp
…s (previously used whether isothermal wall existed - which caused issues if isothermal marker was not on the head node in parallel computations)
…longer needs to be the first in the list of objectives
…updated with new solution files
…p branch restart files, may update later on for more reasonable residiual values
hlkline
force-pushed
the
feature_MultiObjAdj
branch
from
July 28, 2016 03:26
c8feb54
to
38f55df
Compare
As we spoke about yesterday, just let me know when you've finished adding things to this PR, Heather. Code looks good to me otherwise. |
Thanks Tom, will do. |
Conflicts: Common/src/config_structure.cpp
Aok. Looks good to me. Merging this in now before the pyWrapper PR. |
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.
This pull requests adds a capability for multi-objective adjoint evaluation.
In order to use this capability, a matching number of objectives and surface markers on which to evaluate those objectives, as well as weighting values for each objective must be set. This also works with the python optimization tools, where a flag (COMBINE_OBJECTIVE) determines whether the gradients will be evaluated with a single combined adjoint evaluation or with separate, sequential evaluations.
Option Syntax:
For use with shape_optimization.py:
OPT_OBJECTIVE = DRAG1.0; LIFT2.0
COMBINE_OBJECTIVE = YES
For use with continuous_adjoint, SU2_CFD, etc, or automatically set by the shape_optimization script:
OBJECTIVE = DRAG, LIFT
OBJECTIVE_WEIGHT = 1.0, -2.0
(Note: opt_objective is still effected by automatically-applied signs - that is, whatever scale is applied to lift will be *-1 to make it a maximization problem. User can now reverse that sign if desired.)
In either case, MARKER_MONITORING =( drag_surface, lift_surface)
If only one surface is specified, it will automatically be the surface for all objectives listed. Different objectives on different surfaces can also be applied, using lists of the same length.
This change required moving some scaling terms - which means that in one of the test cases the values changed because a scaling factor is moved within the boundary conditions rather than applied after the fact (the final gradient result is the same). In addition to allowing the adjoint for a weighted sum of objectives, this may theoretically allow for applying a numerically convenient scaling factor in the future - ie, in cases where the boundary terms are either too large or too small and cause numerical cancellation errors.
Currently limited to finite difference and continuous adjoint - discrete adjoint coming soon in a separate pull request.
Also coming soon: an additional test case to add this capability to the regressions.