sandialabs / WecOptTool

WEC Design Optimization Toolbox
https://sandialabs.github.io/WecOptTool/
GNU General Public License v3.0
13 stars 22 forks source link

ENHANCEMENT: Implemented cyipopt minimize_ipopt #342

Open RageTechDev opened 5 months ago

RageTechDev commented 5 months ago

Description

Alternative optimization algorithm implemented: cyipopt minimize_ipopt #12

Type of PR

Checklist for PR

RageTechDev commented 4 months ago

I made another commit removing the comments regarding the callback implementation no longer being used and the unnecessary import. I also noticed that there were no changes made to the tutorials, the only thing I did was test two of them and make sure they worked. After that I restarted the Kernel and cleared all outputs, it might be detecting that as a change?

jtgrasb commented 4 months ago

Thanks for making those updates. The tutorials can be a bit finnicky to work with for these PRs. It looks like the outputs are still recorded in the PR here, so you should clear all outputs again and then go to edit notebook metadata and make sure the display name and version are the same as the default. The goal here is that neither of the tutorials show up in the Files Changed section on this PR.

jorgeypcb commented 4 months ago

Awesome, thanks for the heads up. It should be correct now. Not showing changes to the tutorials!

coveralls commented 4 months ago

Pull Request Test Coverage Report for Build 9130293491

Warning: This coverage report may be inaccurate.

This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

Details


Files with Coverage Reduction New Missed Lines %
wecopttool/core.py 11 92.55%
<!-- Total: 11 -->
Totals Coverage Status
Change from base Build 9018937250: -0.09%
Covered Lines: 2752
Relevant Lines: 2911

💛 - Coveralls
ryancoe commented 4 months ago

@jtgrasb - Please take a closer at this and compare scipy.minimize with cyipopt for case(s) where we struggle to get good solutions (e.g., when we need to tweak the scaling a lot and/or provide specific initial guess). @michaelcdevin - Please hold off on tagging v3.0 until we figure out how we're going to handle this.

jtgrasb commented 4 months ago

According to cyipopt's documentation, the following differences when compared to scipy.optimize.minimize(): "Differences compared to scipy.optimize.minimize() include:

When testing the tutorials side-by-side with scipy and cyipopt as currently implemented, there are no observable differences. The first difference stated above is not applied because we are still specifying 'SLSQP' as the solver method. If we leave the method section empty, we can leverage the interior point method, so this is worth exploring here.

Further differences may come with a shift to cyipopt's Problem Interface. The problem interface will require a restructuring of how the optimization problem is defined.