Skip to content

Fix bug in initialization routines to return solve with bounded nlp#3991

Open
stephenscini wants to merge 11 commits into
Pyomo:mainfrom
stephenscini:initialization-devel
Open

Fix bug in initialization routines to return solve with bounded nlp#3991
stephenscini wants to merge 11 commits into
Pyomo:mainfrom
stephenscini:initialization-devel

Conversation

@stephenscini

@stephenscini stephenscini commented Jul 8, 2026

Copy link
Copy Markdown
Member

Fixes # .

Fixes issue in initialization routines where the model is run through nlp solver before bounds are removed.

Summary/Motivation:

Currently: Original variables are bounded in methods and then there is cleanup but the initial point from lp, pwl, and global approximations is not verified to work with nlp_solver

Changes proposed in this PR:

  • After each method "Finally: _cleanup()", run the original model again through the nlp solver and return that result.
  • Additional warning added for using the global solver without specifying a time limit.

AI-Use Disclosure

  • AI tools were NOT used during the preparation of this PR

or

  • AI tools contributed to the development of this PR

    • AI tools generated documentation (including the PR description/comments, code comments, and/or Sphinx documentation)
    • AI tools generated tests (baselines, examples, and/or code)
    • AI tools generated code (apart from tests)

    Review process (select ONE):

    • Rewritten: All AI-generated content was rewritten by me before being committed.
    • Reviewed/verified: I retained AI-generated content and verified it before committing. Verification included (as applicable):
      • Ran the code and fixed issues
      • Added and ran tests
      • Checked correctness/logic of code and tests
      • Checked for alignment with the contribution guide
      • Considered security implications
    • As-is: AI-generated content was commited directly to the repository

Notes for reviewers (optional):

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.

@stephenscini

Copy link
Copy Markdown
Member Author

@michaelbynum Please review when available.

Comment thread pyomo/devel/initialization/initialize.py Outdated

@michaelbynum michaelbynum left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is almost perfect. One comment below. Also, the code for the final nlp solve is almost identical in all three methods. Could you move this to a helper function?

Comment thread pyomo/devel/initialization/initialize.py Outdated
Comment thread pyomo/devel/initialization/initialize.py Outdated
Comment thread pyomo/devel/initialization/initialize.py Outdated
@stephenscini

Copy link
Copy Markdown
Member Author

@michaelbynum Addressed comments. Please take another look when available. Thanks!

@stephenscini
stephenscini requested a review from michaelbynum July 9, 2026 19:32

@michaelbynum michaelbynum left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks!

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.

3 participants