Skip to content

Nonant bounds buffer #500

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

Merged
merged 30 commits into from
May 2, 2025
Merged

Nonant bounds buffer #500

merged 30 commits into from
May 2, 2025

Conversation

bknueven
Copy link
Collaborator

@bknueven bknueven commented Mar 27, 2025

Passes updated bounds on nonants to all cylinders, if available. WIP; needs #496.

@bknueven bknueven force-pushed the nonant_bounds_buffer branch from c168b7a to 0e680a9 Compare March 27, 2025 18:06
@bknueven bknueven force-pushed the nonant_bounds_buffer branch from 4e970cd to 912195c Compare March 31, 2025 17:49
@bknueven bknueven marked this pull request as ready for review April 25, 2025 17:46
@bknueven bknueven requested a review from Copilot May 1, 2025 15:55
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR’s purpose is to propagate updated nonanticipative variable bounds ("nonant bounds") to all cylinders where available. Key changes include:

  • Addition of a new utility (prox_cut_max.py) to compute prox cut statistics.
  • Removal and refactoring of reduced cost options and flags to simplify reduced costs fixer behavior.
  • Integration of nonant bounds updates in several cylinder modules (spcommunicator, reduced_costs_spoke, hub, and fwph_spoke) and corresponding configuration updates.

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
mpisppy/utils/prox_cut_max.py Adds new prox cuts statistics logic with potential division issue
mpisppy/utils/config.py Removes the 'rc_bound_tightening' option from config
mpisppy/utils/cfg_vanilla.py Updates reduced costs fixer configuration options
mpisppy/extensions/reduced_costs_fixer.py Refactors reduced costs fixer logic and logging messages
mpisppy/cylinders/spcommunicator.py Incorporates new nonant bound fields and receiving methods
mpisppy/cylinders/reduced_costs_spoke.py Adds nonant bound fields to send_fields and updates bounding functions
mpisppy/cylinders/hub.py Removes deprecated inner/outer bound update methods and calls nonant bounds
mpisppy/cylinders/fwph_spoke.py Invokes nonant bounds update in the fwph spoke
Comments suppressed due to low confidence (1)

mpisppy/utils/config.py:607

  • Confirm that the removal of the 'rc_bound_tightening' configuration option is intentional and that any dependent code has been suitably updated.
self.add_to_config('rc_bound_tightening', description="use reduced cost bound tightening", domain=bool, default=True)

@bknueven bknueven requested a review from Copilot May 1, 2025 19:41
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR enhances the handling of nonanticipative variable bounds by propagating updated lower and upper bounds to all cylinders. Key changes include:

  • Removal of unused reduced cost bound tightening configuration and logic.
  • Addition of new buffer fields for nonant lower/upper bounds in spwindow and corresponding communication updates in spcommunicator.
  • Updates to the reduced costs spoke and lagrangian bounder to integrate the updated nonant bounds.

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
mpisppy/utils/config.py Removed configuration parameter for reduced cost bound tightening.
mpisppy/utils/cfg_vanilla.py Removed use of legacy rc fixer and bound tightening options from the options.
mpisppy/extensions/reduced_costs_fixer.py Removed unused rc fixer/rc bound tightening logic; updated reduced_costs_fixing.
mpisppy/cylinders/spwindow.py Added new fields NONANT_LOWER_BOUNDS and NONANT_UPPER_BOUNDS to the window layout.
mpisppy/cylinders/spcommunicator.py Added receive_nonant_bounds implementation for nonant bounds updates.
mpisppy/cylinders/reduced_costs_spoke.py Updated send fields and introduced new functions for bound field initialization and updates.
mpisppy/cylinders/lagrangian_bounder.py Invokes receive_nonant_bounds to update nonant bounds for improved relaxations.
mpisppy/cylinders/hub.py Removed duplicate inner/outer bounds update logic in favor of nonant bounds syncing.
mpisppy/cylinders/fwph_spoke.py Calls receive_nonant_bounds to integrate the updated bounds.

@bknueven bknueven requested a review from Copilot May 1, 2025 20:03
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR passes updated nonanticipative variable bounds to all cylinders by introducing new nonant lower/upper bounds fields and associated update methods while removing legacy configurations for reduced cost bound tightening.

  • Removed configuration options and references to "rc_bound_tightening".
  • Added new MPI window fields for NONANT_LOWER_BOUNDS and NONANT_UPPER_BOUNDS and their processing methods in spcommunicator.
  • Updated reduced costs spoke and hub modules to incorporate and propagate the new nonant bound updates.

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
mpisppy/utils/config.py Removed rc_bound_tightening option from configuration.
mpisppy/utils/cfg_vanilla.py Removed usage of rc_bound_tightening in option assignments.
mpisppy/extensions/reduced_costs_fixer.py Removed conditions and warnings related to rc_bound tightening.
mpisppy/cylinders/spwindow.py Added NONANT_LOWER_BOUNDS and NONANT_UPPER_BOUNDS to the MPI window.
mpisppy/cylinders/spcommunicator.py Added functions to receive and update nonant bounds.
mpisppy/cylinders/reduced_costs_spoke.py Extended send_fields and updated methods to compute and send nonant bounds.
mpisppy/cylinders/lagrangian_bounder.py Updated to call receive_nonant_bounds for tighter relaxations.
mpisppy/cylinders/hub.py Removed redundant bound update functions and integrated nonant bounds sync.
mpisppy/cylinders/fwph_spoke.py Added nonant bound update call before finalizing the spoke.

@bknueven bknueven merged commit a2e7d27 into Pyomo:main May 2, 2025
19 checks passed
@bknueven bknueven deleted the nonant_bounds_buffer branch May 2, 2025 21:17
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