From 9db5aa4b7e9215626ac2018111375d501b7057e0 Mon Sep 17 00:00:00 2001 From: "christoph.von.oy" <christoph.von.oy@rwth-aachen.de> Date: Fri, 7 Jun 2024 14:06:45 +0200 Subject: [PATCH] Added capacity to connections --- Model_Library | 2 +- examples/connections/prosumer.json | 51 ++++++++++++++++++++++++++++++ examples/connections/runme.py | 49 ++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 examples/connections/prosumer.json create mode 100644 examples/connections/runme.py diff --git a/Model_Library b/Model_Library index e5ce585a5e..1f64708b9f 160000 --- a/Model_Library +++ b/Model_Library @@ -1 +1 @@ -Subproject commit e5ce585a5ef69a3307214fbe7e6798311c07e918 +Subproject commit 1f64708b9f8c06056497f854438f272a3afa146c diff --git a/examples/connections/prosumer.json b/examples/connections/prosumer.json new file mode 100644 index 0000000000..204efd7cc5 --- /dev/null +++ b/examples/connections/prosumer.json @@ -0,0 +1,51 @@ +{ + "components": { + "source": { + "type": "ElectricalGeneration" + }, + "sink": { + "type": "ElectricalConsumption" + }, + "buffer": { + "type": "ElectricalGrid", + "additional_model_logic": { + "input_penalty": { + "type": "additional_operational_objective", + "value": [1.0, "input_1"] + }, + "output_penalty": { + "type": "additional_operational_objective", + "value": [1.0, "output_1"] + } + } + } + }, + "connections": [ + { + "type": "OneToOne", + "from": "source.output_1", + "to": "buffer.input_1" + }, + { + "type": "OneToOne", + "from": "buffer.output_1", + "to": "sink.input_1" + }, + { + "type": "Sum", + "members": [ + "source.output_1", + "sink.input_1" + ], + "loss_factor": 0.5, + "capacity": 1.0 + }, + { + "type": "OneToOne", + "from": "source.output_1", + "to": "sink.input_1", + "loss_factor": 0.5, + "capacity": 1.0 + } + ] +} \ No newline at end of file diff --git a/examples/connections/runme.py b/examples/connections/runme.py new file mode 100644 index 0000000000..cf0be98471 --- /dev/null +++ b/examples/connections/runme.py @@ -0,0 +1,49 @@ +""" +MIT License + +Copyright (c) 2023 RWTH Aachen University + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +""" + +# import gurobipy + +# model = gurobipy.read('out.mps') +# model.computeIIS() +# model.write('out.ilp') + +from Model_Library.dynamics import TrivialArchitecture, TrivialDynamic, Profile +from Model_Library.topology import Prosumer + +import json +import numpy as np + +dynamic = TrivialDynamic(np.ones(1, dtype=int)) + +with open("prosumer.json") as f: + prosumer_json = json.load(f) + +prosumer_json["components"]["source"]["generation"] = Profile(np.array([10.0]), dynamic) +prosumer_json["components"]["sink"]["consumption"] = Profile(np.array([10.0]), dynamic) + +prosumer = Prosumer("my_prosumer", prosumer_json) + +prosumer.optimize("key", TrivialArchitecture(dynamic), []) + +prosumer.save_results("output_files") -- GitLab