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

Add Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt #3331

Open
wants to merge 27 commits into
base: main
Choose a base branch
from

Conversation

ZedongPeng
Copy link
Contributor

Summary/Motivation:

This PR introduces the implementation of the Logic-Based Discrete Steepest Descent algorithm in GDPOpt.

The Logic-based Discrete-Steepest Descent Algorithm (LD-SDA) is a solution method for GDP problems involving ordered Boolean variables. The LD-SDA reformulates these ordered Boolean variables into integer decisions called external variables. The LD-SDA solves the reformulated GDP problem using a two-level decomposition approach where the upper-level subproblem determines external variable configurations. Subsequently, the remaining continuous and discrete variables are solved as a subproblem only involving those constraints relevant to the given external variable arrangement, effectively taking advantage of the structure of the GDP problem.

More details in the paper https://arxiv.org/abs/2405.05358 .

@emma58 @bernalde

Legal Acknowledgement

By contributing to this software project, I have read the contribution guide and agree to the following terms and conditions for my contribution:

  1. I agree my contributions are submitted under the BSD license.
  2. I represent I am authorized to make the contributions and grant the license. If my employer has rights to intellectual property that includes these contributions, I represent that I have received permission to make contributions and grant the required license on behalf of that employer.

Copy link

codecov bot commented Aug 5, 2024

Codecov Report

Attention: Patch coverage is 26.90355% with 144 lines in your changes missing coverage. Please review.

Project coverage is 88.37%. Comparing base (1ada528) to head (1144dc1).
Report is 746 commits behind head on main.

Files Patch % Lines
pyomo/contrib/gdpopt/ldsda.py 23.40% 144 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3331      +/-   ##
==========================================
- Coverage   88.50%   88.37%   -0.13%     
==========================================
  Files         868      869       +1     
  Lines       98418    98614     +196     
==========================================
+ Hits        87100    87154      +54     
- Misses      11318    11460     +142     
Flag Coverage Δ
linux 85.90% <26.90%> (-0.13%) ⬇️
osx 75.19% <26.90%> (-0.10%) ⬇️
other 86.40% <26.90%> (-0.12%) ⬇️
win 83.71% <26.90%> (-0.12%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@ZedongPeng
Copy link
Contributor Author

I will add tests to increase the code coverage.

@blnicho blnicho changed the title Add Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt [WIP] Add Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt Oct 1, 2024
@ZedongPeng
Copy link
Contributor Author

Hi @dovallev and @David-Linan,

This PR includes a general implementation of LDSDA. When you have some time, could you please review it? Thanks in advance!

@blnicho
Copy link
Member

blnicho commented Oct 29, 2024

@ZedongPeng is this ready for review now?

@blnicho blnicho changed the title [WIP] Add Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt Add Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt Nov 19, 2024
@emma58
Copy link
Contributor

emma58 commented Dec 10, 2024

@ZedongPeng could you please run black on this so we can see if other tests are passing?

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.

6 participants