-
Notifications
You must be signed in to change notification settings - Fork 247
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
Dealing with bound_relax_factor #1567
Comments
I agree that (2) is probably preferable. However, I think the primary motivation for the bound relaxation is to ensure there is a strict interior to the feasible region. This most often is needed when the lower and upper bounds of a variable are too close (e.g., equal). I think that the presolve in the NL writer should now catch and resolve a lot of these situations, so option (1) might not be a bad idea. Having said all that, I would still favor option (2). Thoughts, @jsiirola? |
Not sure if this will be of use, but @bknueven had done some work that involved tweaking bound_relax_factor for From one of the older PRs: |
Here is the original PR: watertap-org/watertap#1162. We've had Often times in WaterTAP we wanted a strict inequality anyways, which is what |
So we probably want to implement option (1). However, option (2) could also be useful. |
Repeatedly, IPOPT and AMPL cause problems with certain functions for which function evaluation errors are possible (fractional powers, logs, etc). Fortunately, we have
display_potential_evaluation_errors
in order to avoid these situations. However, even if the user has properly bounded these functions below by zero (or someeps>0
), we can still run into problems because IPOPT has the optionbound_relax_factor
set to1e-8
by default. I even got caught off-guard today because I bounded a variable below by1e-7
, but that value was transformed to1e-11
when the Pyomo scaling transformation was applied.There are two options to deal with this problem:
bound_relax_factor=0
in the IDAES solver config.display_potential_evaluation_errors
to not just evaluation errors, but also near-evaluation errors.Option (2) is probably what we'll end up doing. It would be nice to have some discussion, though.
The text was updated successfully, but these errors were encountered: