From a38e062087a915c735d13601b1d59a22568aa0f5 Mon Sep 17 00:00:00 2001 From: Joseph McKinsey Date: Wed, 5 Oct 2022 13:06:26 -0600 Subject: [PATCH 1/4] Add initial sparse matrix for AWS --- AWSFeeder/sender_cosim.py | 31 +++-- large_aws_feeder.json | 150 +++++++++++++++++++++++ small_aws_feeder.json | 150 +++++++++++++++++++++++ wls_federate/state_estimator_federate.py | 51 ++++++-- 4 files changed, 356 insertions(+), 26 deletions(-) create mode 100644 large_aws_feeder.json create mode 100644 small_aws_feeder.json diff --git a/AWSFeeder/sender_cosim.py b/AWSFeeder/sender_cosim.py index b765cab..a42e04a 100644 --- a/AWSFeeder/sender_cosim.py +++ b/AWSFeeder/sender_cosim.py @@ -10,7 +10,7 @@ from typing import List, Tuple import numpy as np from datetime import datetime, timedelta -from gadal.gadal_types.data_types import Complex,Topology,VoltagesReal,VoltagesImaginary,PowersReal,PowersImaginary, AdmittanceMatrix, VoltagesMagnitude, VoltagesAngle +from gadal.gadal_types.data_types import Complex,Topology,VoltagesReal,VoltagesImaginary,PowersReal,PowersImaginary, AdmittanceMatrix, VoltagesMagnitude, VoltagesAngle, AdmittanceSparse logger = logging.getLogger(__name__) logger.addHandler(logging.StreamHandler()) @@ -26,6 +26,13 @@ def numpy_to_y_matrix(array): for row in array ] +def sparse_to_admittance_sparse(array, unique_ids): + return AdmittanceSparse( + from_equipment = [unique_ids[i] for i in array.row], + to_equipment = [unique_ids[i] for i in array.col], + admittance_list = [(data.real, data.imag) for data in array.data] + ) + def setup_sim(config: FeederConfig): sim = FeederSimulator(config) @@ -76,9 +83,15 @@ def go_cosim(sim, config: FeederConfig): h.helicsFederateEnterExecutingMode(vfed) Y = sim.get_y_matrix() - logger.debug("Eigenvalues and vectors") - logger.debug(np.linalg.eig(Y.toarray())) - y_matrix = numpy_to_y_matrix(Y.toarray()) + #logger.debug("Eigenvalues and vectors") + #logger.debug(np.linalg.eig(Y.toarray())) + unique_ids = sim._AllNodeNames + + admittancematrix = sparse_to_admittance_sparse( + Y, + unique_ids + ) + def get_phase(name): _, end = name.split('.') if end == '1': @@ -99,10 +112,7 @@ def get_phase(name): ) ] - unique_ids = sim._AllNodeNames - logger.debug("y-matrix") - logger.debug(y_matrix) logger.debug("phases") logger.debug(phases) logger.debug("base_voltages") @@ -111,12 +121,7 @@ def get_phase(name): logger.debug(slack_bus) logger.debug("unique_ids") logger.debug(unique_ids) - - - admittancematrix = AdmittanceMatrix( - admittance_matrix = y_matrix, - ids = unique_ids - ) + base_voltagemagnitude = VoltagesMagnitude( values = [abs(i) for i in base_voltages], diff --git a/large_aws_feeder.json b/large_aws_feeder.json new file mode 100644 index 0000000..8beff8a --- /dev/null +++ b/large_aws_feeder.json @@ -0,0 +1,150 @@ +{ + "name": "test_state_estimator", + "components": [ + { + "name": "recorder_voltage_real", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_real.feather", + "csv_filename": "../../outputs/voltage_real.csv" + } + }, + { + "name": "recorder_voltage_imag", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_imag.feather", + "csv_filename": "../../outputs/voltage_imag.csv" + } + }, + { + "name": "recorder_voltage_mag", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_mag.feather", + "csv_filename": "../../outputs/voltage_mag.csv" + } + }, + { + "name": "recorder_voltage_angle", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_angle.feather", + "csv_filename": "../../outputs/voltage_angle.csv" + } + }, + { + "name": "state_estimator", + "type": "StateEstimatorComponent", + "parameters": { + "algorithm_parameters": {"tol": 1e-5} + } + }, + { + "name": "feeder", + "type": "AWSFeeder", + "parameters": { + "smartds_region": "P9U", + "smartds_feeder": "p9uhs16_1247/p9uhs16_1247--p9udt12866/", + "smartds_scenario": "solar_medium_batteries_none_timeseries", + "smartds_year": "2017", + "start_date": "2017-05-01 00:00:00", + "increment_value": 900, + "number_of_timesteps": 96, + "topology_output": "../../outputs/topology.json" + } + }, + { + "name": "sensor_voltage_magnitude", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/voltage_ids.json" + } + }, + { + "name": "sensor_power_real", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/real_ids.json" + } + }, + { + "name": "sensor_power_imaginary", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/reactive_ids.json" + } + } + + ], + "links": [ + { + "source": "feeder", + "source_port": "voltages_magnitude", + "target": "sensor_voltage_magnitude", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "powers_real", + "target": "sensor_power_real", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "powers_imag", + "target": "sensor_power_imaginary", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "topology", + "target": "state_estimator", + "target_port": "topology" + }, + { + "source": "sensor_voltage_magnitude", + "source_port": "publication", + "target": "state_estimator", + "target_port": "voltages_magnitude" + }, + { + "source": "sensor_power_real", + "source_port": "publication", + "target": "state_estimator", + "target_port": "powers_real" + }, + { + "source": "sensor_power_imaginary", + "source_port": "publication", + "target": "state_estimator", + "target_port": "powers_imaginary" + }, + { + "source": "feeder", + "source_port": "voltages_real", + "target": "recorder_voltage_real", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "voltages_imag", + "target": "recorder_voltage_imag", + "target_port": "subscription" + }, + { + "source": "state_estimator", + "source_port": "voltage_angle", + "target": "recorder_voltage_angle", + "target_port": "subscription" + }, + { + "source": "state_estimator", + "source_port": "voltage_mag", + "target": "recorder_voltage_mag", + "target_port": "subscription" + } + ] +} diff --git a/small_aws_feeder.json b/small_aws_feeder.json new file mode 100644 index 0000000..7231496 --- /dev/null +++ b/small_aws_feeder.json @@ -0,0 +1,150 @@ +{ + "name": "test_state_estimator", + "components": [ + { + "name": "recorder_voltage_real", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_real.feather", + "csv_filename": "../../outputs/voltage_real.csv" + } + }, + { + "name": "recorder_voltage_imag", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_imag.feather", + "csv_filename": "../../outputs/voltage_imag.csv" + } + }, + { + "name": "recorder_voltage_mag", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_mag.feather", + "csv_filename": "../../outputs/voltage_mag.csv" + } + }, + { + "name": "recorder_voltage_angle", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_angle.feather", + "csv_filename": "../../outputs/voltage_angle.csv" + } + }, + { + "name": "state_estimator", + "type": "StateEstimatorComponent", + "parameters": { + "algorithm_parameters": {"tol": 1e-5} + } + }, + { + "name": "feeder", + "type": "AWSFeeder", + "parameters": { + "smartds_region": "P1U", + "smartds_feeder": "p1uhs0_1247/p1uhs0_1247--p1udt942/", + "smartds_scenario": "solar_medium_batteries_none_timeseries", + "smartds_year": "2017", + "start_date": "2017-05-01 00:00:00", + "increment_value": 900, + "number_of_timesteps": 96, + "topology_output": "../../outputs/topology.json" + } + }, + { + "name": "sensor_voltage_magnitude", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/voltage_ids.json" + } + }, + { + "name": "sensor_power_real", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/real_ids.json" + } + }, + { + "name": "sensor_power_imaginary", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/reactive_ids.json" + } + } + + ], + "links": [ + { + "source": "feeder", + "source_port": "voltages_magnitude", + "target": "sensor_voltage_magnitude", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "powers_real", + "target": "sensor_power_real", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "powers_imag", + "target": "sensor_power_imaginary", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "topology", + "target": "state_estimator", + "target_port": "topology" + }, + { + "source": "sensor_voltage_magnitude", + "source_port": "publication", + "target": "state_estimator", + "target_port": "voltages_magnitude" + }, + { + "source": "sensor_power_real", + "source_port": "publication", + "target": "state_estimator", + "target_port": "powers_real" + }, + { + "source": "sensor_power_imaginary", + "source_port": "publication", + "target": "state_estimator", + "target_port": "powers_imaginary" + }, + { + "source": "feeder", + "source_port": "voltages_real", + "target": "recorder_voltage_real", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "voltages_imag", + "target": "recorder_voltage_imag", + "target_port": "subscription" + }, + { + "source": "state_estimator", + "source_port": "voltage_angle", + "target": "recorder_voltage_angle", + "target_port": "subscription" + }, + { + "source": "state_estimator", + "source_port": "voltage_mag", + "target": "recorder_voltage_mag", + "target_port": "subscription" + } + ] +} diff --git a/wls_federate/state_estimator_federate.py b/wls_federate/state_estimator_federate.py index 62ea8ac..4ea0cbe 100644 --- a/wls_federate/state_estimator_federate.py +++ b/wls_federate/state_estimator_federate.py @@ -13,10 +13,11 @@ import numpy as np from pydantic import BaseModel from enum import Enum -from typing import List, Optional +from typing import List, Optional, Union from scipy.optimize import least_squares from datetime import datetime -from gadal.gadal_types.data_types import MeasurementArray, AdmittanceMatrix, Topology, Complex, VoltagesMagnitude, VoltagesAngle, VoltagesReal, VoltagesImaginary, PowersReal, PowersImaginary +from gadal.gadal_types.data_types import AdmittanceSparse, MeasurementArray, AdmittanceMatrix, Topology, Complex, VoltagesMagnitude, VoltagesAngle, VoltagesReal, VoltagesImaginary, PowersReal, PowersImaginary +import scipy.sparse logger = logging.getLogger(__name__) logger.addHandler(logging.StreamHandler()) @@ -68,6 +69,26 @@ def residual(X0, z, num_node, knownP, knownQ, knownV, Y): return z-h +def get_y(admittance: Union[AdmittanceMatrix, AdmittanceSparse], ids: List[str]): + if type(admittance) == AdmittanceMatrix: + assert ids == admittance.ids + return matrix_to_numpy( + admittance.admittance_matrix + ) + elif type(admittance) == AdmittanceSparse: + node_map = {name: i for (i, name) in enumerate(ids)} + return scipy.sparse.coo_matrix( + ( + [ + v[0] + 1j*v[1] + for v in admittance.admittance_list + ], + ( + [node_map[r] for r in admittance.from_equipment], + [node_map[c] for c in admittance.to_equipment] + ) + ) + ).toarray() def matrix_to_numpy(admittance: List[List[Complex]]): "Convert list of list of our Complex type into a numpy matrix" @@ -76,7 +97,7 @@ def matrix_to_numpy(admittance: List[List[Complex]]): def get_indices(topology, measurement): "Get list of indices in the topology for each index of the input measurement" - inv_map = {v: i for i, v in enumerate(topology.admittance.ids)} + inv_map = {v: i for i, v in enumerate(topology.base_voltage_magnitudes.ids)} return [inv_map[v] for v in measurement.ids] class UnitSystem(str, Enum): @@ -108,8 +129,9 @@ def state_estimator(parameters: AlgorithmParameters, topology, P, Q, V, initial_ V : VoltagesMagnitude (inherited from MeasurementArray) Voltage magnitude with unique ids """ - num_node = len(topology.admittance.ids) base_voltages = np.array(topology.base_voltage_magnitudes.values) + ids = topology.base_voltage_magnitudes.ids + num_node = len(ids) logging.debug("Number of Nodes") logging.debug(num_node) knownP = get_indices(topology, P) @@ -120,7 +142,7 @@ def state_estimator(parameters: AlgorithmParameters, topology, P, Q, V, initial_ z = np.concatenate(( V.array, -1000*np.array(P.array), -1000*np.array(Q.array) ), axis=0) - Y = matrix_to_numpy(topology.admittance.admittance_matrix) + Y = get_y(topology.admittance, ids) elif parameters.units == UnitSystem.PER_UNIT: base_power = 100 if parameters.base_power != None: @@ -130,7 +152,7 @@ def state_estimator(parameters: AlgorithmParameters, topology, P, Q, V, initial_ -np.array(P.values) / base_power, -np.array(Q.values) / base_power ), axis=0) - Y = matrix_to_numpy(topology.admittance.admittance_matrix) + Y = get_y(topology.admittance, ids) # Hand-crafted unit conversion (check it, it works) Y = base_voltages.reshape(1, -1) * Y * \ base_voltages.reshape(-1, 1) / (base_power * 1000) @@ -257,12 +279,15 @@ def run(self): self.initial_ang = None self.initial_V = None topology = Topology.parse_obj(self.sub_topology.json) + ids = topology.base_voltage_magnitudes.ids + logger.info("Topology has been read") slack_index = None - if not isinstance(topology.admittance, AdmittanceMatrix): - raise "Weighted Least Squares algorithm expects AdmittanceMatrix as input" + if (not isinstance(topology.admittance, AdmittanceMatrix) and + not isinstance(topology.admittance, AdmittanceSparse)): + raise "Weighted Least Squares algorithm expects AdmittanceMatrix/Sparse as input" - for i in range(len(topology.admittance.ids)): - if topology.admittance.ids[i] == topology.slack_bus[0]: + for i in range(len(ids)): + if ids[i] == topology.slack_bus[0]: slack_index = i while granted_time < h.HELICS_TIME_MAXTIME: @@ -283,7 +308,7 @@ def run(self): if self.initial_V is None: #Flat start or using average measurements - if len(knownP) + len(knownV) + len(knownQ) > len(topology.admittance.ids) * 2: + if len(knownP) + len(knownV) + len(knownQ) > len(ids) * 2: self.initial_V = 1.0 else: self.initial_V = np.mean(np.array(voltages.values) / np.array(topology.base_voltage_magnitudes.values)[knownV]) @@ -299,12 +324,12 @@ def run(self): #self.initial_ang = voltage_angles self.pub_voltage_mag.publish(VoltagesMagnitude( values=list(voltage_magnitudes), - ids=topology.admittance.ids, + ids=ids, time = voltages.time ).json()) self.pub_voltage_angle.publish(VoltagesAngle( values=list(voltage_angles), - ids=topology.admittance.ids, + ids=ids, time = voltages.time ).json()) logger.info('end time: '+str(datetime.now())) From e7b35cbcd09ca21eba961560133473de112877ed Mon Sep 17 00:00:00 2001 From: Joseph McKinsey Date: Thu, 6 Oct 2022 14:20:27 -0600 Subject: [PATCH 2/4] Add working version with 2 timesteps --- AWSFeeder/FeederSimulator.py | 1 + AWSFeeder/sender_cosim.py | 16 ++++++++++++---- large_aws_feeder.json | 5 +++-- test_full_systems.py | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/AWSFeeder/FeederSimulator.py b/AWSFeeder/FeederSimulator.py index 73dfb95..f2678a3 100644 --- a/AWSFeeder/FeederSimulator.py +++ b/AWSFeeder/FeederSimulator.py @@ -57,6 +57,7 @@ class FeederConfig(BaseModel): increment_value: int # increment in seconds number_of_timesteps: int topology_output: str = "topology.json" + use_sparse_admittance = False class FeederSimulator(object): diff --git a/AWSFeeder/sender_cosim.py b/AWSFeeder/sender_cosim.py index a42e04a..bd3701b 100644 --- a/AWSFeeder/sender_cosim.py +++ b/AWSFeeder/sender_cosim.py @@ -87,10 +87,18 @@ def go_cosim(sim, config: FeederConfig): #logger.debug(np.linalg.eig(Y.toarray())) unique_ids = sim._AllNodeNames - admittancematrix = sparse_to_admittance_sparse( - Y, - unique_ids - ) + if config.use_sparse_admittance: + admittancematrix = sparse_to_admittance_sparse( + Y, + unique_ids + ) + else: + admittancematrix = AdmittanceMatrix( + admittance_matrix= numpy_to_y_matrix( + Y.toarray() + ), + ids=unique_ids + ) def get_phase(name): _, end = name.split('.') diff --git a/large_aws_feeder.json b/large_aws_feeder.json index 8beff8a..4654298 100644 --- a/large_aws_feeder.json +++ b/large_aws_feeder.json @@ -46,8 +46,9 @@ "smartds_year": "2017", "start_date": "2017-05-01 00:00:00", "increment_value": 900, - "number_of_timesteps": 96, - "topology_output": "../../outputs/topology.json" + "number_of_timesteps": 2, + "topology_output": "../../outputs/topology.json", + "use_sparse_admittance": true } }, { diff --git a/test_full_systems.py b/test_full_systems.py index b40ce49..6096508 100644 --- a/test_full_systems.py +++ b/test_full_systems.py @@ -60,6 +60,6 @@ def bad_type_checker(type, x): wiring_diagram = WiringDiagram.parse_file(args.system) #wiring_diagram.clean_model() # Generate runner config using wiring diagram and component types -runner_config = generate_runner_config(wiring_diagram, component_types, target_directory="build") +runner_config = generate_runner_config(wiring_diagram, component_types, target_directory=args.target_directory) with open(f"{args.target_directory}/test_system_runner.json", "w") as f: f.write(runner_config.json(indent=2)) From 061811c11920549cbea8841f4cd2f8df94f989d0 Mon Sep 17 00:00:00 2001 From: Joseph McKinsey Date: Thu, 6 Oct 2022 16:44:20 -0600 Subject: [PATCH 3/4] Move to legacy object and move to scenarios folder --- AWSFeeder/FeederSimulator.py | 2 + .../large_aws_feeder.json | 0 scenarios/legacy_aws_feeder.json | 150 ++++++++++++++++++ .../small_aws_feeder.json | 0 4 files changed, 152 insertions(+) rename large_aws_feeder.json => scenarios/large_aws_feeder.json (100%) create mode 100644 scenarios/legacy_aws_feeder.json rename small_aws_feeder.json => scenarios/small_aws_feeder.json (100%) diff --git a/AWSFeeder/FeederSimulator.py b/AWSFeeder/FeederSimulator.py index f2678a3..d8a7412 100644 --- a/AWSFeeder/FeederSimulator.py +++ b/AWSFeeder/FeederSimulator.py @@ -166,6 +166,8 @@ def get_node_names(self): return self._AllNodeNames def load_feeder(self): + dss.Basic.LegacyModels(True) + dss.run_command("clear") result = dss.run_command("redirect " + self._feeder_file) if not result == '': raise ValueError("Feeder not loaded: "+result) diff --git a/large_aws_feeder.json b/scenarios/large_aws_feeder.json similarity index 100% rename from large_aws_feeder.json rename to scenarios/large_aws_feeder.json diff --git a/scenarios/legacy_aws_feeder.json b/scenarios/legacy_aws_feeder.json new file mode 100644 index 0000000..5372482 --- /dev/null +++ b/scenarios/legacy_aws_feeder.json @@ -0,0 +1,150 @@ +{ + "name": "test_state_estimator", + "components": [ + { + "name": "recorder_voltage_real", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_real.feather", + "csv_filename": "../../outputs/voltage_real.csv" + } + }, + { + "name": "recorder_voltage_imag", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_imag.feather", + "csv_filename": "../../outputs/voltage_imag.csv" + } + }, + { + "name": "recorder_voltage_mag", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_mag.feather", + "csv_filename": "../../outputs/voltage_mag.csv" + } + }, + { + "name": "recorder_voltage_angle", + "type": "Recorder", + "parameters": {"feather_filename": "../../outputs/voltage_angle.feather", + "csv_filename": "../../outputs/voltage_angle.csv" + } + }, + { + "name": "state_estimator", + "type": "StateEstimatorComponent", + "parameters": { + "algorithm_parameters": {"tol": 1e-5} + } + }, + { + "name": "feeder", + "type": "AWSFeeder", + "parameters": { + "smartds_region": "P1U", + "smartds_feeder": "p1uhs0_1247/p1uhs0_1247--p1udt104/", + "smartds_scenario": "solar_high_batteries_none_timeseries", + "smartds_year": "2018", + "start_date": "2018-05-01 00:00:00", + "increment_value": 900, + "number_of_timesteps": 96, + "topology_output": "../../outputs/topology.json" + } + }, + { + "name": "sensor_voltage_magnitude", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/voltage_ids.json" + } + }, + { + "name": "sensor_power_real", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/real_ids.json" + } + }, + { + "name": "sensor_power_imaginary", + "type": "MeasurementComponent", + "parameters": { + "gaussian_variance": 0.0, + "random_percent": 0.0, + "measurement_file": "../feeder/reactive_ids.json" + } + } + + ], + "links": [ + { + "source": "feeder", + "source_port": "voltages_magnitude", + "target": "sensor_voltage_magnitude", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "powers_real", + "target": "sensor_power_real", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "powers_imag", + "target": "sensor_power_imaginary", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "topology", + "target": "state_estimator", + "target_port": "topology" + }, + { + "source": "sensor_voltage_magnitude", + "source_port": "publication", + "target": "state_estimator", + "target_port": "voltages_magnitude" + }, + { + "source": "sensor_power_real", + "source_port": "publication", + "target": "state_estimator", + "target_port": "powers_real" + }, + { + "source": "sensor_power_imaginary", + "source_port": "publication", + "target": "state_estimator", + "target_port": "powers_imaginary" + }, + { + "source": "feeder", + "source_port": "voltages_real", + "target": "recorder_voltage_real", + "target_port": "subscription" + }, + { + "source": "feeder", + "source_port": "voltages_imag", + "target": "recorder_voltage_imag", + "target_port": "subscription" + }, + { + "source": "state_estimator", + "source_port": "voltage_angle", + "target": "recorder_voltage_angle", + "target_port": "subscription" + }, + { + "source": "state_estimator", + "source_port": "voltage_mag", + "target": "recorder_voltage_mag", + "target_port": "subscription" + } + ] +} diff --git a/small_aws_feeder.json b/scenarios/small_aws_feeder.json similarity index 100% rename from small_aws_feeder.json rename to scenarios/small_aws_feeder.json From 0b2880156528a4a5d83f2f8177f692aa39ca5d50 Mon Sep 17 00:00:00 2001 From: Joseph McKinsey Date: Thu, 6 Oct 2022 16:54:04 -0600 Subject: [PATCH 4/4] Move docker scenario to scenario folder --- Dockerfile | 2 +- docker_system.json => scenarios/docker_system.json | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename docker_system.json => scenarios/docker_system.json (100%) diff --git a/Dockerfile b/Dockerfile index 02d30b1..df8c17c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ RUN --mount=type=secret,id=gadal_github_key pip install git+ssh://git@github.com WORKDIR /simulation COPY test_full_systems.py . -COPY docker_system.json . +COPY scenarios/docker_system.json docker_system.json COPY AWSFeeder AWSFeeder COPY LocalFeeder LocalFeeder COPY README.md . diff --git a/docker_system.json b/scenarios/docker_system.json similarity index 100% rename from docker_system.json rename to scenarios/docker_system.json