Comments (3)
What do you think about having some notion of the inequality relaxation of the head loss constraint when describing the problem type? For example, in the current "development" branch, I now have essentially five formulations.
- The full non-convex MINLP (without the relaxation).
- The relaxed (convex) version of the above MINLP.
- A MILP using a piecewise linear approximation with equality constraints (where I successfully use PiecewiseLinearOpt.jl).
- A MILP using a piecewise outer approximation with inequality constraints.
- An NLP, which currently assumes that flow directions must be fixed.
Numbers (1) - (4) also include corresponding constraints for the fixed-direction cases. Anyway, the essential difference between (1) and (2) is the relaxation from equality to inequality, and the difference between (3) and (4) is also the relaxation from equality to inequality. Sure, there are some additions of variables and constraints to accomplish this, but nothing else changes.
Furthermore, I think it's sort of deceiving to give a formulation its own name when it's not solving the equality-constrained problem. Something like RMINLP (relaxed MINLP) makes more sense to me since it specifically calls out that a relaxation has been performed. Similarly, we could then call the relaxed MILP RMILP without any loss of consistency in naming.
Anyway, I don't really know the convention for this sort of thing, so I am deferring to @rb004f and @ccoffrin!
from watermodels.jl.
It sounds like your are looking for a name for 2? Usually for these we give it the name of the underlying relaxation, i.e. MIQP would be mixed integer quadratic and miscop would be mixed integer second order cone. Our convention is not explicitly use relaxation in the name, the fact that there exists a non convex form implies that the convex forms are a relaxation of the original.
We will want to carefully document the differences between 3 and 4. It looks like 3 is an approximation whereas 4 is a relaxation. We've never done something like 3 for the other models (at least not yet).
from watermodels.jl.
The current convention is motivated in Code Block 5 in this paper, https://arxiv.org/abs/1711.01728.
My goal is that the underlying problem you are trying to solve remains the same and relaxation / approximation of that underlying master problem is encoded in the formulation parameter.
I imagine a user who always wants to solve the master problem, but from time to time resorts to a relaxation (quality bound or infeasibility proof) or an approximation (master NLP is too hard).
from watermodels.jl.
Related Issues (20)
- Implement parsing, variables, and constraints for throttle control valves HOT 2
- Implement modeling of dispatchable reservoir heads, tank volumes, and demands
- Rename formulation types HOT 17
- Implement an equality-constrained quadratic form for head gain constraints
- Model edge-type flows controlled by indicator variables with semi-continuous variables
- Parse [STATUS] block in .inp files
- Translate pipes that are short with valves to just valves
- Include pump power and cost data in the solution dictionary HOT 1
- TagBot trigger issue HOT 8
- Update Infrastructure Models Conventions (01/2021) HOT 1
- Implement a function to deactivate components that need not be modeled
- Ecosystem Maintenance
- Decompose pipes with valves into separate components
- Develop test cases that explore the limitations of various tank models
- Releases HOT 20
- use appropriate demand values for single-time water model HOT 19
- Document use of `InfrastructureModels.load_timepoint!` to configure and solve single-period problems
- Filter inactive components by reading their `status` attribute
- Implement a bound tightening utility function HOT 1
- handle situation of pumps defined as "constant power" HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from watermodels.jl.