1use log::info;
3use clap::Parser;
4
5use crate::data_set::Rawdata;
7use crate::statistics::Statistics;
8use cli::Cli;
9use solution::Solution;
10use xml_manager::XmlManager;
11
12mod xml_manager;
13mod data_set;
14mod solution;
15mod logging;
16mod statistics;
17mod cli;
18
19fn main() {
20
21 let args = Cli::parse();
22
23 logging::init_logger("log.txt", args.log_enabled);
24 info!("Logger initialized");
25
26 info!("{:?}", args);
27
28 info!("Loading instance file");
29 let raw_data_set : Rawdata = XmlManager::read_xml(&*args.input);
30
31 info!("Generating traveling distance matrix");
32 let traveling_distance_matrix = Solution::generate_traveling_distance_matrix(&raw_data_set);
33
34 info!("Generating permutations");
35 let permutations = Solution::generate_random_permutations(&raw_data_set,args.permutations,args.seed,&*args.output_permutations, args.save);
36
37 info!("Generating solutions");
38 let (_, distances) = Solution::generate_all_solutions(&raw_data_set, &traveling_distance_matrix, permutations,&*args.output_solutions, args.save);
39
40 Statistics::generate_statistics(&distances);
41
42 info!("Framework execution completed");
43
44}