class MongodbDatabaseConnectionTester(object):
    def __init__(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='initialize_mongodb_database_connection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection = MongodbDatabaseConnection(
            host=mongodb_host, port=mongodb_port)
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'initialize_mongodb_database_connection: finished - elapsed_time = '
            + str(self.elapsed_time) + ' sec')

    def clear_all_collections(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_all_collections: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_all_collections()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_all_collections: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_address_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_address_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_address_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_address_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_bus_line_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_bus_line_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_bus_line_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_bus_line_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_bus_stop_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_bus_stop_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_bus_stop_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_bus_stop_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_bus_stop_waypoints_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_bus_stop_waypoints_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_bus_stop_waypoints_documents_collection(
        )
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_bus_stop_waypoints_documents_collection: finished - elapsed_time = '
            + str(self.elapsed_time) + ' sec')

    def clear_edge_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_edge_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_edge_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_edge_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_node_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_node_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_node_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_node_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_point_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_point_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_point_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_point_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_timetable_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_timetable_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_timetable_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_timetable_documents_collection: finished - elapsed_time = '
            + str(self.elapsed_time) + ' sec')

    def clear_traffic_density(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_traffic_density: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_traffic_density()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_traffic_density: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def clear_traffic_event_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_traffic_event_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_traffic_event_documents_collection(
        )
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_traffic_event_documents_collection: finished - elapsed_time = '
            + str(self.elapsed_time) + ' sec')

    def clear_travel_request_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_travel_request_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_travel_request_documents_collection(
        )
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_travel_request_documents_collection: finished - elapsed_time = '
            + str(self.elapsed_time) + ' sec')

    def clear_way_documents_collection(self):
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='clear_way_documents_collection: starting')
        self.start_time = time.time()
        self.mongodb_database_connection.clear_way_documents_collection()
        self.elapsed_time = time.time() - self.start_time
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message=
            'clear_way_documents_collection: finished - elapsed_time = ' +
            str(self.elapsed_time) + ' sec')

    def print_address_documents(self,
                                object_ids=None,
                                names=None,
                                node_ids=None,
                                counter=None):
        """
        Print multiple address_documents.

        :param object_ids: [ObjectId]
        :param names: [string]
        :param node_ids: [int]
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_address_documents')
        self.mongodb_database_connection.print_address_documents(
            object_ids=object_ids,
            names=names,
            node_ids=node_ids,
            counter=counter)

    def print_bus_line_documents(self,
                                 object_ids=None,
                                 bus_line_ids=None,
                                 counter=None):
        """
        Print multiple bus_line_documents.

        :param object_ids: [ObjectId]
        :param bus_line_ids: [int]
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_bus_line_documents')
        self.mongodb_database_connection.print_bus_line_documents(
            object_ids=object_ids, bus_line_ids=bus_line_ids, counter=counter)

    def print_bus_stop_documents(self,
                                 object_ids=None,
                                 osm_ids=None,
                                 names=None,
                                 counter=None):
        """
        Print multiple bus_stop_documents.

        :param object_ids: [ObjectId]
        :param osm_ids: [int]
        :param names: [string]
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_bus_stop_documents')
        self.mongodb_database_connection.print_bus_stop_documents(
            object_ids=object_ids,
            osm_ids=osm_ids,
            names=names,
            counter=counter)

    def print_bus_stop_waypoints_documents(self,
                                           object_ids=None,
                                           bus_stops=None,
                                           bus_stop_names=None,
                                           bus_line_id=None):
        """
        Print multiple bus_stop_waypoints_documents.

        :param object_ids: [ObjectId]
        :param bus_stops: [{'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}]
        :param bus_stop_names: [string]
        :param bus_line_id: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_bus_stop_waypoints_documents')
        self.mongodb_database_connection.print_bus_stop_waypoints_documents(
            object_ids=object_ids,
            bus_stops=bus_stops,
            bus_stop_names=bus_stop_names,
            bus_line_id=bus_line_id)

    def print_detailed_bus_stop_waypoints_documents(self,
                                                    object_ids=None,
                                                    bus_stops=None,
                                                    bus_stop_names=None,
                                                    bus_line_id=None):
        """
        Print multiple detailed_bus_stop_waypoints_documents.

        :param object_ids: [ObjectId]
        :param bus_stops: [{'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}]
        :param bus_stop_names: [string]
        :param bus_line_id: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_detailed_bus_stop_waypoints_documents')
        self.mongodb_database_connection.print_detailed_bus_stop_waypoints_documents(
            object_ids=object_ids,
            bus_stops=bus_stops,
            bus_stop_names=bus_stop_names,
            bus_line_id=bus_line_id)

    def print_edge_documents(self,
                             object_ids=None,
                             starting_node_osm_id=None,
                             ending_node_osm_id=None,
                             counter=None):
        """
        Print multiple edge_documents.

        :param object_ids: [ObjectId]
        :param starting_node_osm_id: int
        :param ending_node_osm_id: int
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_edge_documents')
        self.mongodb_database_connection.print_edge_documents(
            object_ids=object_ids,
            starting_node_osm_id=starting_node_osm_id,
            ending_node_osm_id=ending_node_osm_id,
            counter=counter)

    def print_node_documents(self,
                             object_ids=None,
                             osm_ids=None,
                             counter=None):
        """
        Print multiple node_documents.

        :param object_ids: [ObjectId]
        :param osm_ids: [int]
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_node_documents')
        self.mongodb_database_connection.print_node_documents(
            object_ids=object_ids, osm_ids=osm_ids, counter=counter)

    def print_point_documents(self,
                              object_ids=None,
                              osm_ids=None,
                              counter=None):
        """
        Print multiple point_documents.

        :param object_ids: [ObjectId]
        :param osm_ids: [int]
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_point_documents')
        self.mongodb_database_connection.print_point_documents(
            object_ids=object_ids, osm_ids=osm_ids, counter=counter)

    def print_timetable_documents(self,
                                  object_ids=None,
                                  bus_line_ids=None,
                                  counter=None,
                                  timetables_control=True,
                                  timetable_entries_control=False,
                                  travel_requests_control=False):
        """
        Print multiple timetable_documents.

        :param object_ids: [ObjectId]
        :param bus_line_ids: [int]
        :param counter: int
        :param timetables_control: bool
        :param timetable_entries_control: bool
        :param travel_requests_control: bool
        :return: timetable_documents: [timetable_document]
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_timetable_documents')
        self.mongodb_database_connection.print_timetable_documents(
            object_ids=object_ids,
            bus_line_ids=bus_line_ids,
            counter=counter,
            timetables_control=timetables_control,
            timetable_entries_control=timetable_entries_control,
            travel_requests_control=travel_requests_control)

    def print_traffic_density_documents(self,
                                        bus_stops=None,
                                        bus_stop_names=None):
        """
        Print multiple traffic_density_documents.

        :param bus_stops: [bus_stop_document]
        :param bus_stop_names: [string]
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_traffic_density_documents')
        self.mongodb_database_connection.print_traffic_density_documents(
            bus_stops=bus_stops, bus_stop_names=bus_stop_names)

    def print_travel_request_documents(self,
                                       object_ids=None,
                                       client_ids=None,
                                       bus_line_ids=None,
                                       min_departure_datetime=None,
                                       max_departure_datetime=None,
                                       counter=None):
        """
        Print multiple travel_request_documents.

        :param object_ids: [ObjectId]
        :param client_ids: [int]
        :param bus_line_ids: [int]
        :param min_departure_datetime: datetime
        :param max_departure_datetime: datetime
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_travel_request_documents')
        self.mongodb_database_connection.print_travel_request_documents(
            object_ids=object_ids,
            client_ids=client_ids,
            bus_line_ids=bus_line_ids,
            min_departure_datetime=min_departure_datetime,
            max_departure_datetime=max_departure_datetime,
            counter=counter)

    def print_way_documents(self, object_ids=None, osm_ids=None, counter=None):
        """
        Print multiple way_documents.

        :param object_ids: [ObjectId]
        :param osm_ids: [int]
        :param counter: int
        :return: None
        """
        log(module_name='mongodb_database_connection_test',
            log_type='INFO',
            log_message='print_way_documents')
        self.mongodb_database_connection.print_way_documents(
            object_ids=object_ids, osm_ids=osm_ids, counter=counter)
예제 #2
0
class TrafficDataSimulator(object):
    def __init__(self):
        self.mongodb_database_connection = MongodbDatabaseConnection(host=mongodb_host, port=mongodb_port)
        log(module_name='traffic_data_simulator', log_type='DEBUG',
            log_message='mongodb_database_connection: established')

    def clear_traffic_density(self):
        self.mongodb_database_connection.clear_traffic_density()

    def generate_traffic_data_between_two_bus_stops(self, starting_bus_stop=None, ending_bus_stop=None,
                                                    starting_bus_stop_name=None, ending_bus_stop_name=None):
        """
        Generate random traffic density values for the edges which connect two bus_stops.

        bus_stop_document: {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}

        bus_stop_waypoints_document: {
            '_id', 'starting_bus_stop': {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}},
            'ending_bus_stop': {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}},
            'waypoints': [[edge_object_id]]
        }
        :param starting_bus_stop: bus_stop_document
        :param ending_bus_stop: bus_stop_document
        :param starting_bus_stop_name: string
        :param ending_bus_stop_name: string
        :return: None
        """
        bus_stop_waypoints_document = self.mongodb_database_connection.find_bus_stop_waypoints_document(
            starting_bus_stop=starting_bus_stop,
            ending_bus_stop=ending_bus_stop,
            starting_bus_stop_name=starting_bus_stop_name,
            ending_bus_stop_name=ending_bus_stop_name
        )
        edge_object_ids_included_in_bus_stop_waypoints_document = \
            self.mongodb_database_connection.get_edge_object_ids_included_in_bus_stop_waypoints(
                bus_stop_waypoints=bus_stop_waypoints_document
            )
        self.generate_traffic_data_for_edge_object_ids(
            edge_object_ids=edge_object_ids_included_in_bus_stop_waypoints_document
        )

    def generate_traffic_data_between_multiple_bus_stops(self, bus_stops=None, bus_stop_names=None):
        """
        Generate random traffic density values for the edges which connect multiple bus_stops.

        bus_stop_document: {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}

        :param bus_stops: [bus_stop_documents]
        :param bus_stop_names: [string]
        :return: None
        """
        if bus_stops is not None:
            number_of_bus_stops = len(bus_stops)

            for i in range(0, number_of_bus_stops - 1):
                starting_bus_stop = bus_stops[i]
                ending_bus_stop = bus_stops[i + 1]
                self.generate_traffic_data_between_two_bus_stops(
                    starting_bus_stop=starting_bus_stop,
                    ending_bus_stop=ending_bus_stop
                )

        elif bus_stop_names is not None:
            number_of_bus_stop_names = len(bus_stop_names)

            for i in range(0, number_of_bus_stop_names - 1):
                starting_bus_stop_name = bus_stop_names[i]
                ending_bus_stop_name = bus_stop_names[i + 1]
                self.generate_traffic_data_between_two_bus_stops(
                    starting_bus_stop_name=starting_bus_stop_name,
                    ending_bus_stop_name=ending_bus_stop_name
                )

        else:
            pass

    def generate_traffic_data_for_bus_line(self, bus_line=None, line_id=None):
        """
        Generate random traffic density values for the edge_documents which are included in a bus_line_document.

        bus_line_document: {
            '_id', 'line_id', 'bus_stops': [{'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}]
        }
        :param bus_line: bus_line_document
        :param line_id: int
        :return: None
        """
        edge_object_ids_included_in_bus_line_document = \
            self.mongodb_database_connection.get_edge_object_ids_included_in_bus_line(
                bus_line=bus_line,
                line_id=line_id
            )

        self.generate_traffic_data_for_edge_object_ids(
            edge_object_ids=edge_object_ids_included_in_bus_line_document
        )

    def generate_traffic_data_for_bus_lines(self, bus_lines=None):
        """
        Generate random traffic density values for the edge_documents which are included in a bus_line_documents.

        bus_line_document: {
            '_id', 'line_id', 'bus_stops': [{'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}]
        }
        :param bus_lines: [bus_line_document]
        :return: None
        """
        if bus_lines is None:
            bus_lines = self.mongodb_database_connection.find_bus_line_documents()

        for bus_line in bus_lines:
            self.generate_traffic_data_for_bus_line(bus_line=bus_line)

    def generate_traffic_data_for_edge_object_ids(self, edge_object_ids):
        """
        Generate random traffic density values and update the corresponding edge_documents.

        edge_document: {
            '_id', 'starting_node': {'osm_id', 'point': {'longitude', 'latitude'}},
            'ending_node': {'osm_id', 'point': {'longitude', 'latitude'}},
            'max_speed', 'road_type', 'way_id', 'traffic_density'
        }
        :param edge_object_ids: [ObjectId]
        :return: None
        """
        number_of_edge_object_ids = len(edge_object_ids)
        number_of_produced_traffic_values = random.randint(0, number_of_edge_object_ids - 1)

        for i in range(0, number_of_produced_traffic_values):
            edge_object_ids_index = random.randint(0, number_of_edge_object_ids - 1)
            edge_object_id = edge_object_ids[edge_object_ids_index]
            new_traffic_density_value = random.uniform(0, 1)
            self.mongodb_database_connection.update_traffic_density(
                edge_object_id=edge_object_id,
                new_traffic_density_value=new_traffic_density_value
            )
예제 #3
0
class TrafficDataSimulator(object):
    def __init__(self):
        self.mongodb_database_connection = MongodbDatabaseConnection(host=mongodb_host, port=mongodb_port)
        self.lowest_traffic_density_value = 0
        self.highest_traffic_density_value = 1
        log(module_name='traffic_data_simulator', log_type='DEBUG',
            log_message='mongodb_database_connection: established')

    def clear_traffic_density(self):
        self.mongodb_database_connection.clear_traffic_density()

    def generate_traffic_data_between_two_bus_stops(self, starting_bus_stop=None, ending_bus_stop=None,
                                                    starting_bus_stop_name=None, ending_bus_stop_name=None):
        """
        Generate random traffic density values for the edges which connect two bus_stops.

        :param starting_bus_stop: bus_stop_document
        :param ending_bus_stop: bus_stop_document
        :param starting_bus_stop_name: string
        :param ending_bus_stop_name: string
        :return: None
        """
        bus_stop_waypoints_document = self.mongodb_database_connection.find_bus_stop_waypoints_document(
            starting_bus_stop=starting_bus_stop,
            ending_bus_stop=ending_bus_stop,
            starting_bus_stop_name=starting_bus_stop_name,
            ending_bus_stop_name=ending_bus_stop_name
        )
        edge_object_ids_included_in_bus_stop_waypoints_document = \
            self.mongodb_database_connection.get_edge_object_ids_included_in_bus_stop_waypoints(
                bus_stop_waypoints=bus_stop_waypoints_document
            )
        self.generate_traffic_data_for_edge_object_ids(
            edge_object_ids=edge_object_ids_included_in_bus_stop_waypoints_document
        )

    def generate_traffic_data_between_multiple_bus_stops(self, bus_stops=None, bus_stop_names=None):
        """
        Generate random traffic density values for the edges which connect multiple bus_stops.

        :param bus_stops: [bus_stop_documents]
        :param bus_stop_names: [string]
        :return: None
        """
        if bus_stops is not None:
            number_of_bus_stops = len(bus_stops)

            for i in range(0, number_of_bus_stops - 1):
                starting_bus_stop = bus_stops[i]
                ending_bus_stop = bus_stops[i + 1]
                self.generate_traffic_data_between_two_bus_stops(
                    starting_bus_stop=starting_bus_stop,
                    ending_bus_stop=ending_bus_stop
                )

        elif bus_stop_names is not None:
            number_of_bus_stop_names = len(bus_stop_names)

            for i in range(0, number_of_bus_stop_names - 1):
                starting_bus_stop_name = bus_stop_names[i]
                ending_bus_stop_name = bus_stop_names[i + 1]
                self.generate_traffic_data_between_two_bus_stops(
                    starting_bus_stop_name=starting_bus_stop_name,
                    ending_bus_stop_name=ending_bus_stop_name
                )

        else:
            pass

    def generate_traffic_data_for_bus_line(self, bus_line=None, bus_line_id=None):
        """
        Generate random traffic density values for the edge_documents which are included in a bus_line_document.

        :param bus_line: bus_line_document
        :param bus_line_id: int
        :return: None
        """
        edge_object_ids_included_in_bus_line_document = \
            self.mongodb_database_connection.get_edge_object_ids_included_in_bus_line(
                bus_line=bus_line,
                bus_line_id=bus_line_id
            )

        self.generate_traffic_data_for_edge_object_ids(
            edge_object_ids=edge_object_ids_included_in_bus_line_document
        )

    def generate_traffic_data_for_bus_lines(self, bus_lines=None):
        """
        Generate random traffic density values for the edge_documents which are included in a bus_line_documents.

        :param bus_lines: [bus_line_document]
        :return: None
        """
        if bus_lines is None:
            bus_lines = self.mongodb_database_connection.find_bus_line_documents()

        for bus_line in bus_lines:
            self.generate_traffic_data_for_bus_line(bus_line=bus_line)

    def generate_traffic_data_for_edge_object_ids(self, edge_object_ids):
        """
        Generate random traffic density values and update the corresponding edge_documents.

        :param edge_object_ids: [ObjectId]
        :return: None
        """
        number_of_edge_object_ids = len(edge_object_ids)
        number_of_produced_traffic_values = random.randint(0, number_of_edge_object_ids - 1)

        for i in range(0, number_of_produced_traffic_values):
            # edge_object_ids_index = random.randint(0, number_of_edge_object_ids - 1)
            edge_object_ids_index = i
            edge_object_id = edge_object_ids[edge_object_ids_index]
            new_traffic_density_value = random.uniform(
                self.lowest_traffic_density_value,
                self.highest_traffic_density_value
            )
            self.mongodb_database_connection.update_traffic_density(
                edge_object_id=edge_object_id,
                new_traffic_density_value=new_traffic_density_value
            )

    def set_traffic_density_limits(self, lowest_traffic_density_value, highest_traffic_density_value):
        """
        Set the lowest and highest traffic density values.

        :param lowest_traffic_density_value: float: [0, 1]
        :param highest_traffic_density_value: float: [0, 1]
        :return: None
        """
        self.lowest_traffic_density_value = lowest_traffic_density_value
        self.highest_traffic_density_value = highest_traffic_density_value