Ejemplo n.º 1
0
 def get_next_task(self, task):
     task_last_node = self.stn.get_task_node_ids(task.task_id)[-1]
     if self.stn.has_node(task_last_node + 1):
         next_task_id = self.stn.nodes[task_last_node + 1]['data'].task_id
         try:
             next_task = Task.get_task(next_task_id)
         except DoesNotExist:
             self.logger.warning("Task %s is not in db", next_task_id)
             next_task = Task.create_new(task_id=next_task_id)
         return next_task
Ejemplo n.º 2
0
def load_tasks_to_db(dataset_module, dataset_name, **kwargs):
    dataset_dict = load_yaml_file_from_module(dataset_module,
                                              dataset_name + '.yaml')
    initial_time = kwargs.get('initial_time', datetime.now())

    tasks_dict = dataset_dict.get('tasks')
    ordered_tasks = collections.OrderedDict(sorted(tasks_dict.items()))
    tasks = list()

    for task_id, task_info in ordered_tasks.items():
        earliest_pickup_time, latest_pickup_time = reference_to_initial_time(
            task_info.get("earliest_pickup_time"),
            task_info.get("latest_pickup_time"), initial_time)
        request = TransportationRequest(
            request_id=generate_uuid(),
            pickup_location=task_info.get('pickup_location'),
            delivery_location=task_info.get('delivery_location'),
            earliest_pickup_time=earliest_pickup_time,
            latest_pickup_time=latest_pickup_time,
            hard_constraints=task_info.get('hard_constraints'))
        request.save()

        duration = InterTimepointConstraint()

        pickup = TimepointConstraint(
            earliest_time=request.earliest_pickup_time,
            latest_time=request.latest_pickup_time)

        temporal = TransportationTemporalConstraints(pickup=pickup,
                                                     duration=duration)

        constraints = TransportationTaskConstraints(
            hard=request.hard_constraints, temporal=temporal)

        task = TransportationTask.create_new(task_id=task_id,
                                             request=request.request_id,
                                             constraints=constraints)

        tasks.append(task)

    return tasks