• Aucun résultat trouvé

La zone de recherche : 1 Principe :

Le chemin optimal dans un milieu urbain

4. La zone de recherche : 1 Principe :

La (Fig. 4.2) nous montre une zone de recherche dans un quartier de la commune d’Oran, où elle est limitée par un nœud de départ et un nœud d’arrivée (en rouge). La diagonale de ce cercle est égale à la distance entre les deux nœuds. On peut élargir ce cercle pour avoir plus d’arrêtes et de nœuds. Le calcul des distances entre les noeuds fait appel à la formule « vol de l’oiseau ». Cette zone ignore les arrêtes ayants seulement un seul nœud dans le cercle (Fig. 4.3).

Oui Non

Oui Non

Préparer la zone de la recherche Déterminer les contraintes

Initialisation des paramètres (nœud départ X, Nœud d’arrivée Y, périmètre de recherche).

Déterminer le coût (les objectifs)

Le choix de l’algorithme d’optimisation

Résultats de la recherche sont

satisfaisants ? Début

Calculer la complexité théorique de l’algorithme choisi

Appliquer l’algorithme d’optimisation

Le chemin optimal est trouvé ?

Elargir la zone de la recherche

Fin Evaluer l’algorithme

Figure 4.2 : La zone de recherche peut être élargie à partir de la distance minimale Tout segment ayant seulement un seul nœud dans la zone, il sera ignoré (Fig. 4.3).

Figure 4.3 : Les segments ayant un noeud dans la zone et l’autre hors zone.

Le processus « création de la zone de la recherche » crée d’abord un nouveau nœud imaginaire dans le centre au milieu de la distance entre les deux itinéraires. Puis nous testons tous les nœuds des segments existants, s’ils appartiennent à ce cercle (la distance -entre le nœud testé et le centre- est inférieure ou égale au rayon du cercle), alors l’arrête (resp. arc) est inclue, sinon elle est rejetée.

4.2. Organigramme de la zone de recherche sans contraintes :

Figure 4.4: Organigramme « zone de la recherche sans contraintes ». 4.3. Création de la zone de recherche avec les requêtes SQL :

4.3.1. Définitions :

- SQL (Structured Query Language) désigne le langage d’interrogation des données informatiques stockées dans les bases relationnelles inventé dans les années 1970 [PET, 2008].

- SQL « langage de requête structuré » - est un langage de définition de données, un langage de manipulation de données et un langage de contrôle de données pour les bases de données relationnelles. Base, très complet, rend possible l’exécution de requêtes SQL directement, sans interprétation [ROD, 2010]. 56

Début

Initialisation des paramètres (nœud départ X, nœud d’arrivée Y, distance de recherche).

Déterminer les contraintes

Calculer le centre entre X et Y (XCentre = (Xx+Xy)/2 ; YCentre = (Yx+Yy)/2)

on Fin du fichier « Segments » ? N Oui Ajouter ce segment à la zone de la recherche Charger un segment Oui La zone de recherche est préparée

N Fin La distance (1èr nœud, centre) <= rayon de la zone ? on La distance (2èr nœud, centre) <= rayon de la zone ? Oui Non

Oui Les contraintes sont satisfaites ? Non

- Une requête, en terme général, est une demande d’information. Par exemple demander le chiffre d’affaires des magasins pour une année particulière. Une requête SQL fait exactement la même chose sauf qu’un certain formalisme est nécessaire pour respecter les règles d’interrogation en SQL [PET, 2008]. 57.

- Une requête SQL est un texte qui donne un ordre à exécuter à un moteur de base de données sur une base de données. Elle peut concerner un enregistrement ou plusieurs, elle peut mettre en jeu une table ou plusieurs.

4.3.2. La requête « création de la zone de recherche » : 4.3.2.1. Présentation :

Il est courant, lorsqu’on cherche à se rendre d'un point à un autre dans un réseau routier, de chercher le plus court chemin, c'est-à-dire celui dont la distance est la plus petite. Si le nombre de trajets possibles entre le point de départ et le point d'arrivée est faible, il suffira de calculer les longueurs de chacun des trajets - en additionnant la longueur des liens qui le composent - et de comparer directement les longueurs obtenues. Mais une telle solution exhaustive devient rapidement impraticable si le nombre de trajets possibles est grand.

Lorsque l’objectif à minimiser dans un graphe pondéré est le temps et qu’il n’existe aucune contrainte sur le parcours d’un arc (par opposition au cas où l’on doit respecter une grille horaire), il est possible d’utiliser les mêmes algorithmes de plus court chemin avec la variation temps au lieu de distance entre les nœuds du graphe.

Lorsque la fonction de coût à optimiser n’est pas le temps mais qu’elle dépend du temps. Il est peu probable qu’il existe un algorithme en temps polynomial : ce problème est en effet NP-difficile puisqu’il permet de résoudre le problème de plus court chemin avec des contraintes de ressources.

La zone de recherche nous permet d’avoir des arrêtes (Resp. arcs) voisines des itinéraires, elles satisfont les contraintes demandées et elles sont pondérées avec des coûts (temps, distance, trafic …). Dès que cette zone sera créée, on pourra lancer les algorithmes d’optimisation pour trouver les chemins optimaux dans cette zone d’espace limitée.

L’organigramme (Fig. 4.5) suivant présente l’algorithme global de la procédure « création de la zone de recherche ».

4.3.2.2. Organigrammes de la zone de recherche avec le coût « distance » et « temps » :

Début

Choisir l’objectif (distance, temps). Déterminer les contraintes Créer la requête « chercher »

Figure 4.5 : Organigramme de la zone de recherche avec deux objectifs (distance, temps). Oui

Non

Fin

Calcul T1 = le temps d’attente aux feux rouges de ce segment

Calcul T3 = le temps de passage de ce segment avec respect du

vitesse limitée

Temps global du passage T= T1+T2+T3

Choisir un segment

Calcul T2 = le temps d’attente aux ralentisseurs de ce segment

Le temps global des segments sera recalculer dans l’application des algorithmes d’optimisation (ajout le temps de passage de

train / tramway) Fin de la requête

« chercher » ?

Fin Parcours la requête « Chercher »

Oui Non

Oui Non

Calculer le débit du trafic

Coût = distance ?

Les contraintes temporelles existent ?

4.3.2.3. La requête « création de la zone de recherche, objectif = distance » a. Sans contraintes :

Select S.num_seg as Num_segment, dep_noeud as Noeud_depart , fin_noeud as Noeud_arrivee , dis_seg as Longueur_en_Mètre From segments S Where (S.dep_noeud IN (Select num_noeud From noeuds where (((cgx_noeud -:param1)*(cgx_noeud -:param1))+((cgy_noeud -

:param2)*(cgy_noeud - :param2))) <= (:param3 *:param3))) AND (S.fin_noeud IN (Select

num_noeud From noeuds where (((cgx_noeud - :param1)*(cgx_noeud -:param1))+((cgy_noeud - :param2)*(cgy_noeud -:param2))) <= (:param3 * :param3)))[1] ;

:param1 : coordonnée géographique X pour le nœud du centre de la zone de recherche. :param2 : coordonnée géographique Y pour le nœud du centre de la zone de recherche. :param3 : le rayon de la zone de recherche.

b. Avec contraintes (prise en compte de la hauteur autorisée) :

1. Présentation : Cette requête nous permet de sélectionner l’ensemble des segments inclus dans une