Beispiel #1
0
 def test_hms_to_seconds_since_midnight_full(self):
     t = "20:30:40"
     s = TimeUtil.hms_to_seconds_since_midnight(t)
     self.assertEqual(73840, s)
Beispiel #2
0
 def train_run_from_dag(annotated_problem, chromosome, dag_path, route_id):
     # Dag_path should be the array of nodes:
     train_run = {}
     train_run["service_intention_id"] = route_id
     train_run["train_run_sections"] = []
     c_idx = 0
     current_time = 0
     #print(dag_path)
     for node in dag_path:
         temp_node = node.strip("(").strip(")")
         sequence_number = None
         m_number = None
         # Try and parse out sequence or m_number
         if "->" in temp_node:
             sequence_number = int(temp_node.split('->', 1)[1])
         elif "_end" in temp_node:
             sequence_number = int(temp_node.strip("_end"))
         elif "_beginning" in temp_node:
             sequence_number = int(temp_node.strip("_beginning"))
         else:
             m_number = temp_node
         # Try and find the route section:
         route_section = None
         if sequence_number:
             route_section = SolutionBuilder.route_path_with_sequence_number(
                 annotated_problem, route_id, sequence_number)
         else:
             route_section = SolutionBuilder.route_path_with_alternative_name(
                 annotated_problem, route_id, m_number)
             if route_section:
                 sequence_number = route_section["sequence_number"]
         if not route_section:
             raise ValueError(
                 "Unable to find route section with node: ({})".format(
                     node))
         # Build the train_run_section:
         train_run_section = {
             "route": route_id,
             "route_section_id": "{}#{}".format(route_id, sequence_number),
             "sequence_number": c_idx + 1,
             "route_path": sequence_number
         }
         if "section_marker" in route_section:
             marker = route_section["section_marker"][0]
             train_run_section["section_requirement"] = marker
             # There's a marker, see if we can find the entry_earliest requirement:
             requirement = SolutionBuilder.section_requirement_with_marker(
                 annotated_problem, route_id, marker)
             if requirement and "entry_earliest" in requirement:
                 current_time = TimeUtil.hms_to_seconds_since_midnight(
                     requirement["entry_earliest"])
         else:
             train_run_section["section_requirement"] = None
         train_run_section[
             "entry_time"] = TimeUtil.seconds_since_midnight_to_hms(
                 current_time)
         min_time = 0
         if "minimum_running_time" in route_section:
             min_time = TimeUtil.ddi_duration_to_seconds(
                 route_section["minimum_running_time"])
         current_time += min_time
         current_time += chromosome[c_idx]['delta']
         train_run_section[
             "exit_time"] = TimeUtil.seconds_since_midnight_to_hms(
                 current_time)
         # TODO: Figure out our exit time
         train_run["train_run_sections"].append(train_run_section)
         c_idx += 1
     return train_run