Source code for src.simulation
import os
import subprocess
import re
import time
[docs]
def run_simulation(case_info):
root_directory = case_info['root_directory']
data_infile_path = os.path.join(root_directory, case_info['output_otoole_txt'])
model_file_path = os.path.join(root_directory, case_info['model_file'])
data_glp_path = os.path.join(root_directory, case_info['data_glp'])
data_sol_path = os.path.join(root_directory, case_info['data_sol'])
command = f"glpsol -m {model_file_path} -d {data_infile_path} --wglp {data_glp_path} --write {data_sol_path}"
start_time = time.time()
result = subprocess.run(command, capture_output=True, text=True, shell=True)
end_time = time.time()
execution_time = end_time - start_time
output = result.stdout + result.stderr
print(f"Simulation output:\n{output}")
time_used_search = re.search(r"Time used:\s+([\d.]+)\s+secs", output)
memory_used_search = re.search(r"Memory used:\s+([\d.]+)\s+Mb", output)
if time_used_search and memory_used_search:
time_used = time_used_search.group(1)
memory_used = memory_used_search.group(1)
print(f"XXXXXXXXXXXXX Total Time: {execution_time:.2f} seconds")
print(f"XXXXXXXXXXXXX Running Time: {time_used} seconds")
print(f"XXXXXXXXXXXXX Memory Used: {memory_used} MB")
results_file_path = os.path.join(root_directory, "simulation_results.txt")
with open(results_file_path, 'w') as results_file:
results_file.write(f"Matrix + Running Time: {execution_time:.2f} seconds\n")
results_file.write(f"Running Time: {time_used} seconds\n")
results_file.write(f"Memory Used: {memory_used} MB\n")
else:
print("Could not find time or memory usage information in the output.")