From 081b4a0cf3b68f1ba2921a0e6b8dc99a819223ce Mon Sep 17 00:00:00 2001 From: Vincent Payet Date: Fri, 15 Mar 2024 14:27:10 +0100 Subject: [PATCH 1/3] Add ts-generator handling --- scripts/antares_test_utils.py | 11 ++++++++--- scripts/generate_reference.py | 25 ++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/scripts/antares_test_utils.py b/scripts/antares_test_utils.py index 259278e..971a3b0 100644 --- a/scripts/antares_test_utils.py +++ b/scripts/antares_test_utils.py @@ -50,7 +50,7 @@ def remove_outputs(study_path): for f in files: shutil.rmtree(f) -def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = "sirius", named_mps_problems = False): +def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = "sirius", named_mps_problems = False, ts_generator = False): # Clean study output remove_outputs(study_path) @@ -62,6 +62,11 @@ def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = command.append('--ortools-solver='+ortools_solver) if named_mps_problems: command.append('--named-mps-problems') + if ts_generator: + cluster_to_gen_file = open(path / "clustersToGen.txt", 'r') + cluster_to_gen = cluster_to_gen_file.readline().rstrip() # remove new line char + cluster_to_gen_file.close() + command = [solver_path_full, cluster_to_gen, str(study_path)] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=None) stdout, stderr = process.communicate() @@ -69,11 +74,11 @@ def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = return (exit_code == 0) -def generate_reference_values(solver_path, path, use_ortools, ortools_solver, named_mps_problems): +def generate_reference_values(solver_path, path, use_ortools, ortools_solver, named_mps_problems, ts_generator): enable_study_output(path, True) - result = launch_solver(solver_path,path, use_ortools, ortools_solver, named_mps_problems) + result = launch_solver(solver_path,path, use_ortools, ortools_solver, named_mps_problems, ts_generator) output_path = path / 'output' list_dir = list_directories(output_path) diff --git a/scripts/generate_reference.py b/scripts/generate_reference.py index 81728ee..897860f 100644 --- a/scripts/generate_reference.py +++ b/scripts/generate_reference.py @@ -33,9 +33,30 @@ def find_solver(solver): return results[0].resolve() raise RuntimeError("Missing solver") +def find_tsgenerator(tsgenerator): + if sys.platform.startswith("win"): + suffix=".exe" + else: + suffix="" + + tsgenerator_path = Path(tsgenerator) + if tsgenerator_path.is_file(): + return tsgenerator.resolve() + if tsgenerator_path.is_dir(): + results = [] + for x in tsgenerator_path.iterdir(): + if x.is_file() and (f"antares-ts-generator{suffix}" == x.name): + results.append(x) + assert(len(results) == 1) + return results[0].resolve() + raise RuntimeError("Missing ts-generator") + solver_path = find_solver(args.solver) print(f"Found solver {solver_path}") +tsgenerator_path = find_tsgenerator(args.solver) +print(f"Found ts-generator {tsgenerator_path}") + studies = antares_utils.list_studies(root) def solver_config(study_name): @@ -50,10 +71,12 @@ def solver_config(study_name): # Do we need named MPS problems ? named_mps_problems = (study.parent.name == 'valid-named-mps') + # Are we testing the time series generator ? + ts_generator = (study.parent.name == 'ts-generator') # What optimization solver to use ? (opt_solver, use_ortools) = solver_config(study.parent.name) - result = antares_utils.generate_reference_values(solver_path, study, use_ortools, opt_solver, named_mps_problems) + result = antares_utils.generate_reference_values(solver_path, study, use_ortools, opt_solver, named_mps_problems, ts_generator) ret.append(result) print('OK' if result else 'KO') From 084b6257023f0b8c5841500140bc8ef7c5ddc8c8 Mon Sep 17 00:00:00 2001 From: Vincent Payet Date: Mon, 18 Mar 2024 10:14:45 +0100 Subject: [PATCH 2/3] de-duplicate function --- scripts/generate_reference.py | 37 ++++++++++------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/scripts/generate_reference.py b/scripts/generate_reference.py index 897860f..ab0b14b 100644 --- a/scripts/generate_reference.py +++ b/scripts/generate_reference.py @@ -15,46 +15,29 @@ root = Path(args.root).resolve() solver_path = Path(args.solver).resolve() -def find_solver(solver): +def find_binary(path, binary_name): if sys.platform.startswith("win"): suffix=".exe" else: suffix="" - solver_path = Path(solver) - if solver_path.is_file(): - return solver.resolve() - if solver_path.is_dir(): + binary_path = Path(path) + if binary_path.is_file(): + return path.resolve() + if binary_path.is_dir(): results = [] - for x in solver_path.iterdir(): - if x.is_file() and (f"antares-solver{suffix}" == x.name): + for x in binary_path.iterdir(): + if x.is_file() and (f"antares-{binary_name}{suffix}" == x.name): results.append(x) assert(len(results) == 1) return results[0].resolve() - raise RuntimeError("Missing solver") + raise RuntimeError("Missing {binary_name}") -def find_tsgenerator(tsgenerator): - if sys.platform.startswith("win"): - suffix=".exe" - else: - suffix="" - - tsgenerator_path = Path(tsgenerator) - if tsgenerator_path.is_file(): - return tsgenerator.resolve() - if tsgenerator_path.is_dir(): - results = [] - for x in tsgenerator_path.iterdir(): - if x.is_file() and (f"antares-ts-generator{suffix}" == x.name): - results.append(x) - assert(len(results) == 1) - return results[0].resolve() - raise RuntimeError("Missing ts-generator") -solver_path = find_solver(args.solver) +solver_path = find_binary(args.solver, "solver") print(f"Found solver {solver_path}") -tsgenerator_path = find_tsgenerator(args.solver) +tsgenerator_path = find_binary(args.solver, "ts-generator") print(f"Found ts-generator {tsgenerator_path}") studies = antares_utils.list_studies(root) From bde0deb45cc5c1db7116b521460887922f31eb91 Mon Sep 17 00:00:00 2001 From: Vincent Payet Date: Mon, 18 Mar 2024 11:55:06 +0100 Subject: [PATCH 3/3] generation for ts OK --- scripts/antares_test_utils.py | 12 ++++++------ scripts/generate_reference.py | 9 +++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/scripts/antares_test_utils.py b/scripts/antares_test_utils.py index 971a3b0..aeb9e85 100644 --- a/scripts/antares_test_utils.py +++ b/scripts/antares_test_utils.py @@ -50,7 +50,7 @@ def remove_outputs(study_path): for f in files: shutil.rmtree(f) -def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = "sirius", named_mps_problems = False, ts_generator = False): +def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = "sirius", named_mps_problems = False, ts_generator_path = ""): # Clean study output remove_outputs(study_path) @@ -62,11 +62,11 @@ def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = command.append('--ortools-solver='+ortools_solver) if named_mps_problems: command.append('--named-mps-problems') - if ts_generator: - cluster_to_gen_file = open(path / "clustersToGen.txt", 'r') + if ts_generator_path != "": + cluster_to_gen_file = open(study_path / "clustersToGen.txt", 'r') cluster_to_gen = cluster_to_gen_file.readline().rstrip() # remove new line char cluster_to_gen_file.close() - command = [solver_path_full, cluster_to_gen, str(study_path)] + command = [ts_generator_path, cluster_to_gen, str(study_path)] process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=None) stdout, stderr = process.communicate() @@ -74,11 +74,11 @@ def launch_solver(solver_path, study_path, use_ortools = False, ortools_solver = return (exit_code == 0) -def generate_reference_values(solver_path, path, use_ortools, ortools_solver, named_mps_problems, ts_generator): +def generate_reference_values(solver_path, path, use_ortools, ortools_solver, named_mps_problems, ts_generator_path): enable_study_output(path, True) - result = launch_solver(solver_path,path, use_ortools, ortools_solver, named_mps_problems, ts_generator) + result = launch_solver(solver_path,path, use_ortools, ortools_solver, named_mps_problems, ts_generator_path) output_path = path / 'output' list_dir = list_directories(output_path) diff --git a/scripts/generate_reference.py b/scripts/generate_reference.py index ab0b14b..a03b770 100644 --- a/scripts/generate_reference.py +++ b/scripts/generate_reference.py @@ -37,8 +37,8 @@ def find_binary(path, binary_name): solver_path = find_binary(args.solver, "solver") print(f"Found solver {solver_path}") -tsgenerator_path = find_binary(args.solver, "ts-generator") -print(f"Found ts-generator {tsgenerator_path}") +ts_generator_path = find_binary(args.solver, "ts-generator") +print(f"Found ts-generator {ts_generator_path}") studies = antares_utils.list_studies(root) @@ -55,11 +55,12 @@ def solver_config(study_name): # Do we need named MPS problems ? named_mps_problems = (study.parent.name == 'valid-named-mps') # Are we testing the time series generator ? - ts_generator = (study.parent.name == 'ts-generator') + if study.parent.name != 'ts-generator': + ts_generator_path = "" # What optimization solver to use ? (opt_solver, use_ortools) = solver_config(study.parent.name) - result = antares_utils.generate_reference_values(solver_path, study, use_ortools, opt_solver, named_mps_problems, ts_generator) + result = antares_utils.generate_reference_values(solver_path, study, use_ortools, opt_solver, named_mps_problems, ts_generator_path) ret.append(result) print('OK' if result else 'KO')