// ACTIONS private static InstanceGeneratorConfig instance_from_file() { ++curr_pos; instanceGeneratorConfig = new InstanceGeneratorConfig(); List <string> values = new List <string>(); try { using (StreamReader stream = new StreamReader(args[curr_pos])) { while (stream.Peek() != -1) { values.Add(stream.ReadLine()); } } if (values.Count != 11) { throw new Exception($"Number of detected parameters ({values.Count}) different than the expected value (11)."); } Console.Write("Manual instance parameters input (-file) detected. Starting instance with:\n" + $"time periods = {values[0]}\n" + $"max operating depots per periods = {values[1]}\n" + $"max customer nodes per depot node = {values[2]}\n" + $"depot usage cost = {values[3]}\n" + $"number of depots = {values[4]}\n" + $"number of customers = {values[5]}\n" + $"depot creation radius = {values[6]}\n" + $"number of priority groups = {values[7]}\n" + $"x dimension of the board (used for visual representation) = {values[8]}\n" + $"y dimension of the board (used for visual representation) = {values[9]}\n"); Console.WriteLine($"RNG seed = {values[10]}"); return(new InstanceGeneratorConfig() { time_periods = Convert.ToInt32(values[0]), max_depot_nodes_per_period = Convert.ToInt32(values[1]), max_nodes_per_depot = Convert.ToInt32(values[2]), depot_usage_cost = Convert.ToDouble(values[3]), n_depots = Convert.ToInt32(values[4]), n_nodes = Convert.ToInt32(values[5]), depot_creation_radius = Convert.ToInt32(values[6]), number_of_priority_groups = Convert.ToInt32(values[7]), x_dim = Convert.ToInt32(values[8]), y_dim = Convert.ToInt32(values[9]), RNG = new Random(Convert.ToInt32(values[10])) }); } catch (Exception e) { Console.WriteLine(e.Message); end(1, "Error when parsing instance parameters from file."); return(null); } }
static int Main(string[] args) { try { ArgParser.parse_args(args); InstanceGeneratorConfig instanceGeneratorConfig = ArgParser.getInstanceGeneratorConfig(); InstanceGeneratorMain instanceGenerator = new InstanceGenerator.InstanceGeneratorMain(instanceGeneratorConfig); instanceGenerator.create_instance(); PMedian pMedianProblem = new PMedian(instanceGenerator, ArgParser.getDrawingPath() + "PMEDIAN"); pMedianProblem.setup_problem(); pMedianProblem.solve_instance(ArgParser.getModelRuntime()); pMedianProblem.publish_model(); if (ArgParser.getDrawingPath() != null) { InstanceDrawing instanceDrawing = new InstanceDrawing(instanceGenerator, new DrawingSettings()); instanceDrawing.draw(ArgParser.getDrawingPath() + "instance"); pMedianProblem.draw_solution(instanceDrawing, ArgParser.getDrawingPath() + "solution"); } if (ArgParser.results_filename != null) { pMedianProblem.write_results_to_file(ArgParser.results_filename); } return(0); //else //{ // PMedianController.folder_cleanup(".bmp", ".lp", ".sol"); // InstanceGenerator.InstanceGeneratorMain instanceGenerator = new InstanceGenerator.InstanceGeneratorMain(new InstanceGeneratorConfig()); // instanceGenerator.create_instance(); // InstanceDrawing instanceDrawing = new InstanceDrawing(instanceGenerator, new DrawingSettings()); // instanceDrawing.draw("instance"); // PMedian pMedianProblem = new PMedian(instanceGenerator, "PMedian"); // pMedianProblem.setup_problem(); // pMedianProblem.solve_instance(7200); // pMedianProblem.publish_model(); // pMedianProblem.draw_solution(instanceDrawing, "solution"); // return 0; //} } catch (Exception e) { Console.WriteLine(e.Message); ArgParser.getHelp(); return(1); } }
private static bool parse_instance_config() { switch (args[curr_pos]) { case "-file": case "-f": instanceGeneratorConfig = instance_from_file(); ++curr_pos; return(true); case "-val": case "-values": instanceGeneratorConfig = instance_from_args(); ++curr_pos; return(true); case "-default": case "-dflt": instanceGeneratorConfig = instance_from_default(); ++curr_pos; return(true); } return(false); }