Comments (7)
The above assumption that [PIPES]
objects with empty status
flags contain shutoff valves was incorrect. Instead, pipes with open
or closed
statuses denote the initial conditions of shutoff valves in the pipe. In the [CONTROLS]
section of an EPANET file, there are statements that describe temporal changes to a pipe's status (i.e., from open
to closed
or vice versa). Thus, if a pipe ID appears in the [CONTROLS]
section, for the time being, it will be assumed to contain a shutoff valve. Otherwise, it will be assumed that the pipe does not contain a shutoff valve. Another possibility is that we assume all pipes with initial open
or closed
statuses contain shutoff valves. However, this could have negative implications for optimization formulations (e.g., the introduction of many, perhaps unnecessary, binary variables).
from watermodels.jl.
Per our meeting, shutoff valves should exist at all pipes connected to tanks and all pipes referenced in the [CONTROLS]
section.
from watermodels.jl.
In gas models, the two types of valves we support (so far) are regulator (pressure reducing) valves and on/off valves and we model them as distinct edge objects, mainly so we didn't clutter pipe objects with extra fields that are often unused. Might be something to consider. There are pros and cons to both approaches. I think powermodels supports both... lines can act as simple switches, but can support more exotic separate breaker objects as well.
from watermodels.jl.
That's a good point. Looking at the constraints, there's no reason why they shouldn't be distinct. (Check valves and shutoff valves should also be distinct from pipes, I think.)
from watermodels.jl.
Clarification to my comment above (as per our meeting)! Pipes with valves should be decomposed as pipes and valves.
from watermodels.jl.
Also, per our discussion, perhaps shutoff valves should not be included in all pipes connected to tanks. This could result in more binary variables introduced than necessary. Instead, as @enzoliuyang94 suggested:
- An artificial node should be added to each tank node. This new node can be thought of as the actual point of water storage.
- A zero-length pipe should connect the original tank node to the artificial node.
- A binary variable should be added for each tank that permits or disallows flow into or out of the artificial node.
- When the binary variable is one, the tank is connected to its adjacanet nodes, and flow can enter/exit.
- When the binary variable is zero, the tank and its adjacent nodes are decoupled (i.e., the tank is disconnected from the system).
@enzoliuyang94, @jjstickel, is this an accurate summary? As I read over this: (1) I don't understand the purpose of creating an artificial node for a tank. Why not just have a binary variable for each of the original tanks that allows incoming/outgoing flow when equal to one and disallows it otherwise? (2) Should a single binary variable control whether a tank is decoupled from the network?
The more I think about this, I still don't see how this is as flexible as a system that includes shutoff valves for all pipes connected to tanks. Imagine a single tank connected to multiple nodes via pipes with shutoff valves: the ability to control where the tank will (or will not) send water will surely expand the set of feasible solutions, right? If we have just a single control for tanks (i.e., whether or not flow can enter/exit), then once the tank is open, water will be distributed everywhere according to the head loss relationships among connected nodes.
I guess I still don't have clarity as to what's the most realistic or best approach... Discussion is appreciated!
from watermodels.jl.
I also recommend that we develop some interesting edge cases in #93.
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
- HiGHS Dependency
- 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.