# from utils import patch_costcla
from rtac.utils.read_io import read_args
from rtac.utils.ensure_package import ensure_package
from rtac.rtac import rtac_factory
import sys
import os
import argparse
# Absolute path to the current file
file_path = os.path.abspath(__file__)
# Directory containing the file
file_dir = os.path.dirname(file_path).split('examples')[0]
[docs]def main(scenario: argparse.Namespace, instance_file: str) -> None:
"""
Run RAC process on, potentially infinite, problem instance sequence.
Parameters
----------
scenario : argparse.Namespace
Namespace containing all settings for the RTAC.
instance_file : str
Path to the problem instance to be solved.
Returns
-------
None
"""
instances = []
with open(f'{instance_file}', 'r') as f:
for line in f:
instances.append(line.strip())
rtac = rtac_factory(scenario)
if scenario.gray_box:
for i, instance in enumerate(instances):
rtac.solve_instance(instance, next_instance=None)
# If next problem instance arrives after rtac is started, it can be
# passed while the configurator runs on current problem instance
if i + 1 <= len(instances):
rtac.provide_early_instance(instances[i + 1])
# GB RAC needs to be wrapped up after running an iteration
rtac.wrap_up_gb()
else:
for instance in instances:
rtac.solve_instance(instance)
[docs]def run_example() -> None:
"""
Runs RTAC example with python_tsp.
Returns
-------
None
"""
ensure_package('python_tsp', '0.4.1')
with open(f'{file_dir}/data/tsp_scenario_rt_test.txt', 'r') as f:
lines = f.read().splitlines()
new_lines = [
f'--log_folder {file_dir}/logs',
f'--feature_gen {file_dir}/feature_gen/tsp_feats.py',
f'--param_file {file_dir}/data/params_tsp.json'
]
lines += [line for line in new_lines if line not in lines]
with open(f'{file_dir}/data/tsp_scenario_rt_test.txt', 'r') as f:
lines = f.read().splitlines()
scenario = read_args(f'{file_dir}/data/tsp_scenario_rt_test.txt', sys.argv)
instance_file = f'{file_dir}/data/travellingsalesman_instances.txt'
main(scenario, instance_file)
if __name__ == '__main__':
pass