From 0df3d9ced743ac3385dd710c7133a6cf369b051c Mon Sep 17 00:00:00 2001 From: Radu Nicolae Date: Mon, 16 Jun 2025 18:01:07 +0200 Subject: integrated M3SA, updated with tests and CpuPowerModels --- .../src/main/python/main.py | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py') diff --git a/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py b/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py index 11ee836d..8f7b82ec 100644 --- a/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py +++ b/opendc-experiments/opendc-experiments-m3sa/src/main/python/main.py @@ -1,19 +1,29 @@ -from os import sys +from models import MultiModel, MetaModel +from util import SimulationConfig, parse_configuration +from argparse import ArgumentParser, Namespace -from input_parser import read_input -from models.MetaModel import MetaModel -from models.MultiModel import MultiModel + +def arg_parser() -> Namespace: + parser = ArgumentParser(prog="m3sa", description="Multi-Model Simulation and Analysis") + parser.add_argument("config", help="Path to the JSON configuration file", type=str) + parser.add_argument("simulation", help="Path to the simulation directory", type=str) + parser.add_argument("-o", "--output", help="Path to the output directory", type=str, nargs="?") + return parser.parse_args() def main(): - multimodel = MultiModel( - user_input=read_input(sys.argv[2]), - path=sys.argv[1], - ) + arg_input: Namespace = arg_parser() + output_path: str = arg_input.output if arg_input.output else "output" + simulation_path: str = arg_input.simulation + simulation_config: SimulationConfig = parse_configuration(arg_input.config, output_path, simulation_path) - multimodel.generate_plot() + multi_model: MultiModel = MultiModel(config=simulation_config) + multi_model.generate_plot() - MetaModel(multimodel) + if simulation_config.is_metamodel: + meta_model: MetaModel = MetaModel(multi_model) + meta_model.compute() + meta_model.output() if __name__ == "__main__": -- cgit v1.2.3