CERTIFICAT DE GEOMATIQUE 2001 MEMOIRE DE 3 ème CYCLE
CENTRE UNIVERSITAIRE D’ECOLOGIE HUMAINE UNIVERSITE DE GENEVE
PROGRAMME INFORMATIQUE DESTINE A UN CHAUFFEUR DE TAXI TRAVAILLANT A GENEVE,
LUI PERMETTANT DE CHOISIR LA MEILLEURE STATION EN FONCTION DE DIFFERENTS
CRITERES
Par Jean-Sébastien Wenger
Sous la direction du professeur Charles Hussy
Février 2003
Remerciements Je remercie le professeur Charles Hussy pour ses
précieux conseils et ses encouragements.
TABLE DES MATIERES
INTRODUCTION 4
DESCRIPTION DU PROGRAMME 4
CALCUL DU FACTEUR DE SINUOSITE 11
CALCUL DE LA VITESSE MOYENNE 11
SUR LES FORMULES DE REGRESSION 11
CONCLUSION 12
BIBLIOGRAPHIE 12
ANNEXE 1
LE TEXTE DU PROGRAMME INFORMATIQUE 13
ANNEXE 2
EXEMPLE DE BASE DE DONNEES
POUR LE TEMPS D ATTENTE 27
ANNEXE 3
EXEMPLE DE BASE DE DONNEES
POUR LES RECETTES 28
INTRODUCTION
Le présent mémoire a pour objet un programme informatique effectué dans le cadre du Certificat de géomatique de l'Université de Genève et destiné à être utilisé par un chauffeur de taxi travaillant à Genève.
Ce programme permet au chauffeur de taxi de choisir la meilleure station en fonction de différents critères.
A partir de données accumulées, le programme fait une prévision du temps de parcours, du temps d'attente et de la recette. En mettant ces éléments en rapport, il choisit la meilleure station.
Le programme a été effectué en MATLAB, version 3.5j du 3 mai 1991 sous DOS.
Cette ancienne version en DOS a été préférée, car elle évite la manipulation de la souris, ce qui est important pour un système destiné à être embarqué dans le taxi et à être consulté en mouvement.
DESCRIPTION DU PROGRAMME
Le problème d'un chauffeur de taxi sans centrale d'appel, après avoir déposé un client, est de savoir où se diriger pour avoir la meilleure relation
recette/temps écoulé jusqu'au prochain client. C'est-à-dire où l'espérance du prix de la prochaine course divisé par l'espérance du temps jusqu'à la
prochaine prise en charge donne le meilleur résultat.
Le 26 juin 1998, l'auteur de ces lignes a commencé à noter systématiquement le temps d'attente que lui-même expérimentait dans les différentes stations de taxi, de même que l'heure d'arrivée et le temps qu'il faisait au moment de la prise en charge du client.
A la suite de la suggestion d'un de ceux-ci, j'ai aussi commencé à noter systématiquement, à partir du 26 janvier 2000, la valeur des courses effectuées.
Utilisant les techniques de régression, j'ai ainsi pu faire un programme qui indiquait la meilleure station en fonction de l'heure, du jour de la semaine, du jour du mois, du mois et de la météo. Mais ce programme n'avait pas de référence géographique, c'est-à-dire qu'il ne tenait pas compte du temps nécessaire pour se rendre à la station choisie. La finalité du programme maintenant exposé est de tenir compte de cette nouvelle variable.
De tous ces relevés, il est apparut que des 64 stations de taxi que comptait le Canton de Genève à ce moment, onze étaient les plus utilisées mais
nécessitaient un nombre suffisant de données pour que les régressions
soient significatives. Ce nombre a été fixé à 180 puis arrondi à 200, vu qu'il y a 5 variables plus la constante et qu'en général on considère qu'un
échantillon est représentatif s'il comporte 30 éléments.
La transcription des annotations des données dans les fichiers respectifs a pris un certain retard et les formules de régression ici utilisées sont produites avec les données comprises entre les dates citées et le 4 septembre 2000.
La numération des stations de taxi correspond à celle utilisée par la centrale d'appel 022.33.141.33, sauf pour Le Lignon (409 au lieu de 702).
Les onze stations les plus utilisées et pour lesquelles le programme fournit des résultats sont les suivantes (entre parenthèses le numéro de la station, le nombre de données pour le temps d'attente et le nombre de données pour les recettes):
Gare Cornavin (116) (2053) (609) Place Bel-Air (107) (1755) (465) Rond-Point de Rive (103) ( 926) (325)
Manor (Rue J.-J. Rousseau) (118) ( 366) ( 87) Eaux-Vives (Pré-l'Evêque) (104) ( 252) ( 35) Aéroport-Arrivée (407) ( 215) (108) Place Longemalle (102) ( 203) ( 24) Hôtel du Rhône (Quai Turretini) (114) ( 201) ( 97) Place Neuve (108) ( 135) ( 27) Place du Cirque (305) ( 132) ( 56) Hôtel Noga-Hilton (Rue de la Cloche) (109) ( 60) ( 15)
On voit que de ces onze stations, trois seulement ont le nombre de données suffisantes. C'est pourquoi j'ai provisoirement baissé le critère à 60 données, ce qui élimine seulement les stations Longemalle, Eaux-Vives, Noga-Hilton, Cirque et Place Neuve. Nonobstant, les deux dernières ont été maintenues vu qu'elles correspondent à des horaires très précis, c'est-à-dire fin de spectacle pour la Place Neuve et fin de soirée pour la Place du Cirque.
L'élimination de Longemalle, Eaux-Vives et Noga-Hilton se fait à la fin du programme. Evidemment que dans le futur et à mesure qu'elles atteignent les conditions requises, d'autres stations seront prises en considération.
485 490 495 500 505 510
110 112 114 116 118 120 122 124 126 128 130
Chois is un s ec teur; c entre-ville= 0
A ni
A lV
A ly A s y
B ar
B elv
B er
Cge Car
Cha
ChB s ChB g
Chou CB y
CB e
Col
Con
Cor
Dar
G ent
G S
G y Her
Jus
Lac
Lan
M ei M ey
O ne
P Cx P lO
P Chy
P re P up
Rus S at
S or
Tho
Troi V er V an
V s oi
V ey
1 2 3 4 5 6
7 8 9 10
11
12 13
14 15 16 17 18 19
20 21 22 23 24 25
Le programme commence par une carte du Canton de Genève à l'échelle 1:150000, après que l'on ait, sous Matlab, écrit taxigeom et appuyé sur la touche enter.
Cette échelle est approximative, car sa valeur exacte dépend de l'ordinateur utilisé. L'axe horizontal représente 30 km et le vertical 22 km.
Ces axes sont gradués selon le système suisse de coordonnées (Dufour).
Sur cette carte sont représentées les limites politiques du Canton de Genève, les limites politiques de la Ville de Genève, ainsi que les 43 autres communes que comporte le canton.
Sont représentés aussi le lac, le Rhône et l'Arve. Les principales voies de communication ne figurent pas pour ne pas surcharger la carte. Onze croix représentent les onze stations de taxi qui font partie de l'ensemble des solutions possibles.
La carte est divisée en 24 sous-ensembles.
Le centre de chacun de ces sous-ensembles est un point de référence à partir duquel il est possible de calculer la meilleure solution. Bien sûr que l'idéal eût été d'avoir un système de GPS donnant la position exacte du véhicule, mais devant la complication que cela représente, il a été choisi cette solution, d'autant plus qu'une très grande précision n'est pas nécessaire.
Comme le sous-ensemble numéro 10 tombait au milieu du lac, il a été divisé en deux points 10 et 11. Le point 10 a été ramené sur la rive droite et
correspond à peu près au Vengeron. Le point 11 représente le village de Vésenaz. Ainsi les points de référence sont numérotés de 1 à 25.
Il existe encore deux points, 26 et 27, qui ne figurent pas sur la carte et qui servent à tenir compte de la traversée de la rade en relation à la station de l'aéroport et à corriger le temps de parcours pour le nord-est du canton,
c'est-à-dire la région comprise entre Hermance et Thônex. Cette correction sera expliquée plus avant. Le point 26 correspond au croisement du Quai Gustave-Ador avec la Rue Pierre-Fatio et le point 27 au croisement de la Route de Frontenex et de la Rue Pictet-de-Rochemont. Bien qu'ils ne figurent pas sur la carte, ces deux points peuvent servir aussi de points de référence pour le calcul des solutions.
Au-dessus de la carte, il est écrit: "choisis un secteur; centre-ville=0".
Donc après avoir appuyé sur n'importe quelle touche, le programme questionne
"secteur=?". A ce moment, il faut écrire le numéro du secteur ou point de référence et appuyer sur enter.
Si l'on veut plus de détails sur le centre-ville, il faut écrire le numéro zéro.
Apparaît alors une nouvelle carte à une échelle 3.6667 fois plus précise.
Sur celle-ci, en plus des données de la première, 31 stations de taxi sont représentées et indiquées par leur numéro respectif. Elles servent de nouveaux points de référence.
A noter qu'il n'est pas indispensable de venir sur cette carte pour utiliser ces nouveaux points de référence. On peut le faire directement à partir de la première carte et réciproquement.
497 498 499 500 501 502 116
117 118 119 120 121
Longem alle RiveE aux -V ives B el-A ir
Neuve Hilton Rhone
G are M anor
Cirque A eroport A rrivee
101
105
106 110
112
200
201 202 302 203
303 304
306
308 307 309 310 311
312
313 401
402 403
404 408
409
600 601
602 603
604 16
Les stations sont:
101: Vieille-Ville (Place du Bourg-de-Four) 105: Montchoisy (Avenue Théodore-Flournoy) 106: Tranchées (Rue Abraham-Constantin) 110: Pâquis (Rue de Zurich)
112: Sécheron (Rue Dentand) 200: Genève-Plage
201: Gare des Eaux-Vives 202: Florissant (Avenue Krieg)
203: Plateau de Champel 302: Place des Augustins 303: Pont-d'Arve (Rue Dancet) 304: Carrefour de la Jonction 306: Rond-Point de Plainpalais 307: Bureau des Autos
308: Carouge (Place du Marché) 309: Vernets (Rue François-Dussaud) 310: Servette (Rue Hoffmann)
311: Charmilles (Rue de Bourgogne) 312: Rue des Délices
313: Hôpital cantonal 401: Rue du Vidollet
402: ONU (Avenue de la Paix)
403: Tourelle (Chemin Moïse-Duboule) 404: Carrefour du Bouchet
408: Palexpo
409: Giratoire du Lignon 600: Rue des Noirettes 601: Place des Ormeaux
602: Grand-Lancy (Avenue Eugène-Lance) 603: Onex (Avenue des Grandes-Communes) 604: Lancy-Centre (Chemin Clair-Matin)
Les onze stations-solutions sont indiquées en toutes lettres et peuvent aussi servir de point de référence en utilisant leur numéro.
Donc avec les 11 stations-solutions, les 31 stations de taxi et les 27 points de référence, il y a au total 69 secteurs possibles.
De nouveau, après avoir appuyé sur n'importe quelle touche, le programme demande d'entrer le numéro du secteur.
Ceci fait, le programme calcule les distances à vol d'oiseau entre le secteur choisi et les onze stations-solutions.
Ces distances sont augmentées d'un facteur de sinuosité de 1.35 (voir plus loin).
Celles-ci sont divisées par une vitesse de 0.4458333 km/minute (26.75 km/h, voir plus loin), ce qui donne les onze temps nécessaires pour atteindre les stations-solutions.
Comme il a été dit plus haut, il y a une correction pour la région nord-est du canton du fait de la traversée de la rade. Pour cette région aussi, les vitesses pour atteindre les points de référence auxiliaires 26 et 27 sont plus élevées que la vitesse moyenne calculée. On a donc utilisé l'artifice suivant:
le programme calcule les distances à vol d'oiseau entre les secteurs 5, 6, 11 et 12 et le point 26, et les distances à vol d'oiseau entre les secteurs 13, 17, 18 et 19 et le point 27. Au lieu d'augmenter la vitesse, on peut diminuer la distance, ce qui revient au même. Donc selon l'estimation de la vitesse, les distances sont divisées par 2, 1.75, 1.5 ou pas divisées du tout (correction seulement de l'angle dû à la traversée du Pont du Mont-Blanc).
Quand un de ces secteurs est choisi, le programme tient compte des distances raccourcies jusqu'aux points 26 ou 27 et additionne les distances de ceux-ci aux stations qu'il a calculées par ailleurs. Ainsi les temps de parcours sont plus réalistes.
Pour les autres régions du canton, il était trop compliqué de faire un tel artifice, ce qui fait que les temps de parcours sont en général trop grands pour les secteurs éloignés de la ville. Pour pallier ce défaut, on peut
utiliser des carrefours portails d'entrée où il faudra de toutes façons passer, comme le carrefour du Bouchet ou le carrefour de la Jonction.
De plus, il n'était pas nécessaire de faire des corrections d'angle, vu que toutes les stations-solutions de la rive gauche sont proches du centre-ville.
A ce stade, le programme demande l'heure, le jour de la semaine, le jour du mois, le mois et la météo.
Pour l'heure il pose la question "h=?".
Afin d'assurer une continuité dans le relevé de l'heure en relation à la journée de travail, les heures ont été notées de 6 à 30 h. Ainsi 2 h du matin correspond à 26 h du jour précédent.
Les minutes ont été décimalisées, c'est-à-dire que si l'on veut entrer 20 h 15, par exemple, il faut écrire 20.25 et appuyer sur enter.
Les équivalences sont faciles à retenir:
5 min=.08 10 min=.17 15 min=.25 20 min=.33 25 min=.42 30 min=.5 35 min=.58 40 min=.67 45 min=.75 50 min=.83 55 min=.92
Pour le jour de la semaine, le programme pose la question "ds=?".
Du fait de ma double nationalité brésilienne, les abréviations correspondent à leur signification en portugais (dia da semana).
La numération ci-bas est utilisée:
dimanche=1 lundi=2 mardi=3 mercredi=4 jeudi=5 vendredi=6 samedi=7
"dm=?" pose la question du jour du mois. Ici rien de spécial à signaler, de même que pour la question suivante du mois "m=?".
Quant à la question de la météo "met=?", la convention suivante a été adoptée:
5 : ciel intégralement bleu (jour ou nuit) 5.25 : ciel bleu avec quelques nuages
5.5 : ciel moitié bleu, moitié couvert
5.75 : ciel majoritairement couvert avec un peu de bleu 6 : ciel intégralement couvert
6.25 : pluie légère mais les trottoirs sont encore secs 6.5 : il ne pleut pas mais les trottoirs sont mouillés 6.75 : pluie fine, trottoirs mouillés
7 : grosse pluie
7.25 : neige très mouillée
7.5 : il ne neige pas mais les trottoirs sont enneigés d'une neige récente 7.75 : neige peu mouillée
8 : neige poudreuse
A partir des informations entrées, le programme dans un premier temps
additionne l'heure donnée avec les différents temps de déplacement, ceci afin de pouvoir calculer les temps d'attente avec l'heure d'arrivée dans la station, vu que les régressions sont basées sur cette heure-là.
Avec les formules de régression, il calcule les temps d'attente.
Ensuite, il additionne l'heure donnée avec le temps de déplacement plus le temps d'attente pour obtenir l'heure de quitter la station, étant donné que les prévisions de recettes sont calculées à partir de l'heure de la prise en
charge.
Les prévisions de recettes sont calculées et finalement celles-ci sont divisées par le temps total, c'est-à-dire le temps de déplacement plus le temps
d'attente, exprimé en minutes. Les recettes sont exprimées en francs suisses.
C'est à ce moment que les stations de Longemalle, Eaux-Vives et Noga-Hilton sont éliminées en égalant à zéro le rapport recette/temps total (raft).
Ici les stations subissent quelques contraintes.
Entre 20 h 30 et 23 h 30, la station de Bel-Air est éliminée, car il est rare d'avoir des clients dans cet intervalle horaire.
En dehors de la période comprise entre 22 h 30 et 23 h 30, qui correspond à la sortie des spectacles, la station de la Place Neuve est éliminée.
Après 16 h 30, la station de l'Hôtel du Rhône est éliminée.
La station de Manor est éliminée après 19 h 15, sauf le jeudi quand elle est éliminée après 21 h 15, le vendredi après 19 h 45 et le samedi après 18 h 25.
Elle est aussi éliminée le dimanche. Ce programme est surtout basé sur la semaine du lundi au vendredi, c'est pourquoi, qu'en dehors de la station de Manor, il n'y a pas de contraintes concernant le samedi et le dimanche.
Avant 24 h, la station de la Place du Cirque est éliminée et finalement
après 24 h, la station de l'Aéroport-Arrivée est éliminée, c'est-à-dire que son rapport recette/temps total est égalé à zéro.
Le programme n'a plus qu'à choisir le meilleur résultat des rapports recette/temps total et à indiquer à quelle station il correspond.
Tous les résultats sont présentés sous forme de tableau.
Dans le haut du tableau , figurent les prévisions de recettes pour chaque station. Elles sont indiquées par fatu102, par exemple, pour la station 102.
Fatu est l'abréviation de "faturamento", c'est-à-dire recette. Elles sont exprimées en francs suisses.
Ensuite viennent les prévisions de temps. Il s'agit du temps total (tempo).
Dans les deux colonnes de droite, on trouve d'abord le temps de parcours (td, pour "tempo de deslocamento") et ensuite le temps d'attente (te, pour "tempo de espera"). Le temps total (tempo) est la somme de ces deux temps.
Tous les temps sont exprimés en minutes.
Dans la colonne de gauche, on trouve les prévisions du rapport recette/temps total, indiquées par raft102, par exemple. Raft est l'abréviation de
"ratio faturamento tempo".
Les stations où le rapport est égal à zéro, sont les stations ayant subi des contraintes.
Ensuite vient le numéro de la station choisie par le programme comme étant la meilleure, c'est-à-dire celle qui a le plus grand rapport recette/temps total.
Cette station est indiquée par le terme "best", abréviation de "boa estação"
(bonne station). Par coïncidence, ce mot correspond aussi au vocable anglais indiquant le meilleur.
Pour finir les valeurs entrées sont répétées afin de pouvoir vérifier leur exactitude.
Ainsi le chauffeur de taxi dispose de toutes les données qui lui permettent de choisir la meilleure station, suivant ou pas la suggestion du programme.
fatu102= 24.9 fatu107= 20.5 fatu114= 24.2 fatu305= 42.2 fatu103= 19.7 fatu108= 10.6 fatu116= 20.9 fatu407= 32.3 fatu104= 21.3 fatu109= 15.6 fatu118= 16.6
tempo102= 30 tempo107= 20 tempo114= 19 tempo305= 24 tempo103= 24 tempo108= 21 tempo116= 26 tempo407= 42 tempo104= 21 tempo109= 22 tempo118= 17
raft102= 0.00 td102= 5 te102= 25 raft103= 0.81 td103= 5 te103= 19 raft104= 0.00 td104= 6 te104= 15 raft107= 1.04 td107= 3 te107= 17 raft108= 0.00 td108= 3 te108= 18 raft109= 0.00 td109= 6 te109= 17 raft114= 0.00 td114= 3 te114= 16 raft116= 0.81 td116= 4 te116= 22 raft118= 0.96 td118= 4 te118= 14 raft305= 0.00 td305= 2 te305= 22 raft407= 0.77 td407= 11 te407= 31 best =
107
s= 304 h= 18.00 ds= 3 dm= 5 m= 2 m et= 6.00
CALCUL DU FACTEUR DE SINUOSITE
Pour calculer le facteur de sinuosité, j'ai procédé de la manière suivante:
un jour de travail (le 26-09-01), j'ai noté tous les déplacements effectués (courses de taxi) et relevé le nombre de kilomètres parcourus.
Ensuite j'ai mesuré toutes les distances à vol d'oiseau et fait le rapport entre ces deux grandeurs.
Ce jour-là, j'ai fait 125 km, alors que les distances à vol d'oiseau ont représenté 92.7 km.
La division des kilomètres parcourus par les kilomètres à vol d'oiseau, représentant le facteur de sinuosité, a donné une valeur de 1.3484 qui a été arrondie à 1.35.
CALCUL DE LA VITESSE MOYENNE
Pour calculer la vitesse moyenne, j'ai utilisé des données statistiques concernant mon activité de chauffeur de taxi que j'avais à disposition.
Ces données sont: la moyenne des kilomètres effectués par jour (99.3732 km), la moyenne du nombre de courses effectuées par jour (14.8754 courses),
la moyenne du temps de travail journalier (7.6491 h) et la moyenne du temps d'attente entre chaque course (15.8695 minutes).
Pour décimaliser ce dernier temps, il faut le diviser par 60 min et le multiplier par 1 h, ce qui donne 0.2645 h.
En multipliant ce résultat par le nombre de courses, nous obtenons le temps d'attente total de la journée, soit 0.2645 h x 14.8754 = 3.9345 h.
Le temps de conduite est égal au temps de travail moins le temps d'attente total: 7.6491 h - 3.9345 h = 3.7146 h.
Et finalement en divisant les kilomètres parcourus par le temps de conduite, nous obtenons la vitesse moyenne: 99.3732 km / 3.7147 h = 26.7521 km/h, arrondie à 26.75 km/h.
SUR LES FORMULES DE REGRESSION
Ces formules sont le produit de régressions du type des moindres carrés, c'est-à-dire de la minimalisation de la somme des carrés des écarts entre
"le plan" de régression et les points observés.
Je ne me suis pas préoccupé des critères statistiques tel que R carré, t statistique, etc., vu qu'il y a une sorte d'auto-élimination pour les coefficients qui ne sont pas statistiquement significatifs.
En effet, pour les trois stations qui ont un nombre suffisant de données
pour que les résultats soient valables, c'est-à-dire Cornavin, Bel-Air et Rive, on constate que l'influence du jour du mois est de, au maximum, 1.2 minute pour la prévision du temps d'attente et de 1.7 franc pour la prévision de la recette.
Donc, comme j'ai pu le déduire de graphiques concernant les différentes variables, moins les variables ont d'influence, plus les coefficients sont proches de zéro.
De ce fait, même si la variable "jour du mois", par exemple, avait un
t statistique plus petit que 2 (le niveau minimum d'acceptabilité), ce qui est probablement le cas, il n'est pas nécessaire de l'éliminer, vu que comme le coefficient est proche de zéro, l'influence est négligeable.
Les formules concernant les prévisions du temps d'attente:
te102=59.1740-0.5029*ht102-1.7210*ds-0.1310*dm-0.9011*m-2.8871*met;
te103=35.9781-0.4215*ht103-1.2886*ds-0.0058*dm-0.0352*m-0.8798*met;
te104=20.8831-0.0436*ht104-0.7722*ds-0.0363*dm+0.1573*m-0.5574*met;
te107=37.3636-0.8542*ht107-0.9976*ds+0.0383*dm-0.2337*m-0.3166*met;
te108=45.9971-1.2994*ht108-0.0040*ds-0.2628*dm+0.0742*m-0.5130*met;
te109= 8.2569-0.8951*ht109+1.0488*ds-0.0736*dm+0.0687*m+3.6091*met;
te114=55.1091-0.9776*ht114-0.5266*ds+0.0488*dm-0.1771*m-3.2825*met;
te116=35.0048-0.1911*ht116-1.7605*ds+0.0083*dm-0.2696*m-0.6867*met;
te118=43.0928-1.5127*ht118-1.2035*ds-0.0152*dm+0.0564*m+0.2597*met;
te305=34.2060-1.0606*ht305-1.3679*ds-0.1762*dm+0.0034*m+2.0082*met;
te407=80.0233-1.8935*ht407+0.7558*ds-0.0723*dm+0.6560*m-2.9741*met;
Les formules concernant les prévisions des recettes:
fatu102=93.8676-2.2965*hf102+2.7731*ds-0.3036*dm+0.5503*m-5.7339*met;
fatu103=15.2368-0.0335*hf103+0.4658*ds+0.0072*dm+0.0369*m+0.5888*met;
fatu104=17.8289-0.0091*hf104-0.6848*ds+0.0505*dm-0.3615*m+1.0264*met;
fatu107=19.2946-0.3681*hf107+0.2231*ds-0.0273*dm+0.3195*m+1.1280*met;
fatu108=-1.4252+2.0442*hf108-0.5314*ds-0.2657*dm+0.2587*m-3.8529*met;
fatu109=43.6246-1.0250*hf109+1.9967*ds-0.0514*dm+1.0707*m-2.8429*met;
fatu114=42.4843+0.0303*hf114+0.3279*ds+0.1288*dm-0.7244*m-3.1636*met;
fatu116=12.4819+0.0068*hf116-0.0628*ds+0.0544*dm+0.1199*m+1.3318*met;
fatu118=57.4220-2.2147*hf118+0.5865*ds+0.0446*dm+0.0701*m-0.3997*met;
fatu305=85.5680-2.8428*hf305-1.3191*ds-0.0032*dm-0.0939*m+2.1931*met;
fatu407= 3.5534+0.4210*hf407+0.6049*ds-0.1283*dm+2.0124*m+2.6063*met;
J'ai calculé les écarts-types pour les trois stations Cornavin, Bel-Air et Rive.
Pour le temps d'attente, ceux-ci ont donné respectivement 11.6, 11.4 et 11.3 minutes. On voit que les écarts-types sont pratiquement semblables et cela signifie qu'il y a à peu près 68 % de chance que le vrai temps d'attente se situe dans une fourchette de plus ou moins 12 minutes environ.
Pour les recettes, l'écart-type de Cornavin est de 16.4 FS, celui de Bel-Air de 7.8 FS et celui de Rive de 10.6 FS. Contrairement aux temps d'attente, les écarts-types des recettes sont assez variables. Ceci vient du fait que pour Cornavin, il est possible de prendre de très petites courses ou des très grandes comme Lausanne ou Annecy (beaucoup plus rarement). Dans une moindre mesure, cette situation se répète pour Rive, alors que les valeurs des courses de la Place Bel-Air sont plus régulières.
CONCLUSION
Ce programme est un exemple de géomatique appliquée aux problèmes de transports et grâce à lui, le chauffeur de taxi peut avoir une aide précieuse à la
décision.
Malgré la marge d'erreur, il donne des résultats que la pratique a montré être valables et il serait sans doute possible d'utiliser cette méthode pour la résolution d'autres problèmes.
BIBLIOGRAPHIE
Les cartes ont été établies à partir des données de la carte Top Swiss Genève N° 23 de Top Map Kartenverlag AG, Lucerne, Suisse (1997).
ANNEXE 1
LE TEXTE DU PROGRAMME INFORMATIQUE
écrit pour la version 3.5j de MATLAB sous DOS.
axis('normal')
axis([483.8 513.8 108.8 130.8])
cx=[502.0 498.5 497.9 498.1 496.8 498.6 497.0 495.7 494.4 493.8 492.6 491.9...
490.2 489.1 488.5 488.2 487.0 486.8 485.8 488.2 488.2 487.76 487.54...
486.08 486.2 485.0 485.8 487.9 490.5 491.6 493.1 494.7 495.3 496.0...
498.8 503.2 503.3 506.7 508.0 510.6 512.8 512.7 511.8 511.6 509.5...
507.4 508.6 508.3 507.6];
cy=[126.9 130.2 129.4 127.9 126.3 123.2 121.5 122.9 122.1 122.7 120.9 121.5...
120.9 120.0 120.2 119.8 119.5 117.8 117.0 115.5 114.86 114.3 114.74...
111.35 110.8 110.0 109.4 111.2 110.9 110.2 111.8 111.5 111.9 111.2...
110.9 113.5 114.9 117.6 117.6 118.9 121.8 123.4 123.3 124.2 122.5...
125.7 127.0 128.4 128.6];
lx=[504.5 504.3 502.3 502.4 502.0 502.3 501.9 501.5 500.748 500.756 500.9...
500.5 500.8 500.7 500.80 500.41 500.54 500.60 500.84 502.3 503.2 503.7...
504.1 503.8 504.0 505.5 506.4 507.4 507.6 508.8 508.8];
ly=[130.8 130.1 127.9 127.3 126.9 125.6 124.2 124.3 123.0 122.6 122.4 120.3...
119.6 119.3 118.64 118.15 117.942 117.945 117.85 118.7 120.3 120.9...
121.9 122.15 123.7 125.0 126.6 127.4 128.6 129.7 130.8];
rx=[500.475 499.93 499.53 499.25 499 498.75 498.32 498.13 497.53 496.63...
496.04 495.7 495.93 496.24 495.97 494.96 494.54 494.02 493.56 492.2...
491.84 491.5 491.2 491.1 490.84 489.56 488.94 488.2 487.76 487.54 486.08...
486.2 485 483.8];
ry=[118.046 117.92 117.91 117.75 117.76 117.68 117.51 117.45 117.68 116.63...
116.55 117 117.21 118.41 118.62 117.65 117.61 116.77 116.66 116.8 117.26...
117.42 117.26 116.5 115.7 114.7 114.74 114.86 114.3 114.74 111.35 110.8...
110 109.85];
ax=[513.8 513.4 512.9 512.5 512.1 510.5 508.9 508.06 507.94 507.46 507.7...
506.76 505.86 505.1 503.5 503.12 502.77 502.62 502.11 501.99 502.18...
502.06 501.86 501.76 501.61 501.5 501.49 501.28 501.25 500.99 500.79...
500.87 500.79 500.47 500.27 499.95 499.9 499.83 499.69 498.77 498.32];
ay=[110.1 110.4 110 110.06 110.94 111.66 111.4 112.4 112.74 112.9 113.88...
114.96 115.2 114.56 114.2 115 115.03 114.85 114.61 114.75 115 115.66...
115.93 115.99 115.98 115.88 115.66 115.23 114.95 114.86 115.2 115.64...
115.81 115.87 115.86 115.95 116.04 116.22 116.63 117.36 117.51];
vx=[500.58 499.71 499.70 499.28 498.88 498.84 498.58 498.42 498.36 498.45...
497.79 497.97 498.1785 497.48 497.61 498.35 498.36 498.55 498.79 498.68...
498.79 498.84 499.37 499.54 499.90 499.95 500.27 500.47 500.79 500.87...
500.79 500.99 501.25 501.28 501.49 501.50 501.61 501.76 502.51 502.48...
502.21 502.17 502.35 502.17];
vy=[120.64 120.68 120.43 120.86 120.49 120.53 120.18 120.31 120.22 120.13...
119.59 119.29 119.166 117.97 117.00 117.08 116.93 116.85 117.00 116.86...
116.76 115.95 116.32 116.07 116.04 115.95 115.86 115.87 115.81 115.64...
115.20 114.86 114.95 115.23 115.66 115.88 115.98 115.99 118.01 118.08...
117.94 118.17 118.36 118.57];
comx=[506.1 492.02 488.7 488.04 496.8 500.95 493.9 499.74 490.4 486.45 503.38...
504.05 506.26 498.46 504.76 503.23 495.32 506.2 488 501.2 498.79 508.8...
507.8 509.4 491.4 498.41 507 494.8 496.81 495.7 498.07 499.92 508.2...
506.91 489.7 491.3 491.8 504.23 500.54 504.44 495.56 502.16 502.84];
comy=[125.58 116.3 114.05 112 111.5 123.36 114.3 115.61 114.65 111.95 117.06...
116.42 120.11 125.15 123.26 119.41 114.54 124.05 116.75 124.47 121.32...
122.9 128.38 121.25 112.75 115.61 122.3 120.7 115.33 112.7 113.82...
121.53 119.1 118.49 115.9 119.1 111.25 115.99 112.8 119.53 119.06...
125.73 113.55];
stax=[500.5561 500.7841 501.1318 500.0032 500.026 500.653 499.855 500.0602...
500.0317 499.8037 497.4348];
stay=[117.6695 117.5555 117.5099 117.7892 117.4729 118.496 117.946 118.4846...
118.1654 117.3788 120.774];
sex=[487.5 492.5 497.5 502.2 507.5 512.5 487.5 492.5 497.5 500.7 504.302...
507.5 512.5 487.5 492.5 497.5 502.5 507.5 512.5 487.5 492.5 497.5 502.5...
507.5 512.5];
sey=[127.5 127.5 127.5 127.5 127.5 127.5 122.5 122.5 122.5 122.5 121.71 122.5...
122.5 117.5 117.5 117.5 117.5 117.5 117.5 112.5 112.5 112.5 112.5 112.5...
112.5];
estax=[500.4763 501.5869 500.7782 500.3336 500.4154 502.2255 501.7866 501.521...
500.7678 500.1055 499.9168 499.057 499.9973 500.6956 499.7779 499.3984...
499.0122 498.7717 499.2394 500.4718 499.4976 499.6934 498.6758...
498.1785 498.2077 496.6326 499.1578 498.1699 498.3855 496.898 497.6172];
estay=[117.3332 117.8748 116.9998 118.6575 119.2476 118.593 117.401 116.7834...
116.4402 116.4123 116.77 117.4871 117.1052 115.5428 115.5752 116.5127...
118.9103 118.4105 118.0172 116.6569 119.2799 119.9082 120.1775 119.166...
121.0498 117.8248 116.0129 116.2419 115.5439 116.4855 115.9469];
plot(cx,cy,vx,vy,'-r',lx,ly,'b',rx,ry,'-b',ax,ay,'-b',comx,comy,'or', sex,sey,'*',stax,stay,'xg')
grid
title('Choisis un secteur; centre-ville=0') text(506.1,125.58,'Ani')
text(492.02,116.3,'AlV') text(488.7,114.05,'Aly') text(488.04,112,'Asy') text(496.8,111.5,'Bar') text(500.95,123.36,'Belv') text(493.9,114.3,'Ber') text(499.74,115.61,'Cge') text(490.4,114.65,'Car') text(486.45,111.95,'Cha') text(503.38,117.06,'ChBs') text(504.05,116.42,'ChBg') text(506.26,120.11,'Chou') text(498.46,125.15,'CBy') text(504.76,123.26,'CBe') text(503.23,119.41,'Col') text(495.32,114.54,'Con') text(506.2,124.05,'Cor') text(488,116.75,'Dar') text(501.2,124.47,'Gent') text(498.79,121.32,'GS') text(508.8,122.9,'Gy') text(507.8,128.38,'Her') text(509.4,121.25,'Jus') text(491.4,112.75,'Lac') text(498.41,115.61,'Lan') text(507,122.3,'Mei') text(494.8,120.7,'Mey') text(496.81,115.33,'One') text(495.7,112.7,'PCx') text(498.07,113.82,'PlO') text(499.92,121.53,'PChy') text(508.2,119.1,'Pre') text(506.91,118.49,'Pup') text(489.7,115.9,'Rus') text(491.3,119.1,'Sat') text(491.8,111.25,'Sor') text(504.23,115.99,'Tho') text(500.54,112.8,'Troi') text(504.44,119.53,'Van') text(495.56,119.06,'Ver')
text(502.16,125.73,'Vsoi') text(502.84,113.55,'Vey') text(487.5,127.5,'1') text(492.5,127.5,'2') text(497.5,127.5,'3') text(502.2,127.5,'4') text(507.5,127.5,'5') text(512.5,127.5,'6') text(487.5,122.5,'7') text(492.5,122.5,'8') text(497.5,122.5,'9') text(500.7,122.5,'10') text(504.302,121.71,'11') text(507.5,122.5,'12') text(512.5,122.5,'13') text(487.5,117.5,'14') text(492.5,117.5,'15') text(497.5,117.5,'16') text(502.5,117.5,'17') text(507.5,117.5,'18') text(512.5,117.5,'19') text(487.5,112.5,'20') text(492.5,112.5,'21') text(497.5,112.5,'22') text(502.5,112.5,'23') text(507.5,112.5,'24') text(512.5,112.5,'25') pause
s1=[487.5 127.5];
s2=[492.5 127.5];
s3=[497.5 127.5];
s4=[502.2 127.5];
s5=[507.5 127.5];
s6=[512.5 127.5];
s7=[487.5 122.5];
s8=[492.5 122.5];
s9=[497.5 122.5];
s10=[500.7 122.5];
s11=[504.302 121.71];
s12=[507.5 122.5];
s13=[512.5 122.5];
s14=[487.5 117.5];
s15=[492.5 117.5];
s16=[497.5 117.5];
s17=[502.5 117.5];
s18=[507.5 117.5];
s19=[512.5 117.5];
s20=[487.5 112.5];
s21=[492.5 112.5];
s22=[497.5 112.5];
s23=[502.5 112.5];
s24=[507.5 112.5];
s25=[512.5 112.5];
s26=[500.8865 117.8196]; % croisement Pierre-Fatio Gustave-Ador s27=[501.2596 117.5098]; % croisement Pictet-de-Rochemont Frontenex s101=[500.4763 117.3332];
s102=[500.5561 117.6695];
s103=[500.7841 117.5555];
s104=[501.1318 117.5099];
s105=[501.5869 117.8748];
s106=[500.7782 116.9998];
s107=[500.0032 117.7892];
s108=[500.0260 117.4729];
s109=[500.6530 118.4960];
s110=[500.3336 118.6575];
s112=[500.4154 119.2476];
s114=[499.8550 117.9460];
s116=[500.0602 118.4846];
s118=[500.0317 118.1654];
s200=[502.2255 118.5930];
s201=[501.7866 117.4010];
s202=[501.5210 116.7834];
s203=[500.7678 116.4402];
s302=[500.1055 116.4123];
s303=[499.9168 116.7700];
s304=[499.0570 117.4871];
s305=[499.8037 117.3788];
s306=[499.9973 117.1052];
s307=[500.6956 115.5428];
s308=[499.7779 115.5752];
s309=[499.3984 116.5127];
s310=[499.0122 118.9103];
s311=[498.7717 118.4105];
s312=[499.2394 118.0172];
s313=[500.4718 116.6569];
s401=[499.4976 119.2799];
s402=[499.6934 119.9082];
s403=[498.6758 120.1775];
s404=[498.1785 119.1660];
s407=[497.4348 120.7740];
s408=[498.2077 121.0498];
s409=[496.6326 117.8248];
s600=[499.1578 116.0129];
s601=[498.1699 116.2419];
s602=[498.3855 115.5439];
s603=[496.8980 116.4855];
s604=[497.6172 115.9469];
ad526=sqrt((s5(1)-s26(1))^2+(s5(2)-s26(2))^2)/2;
ad626=sqrt((s6(1)-s26(1))^2+(s6(2)-s26(2))^2)/2;
ad1126=sqrt((s11(1)-s26(1))^2+(s11(2)-s26(2))^2)/2;
ad1226=sqrt((s12(1)-s26(1))^2+(s12(2)-s26(2))^2)/2;
ad1327=sqrt((s13(1)-s27(1))^2+(s13(2)-s27(2))^2)/1.75;
ad1727=sqrt((s17(1)-s27(1))^2+(s17(2)-s27(2))^2);
ad1827=sqrt((s18(1)-s27(1))^2+(s18(2)-s27(2))^2);
ad1927=sqrt((s19(1)-s27(1))^2+(s19(2)-s27(2))^2)/1.5; % correction de vitesse
e102=[500.5561 117.6695];
e103=[500.7841 117.5555];
e104=[501.1318 117.5099];
e107=[500.0032 117.7892];
e108=[500.0260 117.4729];
e109=[500.6530 118.4960];
e114=[499.8550 117.9460];
e116=[500.0602 118.4846];
e118=[500.0317 118.1654];
e305=[499.8037 117.3788];
e407=[497.4348 120.7740];
s=input('secteur=?');
if s==0
axis([496.52 502.52 115.25 121.25]) axis('square')
plot(cx,cy,vx,vy,'-r',lx,ly,'b',rx,ry,'-b',ax,ay,'-b',comx,comy,'or', sex,sey,'*',stax,stay,'xg',estax,estay,'og')
text(500.5561,117.6695,'Longemalle') text(500.7841,117.5555,'Rive')
text(501.1318,117.5099,'Eaux-Vives') text(500.0032,117.7892,'Bel-Air') text(500.0260,117.4729,'Neuve') text(500.6530,118.4960,'Hilton') text(499.8550,117.9460,'Rhône') text(500.0602,118.4846,'Gare') text(500.0317,118.1654,'Manor') text(499.8037,117.3788,'Cirque')
text(497.4348,120.7740,'Aéroport Arrivée') text(500.4763,117.3332,'101')
text(501.5869,117.8748,'105') text(500.7782,116.9998,'106') text(500.3336,118.6575,'110') text(500.4154,119.2476,'112') text(502.2255,118.5930,'200') text(501.7866,117.4010,'201') text(501.5210,116.7834,'202') text(500.7678,116.4402,'203') text(500.1055,116.4123,'302') text(499.9168,116.7700,'303') text(499.0570,117.4871,'304') text(499.9973,117.1052,'306') text(500.6956,115.5428,'307') text(499.7779,115.5752,'308') text(499.3984,116.5127,'309') text(499.0122,118.9103,'310') text(498.7717,118.4105,'311') text(499.2394,118.0172,'312') text(500.4718,116.6569,'313') text(499.4976,119.2799,'401') text(499.6934,119.9082,'402') text(498.6758,120.1775,'403') text(498.1785,119.1660,'404') text(498.2077,121.0498,'408') text(496.6326,117.8248,'409') text(499.1578,116.0129,'600') text(498.1699,116.2419,'601') text(498.3855,115.5439,'602') text(496.8980,116.4855,'603') text(497.6172,115.9469,'604') text(497.5,117.5,'16')
pause
s=input('secteur=?');
end if s==1 sc=s1;
ad=0;
end if s==2 sc=s2;
ad=0;
end if s==3
sc=s3;
ad=0;
end if s==4 sc=s4;
ad=0;
end if s==5 sc=s26;
ad=ad526;
end if s==6 sc=s26;
ad=ad626;
end if s==7 sc=s7;
ad=0;
end if s==8 sc=s8;
ad=0;
end if s==9 sc=s9;
ad=0;
end if s==10 sc=s10;
ad=0;
end if s==11 sc=s26;
ad=ad1126;
end if s==12 sc=s26;
ad=ad1226;
end if s==13 sc=s27;
ad=ad1327;
end if s==14 sc=s14;
ad=0;
end if s==15 sc=s15;
ad=0;
end if s==16 sc=s16;
ad=0;
end if s==17 sc=s27;
ad=ad1727;
end if s==18 sc=s27;
ad=ad1827;
end if s==19 sc=s27;
ad=ad1927;
end if s==20 sc=s20;
ad=0;
end if s==21 sc=s21;
ad=0;
end if s==22 sc=s22;
ad=0;
end if s==23 sc=s23;
ad=0;
end if s==24 sc=s24;
ad=0;
end if s==25 sc=s25;
ad=0;
end if s==26 sc=s26;
ad=0;
end if s==27 sc=s27;
ad=0;
end
if s==101 sc=s101;
ad=0;
end
if s==102 sc=s102;
ad=0;
end
if s==103 sc=s103;
ad=0;
end
if s==104 sc=s104;
ad=0;
end
if s==105 sc=s105;
ad=0;
end
if s==106 sc=s106;
ad=0;
end
if s==107 sc=s107;
ad=0;
end
if s==108 sc=s108;
ad=0;
end
if s==109 sc=s109;
ad=0;
end
if s==110 sc=s110;
ad=0;
end
if s==112 sc=s112;
ad=0;
end
if s==114 sc=s114;
ad=0;
end
if s==116 sc=s116;
ad=0;
end
if s==118 sc=s118;
ad=0;
end
if s==200 sc=s200;
ad=0;
end
if s==201 sc=s201;
ad=0;
end
if s==202 sc=s202;
ad=0;
end
if s==203 sc=s203;
ad=0;
end
if s==302 sc=s302;
ad=0;
end
if s==303 sc=s303;
ad=0;
end
if s==304 sc=s304;
ad=0;
end
if s==305 sc=s305;
ad=0;
end
if s==306 sc=s306;
ad=0;
end
if s==307 sc=s307;
ad=0;
end
if s==308 sc=s308;
ad=0;
end
if s==309 sc=s309;
ad=0;
end
if s==310 sc=s310;
ad=0;
end
if s==311 sc=s311;
ad=0;
end
if s==312 sc=s312;
ad=0;
end
if s==313 sc=s313;
ad=0;
end
if s==401 sc=s401;
ad=0;
end
if s==402 sc=s402;
ad=0;
end
if s==403 sc=s403;
ad=0;
end
if s==404 sc=s404;
ad=0;
end
if s==407 sc=s407;
ad=0;
end
if s==408 sc=s408;
ad=0;
end
if s==409
sc=s409;
ad=0;
end
if s==600 sc=s600;
ad=0;
end
if s==601 sc=s601;
ad=0;
end
if s==602 sc=s602;
ad=0;
end
if s==603 sc=s603;
ad=0;
end
if s==604 sc=s604;
ad=0;
end
d102=sqrt((sc(1)-e102(1))^2+(sc(2)-e102(2))^2)+ad;
d103=sqrt((sc(1)-e103(1))^2+(sc(2)-e103(2))^2)+ad;
d104=sqrt((sc(1)-e104(1))^2+(sc(2)-e104(2))^2)+ad;
d107=sqrt((sc(1)-e107(1))^2+(sc(2)-e107(2))^2)+ad;
d108=sqrt((sc(1)-e108(1))^2+(sc(2)-e108(2))^2)+ad;
d109=sqrt((sc(1)-e109(1))^2+(sc(2)-e109(2))^2)+ad;
d114=sqrt((sc(1)-e114(1))^2+(sc(2)-e114(2))^2)+ad;
d116=sqrt((sc(1)-e116(1))^2+(sc(2)-e116(2))^2)+ad;
d118=sqrt((sc(1)-e118(1))^2+(sc(2)-e118(2))^2)+ad;
d305=sqrt((sc(1)-e305(1))^2+(sc(2)-e305(2))^2)+ad;
d407=sqrt((sc(1)-e407(1))^2+(sc(2)-e407(2))^2)+ad;
d102s=d102*1.35; % facteur de sinuosité d103s=d103*1.35;
d104s=d104*1.35;
d107s=d107*1.35;
d108s=d108*1.35;
d109s=d109*1.35;
d114s=d114*1.35;
d116s=d116*1.35;
d118s=d118*1.35;
d305s=d305*1.35;
d407s=d407*1.35;
td102=d102s/.4458333; % 0.4458333 km / minute td103=d103s/.4458333;
td104=d104s/.4458333;
td107=d107s/.4458333;
td108=d108s/.4458333;
td109=d109s/.4458333;
td114=d114s/.4458333;
td116=d116s/.4458333;
td118=d118s/.4458333;
td305=d305s/.4458333;
td407=d407s/.4458333;
h=input('h=?');
ds=input('ds=?');
dm=input('dm=?');
m=input('m=?');
met=input('met=?');
ht102=h+td102/60;
ht103=h+td103/60;
ht104=h+td104/60;
ht107=h+td107/60;
ht108=h+td108/60;
ht109=h+td109/60;
ht114=h+td114/60;
ht116=h+td116/60;
ht118=h+td118/60;
ht305=h+td305/60;
ht407=h+td407/60;
t102d=59.1740-.5029*ht102-1.7210*ds-.1310*dm-.9011*m-2.8871*met;
t103d=35.9781-.4215*ht103-1.2886*ds-.0058*dm-.0352*m-.8798*met;
t104d=20.8831-.0436*ht104-.7722*ds-.0363*dm+.1573*m-.5574*met;
t107d=37.3636-.8542*ht107-.9976*ds+.0383*dm-.2337*m-.3166*met;
t108d=45.9971-1.2994*ht108-.0040*ds-.2628*dm+.0742*m-.5130*met;
t109d=8.2569-.8951*ht109+1.0488*ds-.0736*dm+.0687*m+3.6091*met;
t114d=55.1091-.9776*ht114-.5266*ds+.0488*dm-.1771*m-3.2825*met;
t116d=35.0048-.1911*ht116-1.7605*ds+.0083*dm-.2696*m-.6867*met;
t118d=43.0928-1.5127*ht118-1.2035*ds-.0152*dm+.0564*m+.2597*met;
t305d=34.2060-1.0606*ht305-1.3679*ds-.1762*dm+.0034*m+2.0082*met;
t407d=80.0233-1.8935*ht407+.7558*ds-.0723*dm+.6560*m-2.9741*met;
tt102=td102+t102d;
tt103=td103+t103d;
tt104=td104+t104d;
tt107=td107+t107d;
tt108=td108+t108d;
tt109=td109+t109d;
tt114=td114+t114d;
tt116=td116+t116d;
tt118=td118+t118d;
tt305=td305+t305d;
tt407=td407+t407d;
hf102=h+tt102/60;
hf103=h+tt103/60;
hf104=h+tt104/60;
hf107=h+tt107/60;
hf108=h+tt108/60;
hf109=h+tt109/60;
hf114=h+tt114/60;
hf116=h+tt116/60;
hf118=h+tt118/60;
hf305=h+tt305/60;
hf407=h+tt407/60;
f102d=93.8676-2.2965*hf102+2.7731*ds-.3036*dm+.5503*m-5.7339*met;
f103d=15.2368-.0335*hf103+.4658*ds+.0072*dm+.0369*m+.5888*met;
f104d=17.8289-.0091*hf104-.6848*ds+.0505*dm-.3615*m+1.0264*met;
f107d=19.2946-.3681*hf107+.2231*ds-.0273*dm+.3195*m+1.1280*met;
f108d=-1.4252+2.0442*hf108-.5314*ds-.2657*dm+.2587*m-3.8529*met;
f109d=43.6246-1.0250*hf109+1.9967*ds-.0514*dm+1.0707*m-2.8429*met;
f114d=42.4843+.0303*hf114+.3279*ds+.1288*dm-.7244*m-3.1636*met;
f116d=12.4819+.0068*hf116-.0628*ds+.0544*dm+.1199*m+1.3318*met;
f118d=57.4220-2.2147*hf118+.5865*ds+.0446*dm+.0701*m-.3997*met;
f305d=85.5680-2.8428*hf305-1.3191*ds-.0032*dm-.0939*m+2.1931*met;
f407d=3.5534+.4210*hf407+.6049*ds-.1283*dm+2.0124*m+2.6063*met;
raft102=f102d/tt102;
raft103=f103d/tt103;
raft104=f104d/tt104;
raft107=f107d/tt107;
raft108=f108d/tt108;
raft109=f109d/tt109;
raft114=f114d/tt114;
raft116=f116d/tt116;
raft118=f118d/tt118;
raft305=f305d/tt305;
raft407=f407d/tt407;
raft102=0;
raft104=0;
raft109=0;
if h>20.5&h<23.5 raft107=0;
end
if h<22.5|h>23.5 raft108=0;
end
if h>16.5 raft114=0;
end if ds==1 raft118=0;
end
if ds<5&h>19.25 raft118=0;
end
if ds==5&h>21.25 raft118=0;
end
if ds==6&h>19.75 raft118=0;
end
if ds==7&h>18.25 raft118=0;
end if h<24 raft305=0;
end if h>24 raft407=0;
end
est=[102 103 104 107 108 109 114 116 118 305 407];
ra=[raft102 raft103 raft104 raft107 raft108 raft109 raft114 raft116 raft118...
raft305 raft407];
rama=max(ra);
mest=length(est);
for i=1:mest if ra(i)==rama sol=i;
end
end
fprintf('fatu102=%6.1f',f102d) fprintf(' fatu107=%6.1f',f107d) fprintf(' fatu114=%6.1f',f114d) fprintf(' fatu305=%6.1f',f305d)
fprintf(' fatu103=%6.1f',f103d) fprintf(' fatu108=%6.1f',f108d)
fprintf(' fatu116=%6.1f',f116d) fprintf(' fatu407=%6.1f',f407d)
fprintf(' fatu104=%6.1f',f104d) fprintf(' fatu109=%6.1f',f109d)
fprintf(' fatu118=%6.1f',f118d)
disp(' ')
fprintf('tempo102=%3.0f',tt102) fprintf(' tempo107=%3.0f',tt107) fprintf(' tempo114=%3.0f',tt114) fprintf(' tempo305=%3.0f',tt305)
fprintf(' tempo103=%3.0f',tt103) fprintf(' tempo108=%3.0f',tt108)
fprintf(' tempo116=%3.0f',tt116) fprintf(' tempo407=%3.0f',tt407)
fprintf(' tempo104=%3.0f',tt104) fprintf(' tempo109=%3.0f',tt109)
fprintf(' tempo118=%3.0f',tt118)
disp(' ')
fprintf('raft102=%7.2f',raft102)
fprintf(' td102=%3.0f',td102) fprintf(' te102=%3.0f',t102d)
fprintf(' raft103=%7.2f',raft103) fprintf(' td103=%3.0f',td103)
fprintf(' te103=%3.0f',t103d)
fprintf(' raft104=%7.2f',raft104) fprintf(' td104=%3.0f',td104)
fprintf(' te104=%3.0f',t104d)
fprintf(' raft107=%7.2f',raft107) fprintf(' td107=%3.0f',td107)
fprintf(' te107=%3.0f',t107d)
fprintf(' raft108=%7.2f',raft108) fprintf(' td108=%3.0f',td108)
fprintf(' te108=%3.0f',t108d)
fprintf(' raft109=%7.2f',raft109) fprintf(' td109=%3.0f',td109)
fprintf(' te109=%3.0f',t109d)
fprintf(' raft114=%7.2f',raft114) fprintf(' td114=%3.0f',td114)
fprintf(' te114=%3.0f',t114d)
fprintf(' raft116=%7.2f',raft116) fprintf(' td116=%3.0f',td116)
fprintf(' te116=%3.0f',t116d)
fprintf(' raft118=%7.2f',raft118) fprintf(' td118=%3.0f',td118)
fprintf(' te118=%3.0f',t118d)
fprintf(' raft305=%7.2f',raft305) fprintf(' td305=%3.0f',td305)
fprintf(' te305=%3.0f',t305d)
fprintf(' raft407=%7.2f',raft407)
fprintf(' td407=%3.0f',td407) fprintf(' te407=%3.0f',t407d)
best=est(sol)
fprintf('s=%4.0f ',s) fprintf('h=%6.2f ',h) fprintf('ds=%2.0f ',ds) fprintf('dm=%3.0f ',dm) fprintf('m=%3.0f ',m)
fprintf('met=%5.2f ',met)
ANNEXE 2
EXEMPLE DE BASE DE DONNEES POUR LE TEMPS D'ATTENTE
Prise en charge du client sur place.
La première et la dernière colonnes sont des compteurs.
La deuxième colonne indique les temps d'attente en minutes (minimum 1 min), les 3ème et 4ème l'heure d'arrivée dans la station, la 5ème le jour de la semaine, la 6ème le jour du mois, la 7ème le mois, la 8ème l'année et la 9ème la météo au moment du départ de la station.
Pour les conventions utilisées, se référer au corps principal de ce mémoire.
Gare Cornavin
min d'attente h-min js jm m an météo X116 =[16 7 21 28 2 29 6 1998 5 1 16 15 21 57 2 29 6 1998 5 2 16 1 27 53 2 29 6 1998 5 3 16 12 19 42 3 30 6 1998 6 4 16 23 20 05 3 30 6 1998 5.5 5 16 4 24 23 3 30 6 1998 5 6 16 5 26 13 3 30 6 1998 5 7 16 13 18 06 4 1 7 1998 5.5 8 16 18 19 41 4 1 7 1998 5.5 9 16 3 23 33 4 1 7 1998 6 10 16 10 24 16 4 1 7 1998 7 11 16 12 19 23 5 2 7 1998 7 12 16 7 22 09 5 2 7 1998 7 13 16 10 24 37 5 2 7 1998 7 14 16 2 24 26 6 3 7 1998 5 15 16 2 28 01 6 3 7 1998 5 16 16 4 28 20 6 3 7 1998 5 17 16 52 16 42 2 6 7 1998 5 18 16 32 17 56 2 6 7 1998 5 19 16 13 24 19 2 6 7 1998 5 20 16 10 20 54 4 8 7 1998 5.5 21 16 38 21 34 6 10 7 1998 5 22 16 14 20 32 2 13 7 1998 6 23 16 32 20 56 2 13 7 1998 6 24 16 7 24 49 2 13 7 1998 7 25 16 28 25 20 2 13 7 1998 7 26 16 12 22 02 4 15 7 1998 5 27 16 52 25 11 4 15 7 1998 5 28 16 13 22 01 6 17 7 1998 5 29 16 22 25 18 6 17 7 1998 5.5 30 16 15 17 55 2 20 7 1998 5 31 16 16 18 19 2 20 7 1998 5 32 16 11 18 42 2 20 7 1998 5 33 16 4 23 07 2 20 7 1998 5 34 16 8 24 38 2 20 7 1998 5 35 16 32 25 09 2 20 7 1998 5 36 16 27 24 38 3 21 7 1998 5.5 37 16 32 19 56 4 22 7 1998 5.5 38 16 10 24 34 4 22 7 1998 5.5 39 16 3 25 39 4 22 7 1998 5.5 40 16 18 20 46 5 23 7 1998 5 41 16 8 24 25 5 23 7 1998 5 42 16 23 24 51 5 23 7 1998 5 43 16 11 25 23 5 23 7 1998 5 44 16 26 26 10 5 23 7 1998 5 45 16 16 26 51 5 23 7 1998 5 46 16 21 19 49 6 24 7 1998 5.5 47
ANNEXE 3
EXEMPLE DE BASE DE DONNEES POUR LES RECETTES
Prise en charge du client sur place.
La première et la dernière colonnes sont des compteurs.
La deuxième colonne indique le prix des courses de taxi effectuées,
la 3ème l'heure de départ de la station, c'est-à-dire par exemple, 16 h pour un départ situé entre 15 h30 et 16 h 29, la 4ème le jour de la semaine, la 5ème le jour du mois, la 6ème le mois, la 7ème l'année et la 8ème la météo au moment du départ de la station.
Pour les conventions utilisées, se référer au corps principal de ce mémoire.
Place Bel-Air
recette en francs h js jm m an météo XF107 =[7 16 24 4 26 1 2000 6 1 7 15 16 5 27 1 2000 5 2 7 17 20 5 27 1 2000 5 3 7 16 21 5 27 1 2000 5 4 7 20 24 5 27 1 2000 5 5 7 30 24 5 27 1 2000 5 6 7 40 18 2 31 1 2000 5.25 7 7 20 19 2 31 1 2000 5.25 8 7 13 24 2 31 1 2000 5.25 9 7 13 15 3 1 2 2000 5.25 10 7 30 16 3 1 2 2000 5.25 11 7 15 17 3 1 2 2000 5.25 12 7 45 18 3 1 2 2000 5.5 13 7 26 20 3 1 2 2000 6 14 7 44 16 4 2 2 2000 7 15 7 15 19 4 2 2 2000 6.75 16 7 17 15 5 3 2 2000 5 17 7 15 16 5 3 2 2000 5 18 7 28 17 5 3 2 2000 5 19 7 15.7 18 5 3 2 2000 5 20 7 12 21 5 3 2 2000 5 21 7 17.5 24 5 3 2 2000 5 22 7 12 25 5 3 2 2000 5 23 7 10 16 6 4 2 2000 5 24 7 14.5 16 6 4 2 2000 5 25 7 15 17 6 4 2 2000 5 26 7 25.7 19 6 4 2 2000 5 27 7 10.8 24 6 4 2 2000 5 28 7 42 24 6 4 2 2000 5 29 7 13 16 2 7 2 2000 6 30 7 18.9 17 2 7 2 2000 6 31 7 18 17 2 7 2 2000 6 32 7 14 15 3 8 2 2000 7 33 7 15 16 3 8 2 2000 7 34 7 15 16 3 8 2 2000 7 35 7 15 18 3 8 2 2000 7 36 7 20 19 3 8 2 2000 7 37 7 13 19 3 8 2 2000 7 38 7 20.5 24 3 8 2 2000 7 39 7 17 17 4 9 2 2000 6 40 7 20 17 4 9 2 2000 6 41 7 15 18 4 9 2 2000 6.5 42 7 17.7 18 4 9 2 2000 6 43 7 10 23 4 9 2 2000 5.75 44 7 17 24 4 9 2 2000 5.5 45 7 30 15 5 10 2 2000 5.25 46