Skip to content
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

POEM_096 Research and Pseudocode #196

Closed
wants to merge 8 commits into from
Closed

Conversation

jsrogan
Copy link

@jsrogan jsrogan commented Apr 26, 2024

We have included an active POEM.md as well as our pseudocode of our analysis of the problem so far

Copy link
Contributor

@robfalck robfalck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A feasible starting point in this case means taking the constraints, about which we already know, and forming some scalar constraint violation, and then using this as a "temporary" objective function. In this initial optimization, we use this temporary objective, without any of the user defined constraints or objectives, and just minimize the constraint violation. This gets us to a solution that should be feasible. From this point, we can initiate the second optimization with the full constraint vector and user-defined objective.

I'm closing this PR as it's not really hitting the mark on what we need out of a POEM 096 implementation.



## Motivation
Considering the fact that private optimization libraries such as SNOPT offer the ability to find a feasible starting point, it makes sense that OPENMdao should also have that functionality. Aditionally OPENMdao's current components do not calculate reverse derivatives, so the implementation of this is also necessary (and still ongoing).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenMDAO computes partials at the component level, either through specification of a jacobian matrix - or through a "matrix-free" API (the component.compute_jacvec_prod method) in it will compute a forward JVP or a reverse VJP. The framework then assembles these calculations into a graph for efficient computation and assembly of the total derivatives. The notion of reverse derivatives just aren't relevant to the implementation of a feasible starting point.

@robfalck robfalck closed this May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants