• Aucun résultat trouvé

Projet de programmation Transport Optimal

N/A
N/A
Protected

Academic year: 2022

Partager "Projet de programmation Transport Optimal"

Copied!
5
0
0

Texte intégral

(1)

Projet de programmation Transport Optimal

Instructions

Le projet est à rendre sous la forme d'un chier source Nom1_Nom2.m et d'un chier Nom1_Nom2.pdf avec les commentaires, Nom1 et Nom2 étant bien entendu vos noms.

Le chier .m doit être organisé autant que possible sous la forme de fonctions, avec une structuration claire et des noms de variables permettant de comprendre votre raisonnement.

Il doit pouvoir être exécuté tel quel.

Les deux chiers doivent être envoyés à etienne.birmele@parisdescartes.fr au plus tard le lundi 9 octobre 2017.

1 Introduction

Dans ce projet, on s'intéresse au problème du transport optimal ou du mariage entre deux nuages de points du plan R 2 . Soit n un entier. On considère 2n points X 1 , . . . , X n , Y 1 , . . . , Y n du plan.

Chaque point X k a des coordonnées que l'on note (x 1 k , x 2 k ) dans le plan, et chaque point Y k a des coordonnées que l'on note (y 1 k , y 2 k ). On cherche à résoudre le problème de transport optimal (ou de mariage optimal) entre les points (X j ) 1≤j≤n et les points (Y j ) 1≤j≤n , c'est-à-dire que l'on cherche la permutation σ de l'ensemble {1, . . . , n} qui permet d'atteindre le minimum de la quantité

n

X

i=1

kX i − Y σ(i) k 2 2 . (1)

Ce problème est très classique en logistique ou en économie : on peut par exemple imaginer que des marchandises sont stockées dans des fabriques situées aux points X i et que chaque Y j représente un client. On souhaite alors répartir le transport des marchandises des fabriques vers les clients de manière à ce que le coût total de transport soit le plus petit possible. Dans ce qui suit, on notera

X =

 X 1

...

X n

 et Y =

 Y 1

...

Y n

les matrices à n lignes et 2 colonnes contenant l'ensemble des points X k et Y k . X et Y sont appelés des nuages de points du plan.

Commencez par créer deux nuages de points X 0 et Y 0 sous la forme de matrices n × 2 et par les visualiser, par exemple en tirant les points aléatoirement avec une loi uniforme sur le carré [0, 1] × [0, 1].

n= 10;

X0 = rand(n,2); % création du premier nuage

Y0 = rand(n,2); % deuxième nuage

clf()

1

(2)

×

×

×

×

×

Figure 1 Deux nuages de points de R 2 . Le nuage X est représenté par des disques et le nuage Y par des croix. On souhaite marier les points de X et les points de Y de manière à rendre la somme des distances au carré entre points mariés la plus petite possible.

hold on

scatter(X0(:,1),X0(:,2),color='b',style='o'); % affichage du premier nuage (ronds bleus) scatter(Y0(:,1),Y0(:,2),color='r',style='x'); % affichage du deuxième nuage (croix) rouges hold off

2 Transport en dimension 1

On suppose dans un premier temps que les deux nuages de points X et Y sont dans R et pas dans R 2 . On pourra donc écrire dans cet exercice X et Y comme des vecteurs colonnes de longueur n . Les points de X ne sont pas forcément ordonnés, on note donc σ X : {1, . . . , n} −→ {1, . . . , n} la permutation qui ordonne les points de X de manière croissante :

X σ

X

(1) ≤ X σ

X

(2) ≤ · · · ≤ X σ

X

(n) .

De même, on note σ Y : {1, . . . , n} −→ {1, . . . , n} la permutation qui ordonne les points de Y de manière croissante.

Dans ce cas particulier (nuages dans R), la permutation σ qui permet de rendre la quantité (1) la plus petite possible est celle qui envoie le k ieme plus petit point de X sur le k ieme plus petit point de Y . Cette permutation peut s'écrire

σ = σ Y ◦ σ X −1 .

1. Expliquez pourquoi le minimum de la quantité (1) est alors égal à

n

X

i=1

kX σ

X

(i) − Y σ

Y

(i) k 2 2 . (2) 2. Ecrire une fonction transport1D (X, Y ) qui prend en entrée les vecteurs X et Y et renvoie les

vecteurs de permutations

s X =

σ X (1) ...

σ X (n)

 et s Y =

 σ Y (1)

...

σ Y (n)

(3)

et la quantité (2). On pourra utiliser la fonction sort.

3 Transport par projections en deux dimensions

On souhaite maintenant résoudre le problème pour deux nuages de points X et Y dans le plan.

Dans ce qui suit, on rappelle que chaque nuage de points Z de taille n pourra s'écrire sous la forme d'une matrice à n lignes et 2 colonnes :

Z =

 Z 1

...

Z k

...

Z n

=

z 1 1 z 1 2 ... ...

z k 1 z k 2 ... ...

z n 1 z n 2

 ,

où (z k 1 , z 2 k ) sont les coordonnées du point Z k dans le plan.

Remarque : Trouver la permutation σ qui rend la quantité (1) la plus petite possible est un problème dicile en pratique, on propose donc de le résoudre de manière approchée. Pour cela, on propose un algorithme itératif qui va progressivement déplacer les points de X vers les points de Y en résolvant plusieurs problèmes unidimensionnels successifs.

L'algorithme approché que l'on propose d'utiliser est itératif et consiste à répéter M fois des étapes de projection et de déplacement des points du nuage X . On détaille ces étapes dans ce qui suit.

Projection aléatoire. A chaque étape, on tire aléatoirement une direction θ dans ] − π/2, π/2]

avec une loi uniforme et on note u θ le vecteur u θ =

cos(θ) sin(θ)

. On projette ensuite les points de X et les points de Y orthogonalement sur la droite du plan passant par 0 et de vecteur directeur u θ (voir la Figure 2). On obtient ainsi deux nouveaux nuages de points U et V , qui peuvent être vus comme des nuages de points sur R.

θ

?

×

? ×

?

×

?

×

?

× ? ◦ ◦ ? ◦ ◦ ? ? ◦ ? θ

Figure 2 Projections des nuages X et Y selon la direction θ . Après projection, on obtient un

problème de mariage entre deux nouveaux nuages de points U et V en une dimension.

(4)

Déplacement des points de X. Une fois les vecteurs U et V calculés, on détermine les vecteurs de permutations s X et s Y qui ordonnent les projections U et V , par exemple en leur appliquant la fonction transport1D de l'exercice 1.

Ensuite, on fait évoluer le nuage de points X dans la direction de u θ , proportionnellement au déplacement entre U et V . Plus précisément, on met à jour les positions de X par la formule

∀1 ≤ i ≤ n, X s

X

(i) = X s

X

(i) + ε (V s

Y

(i) − U s

X

(i) ) u θ ,

où ε > 0 est le pas de l'algorithme et est xé par l'utilisateur.

Algorithme de Transport optimal par projections. On répète ces étapes de projection et de déplacement M fois, en tirant à chaque fois une nouvelle direction aléatoire θ pour la projection.

Si le pas de l'algorithme ε est bien choisi et si le nombre d'itérations M est susamment grand, les points du nuage X doivent coïncider à la n de l'algorithme avec ceux du nuage Y .

Au nal, le pseudo-code de l'algorithme complet de transport approché peut s'écrire de la manière suivante :

Pseudo-code

Entrée : nuages X 0 et Y 0 , pas ε , nombre d'itérations M . Sortie : nuage X déplacé et coût total de transport C . Initialisez X = X 0 et Y = Y 0 .

for k = 1 to M do

Tirer θ aléatoirement dans ] − π/2, π/2] (loi uniforme).

U = projection (X, θ) . V = projection(Y, θ).

[s X , s Y ] = transport1D (U, V )

∀1 ≤ i ≤ n , X s

X

(i) = X s

X

(i) + ε (V s

Y

(i) − U s

X

(i) ) u θ Coût total C = P n

i=1 kX s 0

X

(i) − Y s 0

Y

(i) k 2 2 . Fin du pseudo-code

1. Ecrire une fonction [X, C] = transport(X 0 , Y 0 , N, ε) qui fait évoluer le nuage de points X 0 vers le nuage de points Y 0 et calcule le coût de transport entre eux grâce à l'algorithme précédent.

2. An d'accélérer l'algorithme, on décide de stopper les itérations de la boucle FOR lorsque le maximum sur k des distances kX s

X

(k) − Y s

Y

(k) k 2 est inférieur à un seuil δ xé par l'utilisateur.

Modier la fonction Scilab précédente pour prendre en compte ce ranement et commentez.

3. Lancez l'algorithme plusieurs fois sur les mêmes données et observer les résultats obtenus.

Les directions θ de projection étant choisies aléatoirement au cours des étapes, le résultat de l'algorithme (à la fois le coût de transport C et la manière dont les points sont mariés) peut changer d'une expérience à l'autre. L'algorithme est-il stable en pratique ? Commenter la stabilité lorsque l'on change le nombre de points n des nuages, les valeurs du pas ε et le nombre d'itérations.

4. Pour rendre l'algorithme plus robuste, on peut imposer à chaque itération l'utilisation succes- sive d'une direction θ et de sa direction orthogonale. On répète pour cela l'étape de projection et de déplacement des points de X d'abord avec le vecteur u θ =

cos(θ) sin(θ)

, puis avec le vecteur u θ

=

− sin(θ) cos(θ)

. Modier le code transport pour prendre en compte cette amé- lioration.

5. Ecrire une fonction qui sur un même nuage de points lance une centaine de fois les deux

versions de l'algorithme et renvoie l'échantillon des coûts correspondants. Comparer les deux

algorithmes à l'aide de ses échantillons (histogrammes, moyenne/variance, tests ... ).

(5)

4 Question optionnelle

Décrire, implémenter et appliquer à un jeu réel ou simulé un algorithme de transport en trois

dimensions.

Références

Documents relatifs

Table 1: Data occurrence cases. A 1 represents that marker data existed for that sample. A 0 represents that marker data did not exist for that sample... 18 Table 2:

Ces ITU sont généralement classées en fonction de la localisation de l’infection (vessie [cystite], rein [pyélonéphrite], prostate.. Profil de résistance

Signal de bruit dans le canal de transmission Signal de bruit a la sortie du moyenneur Longueur de la séquence pseudo-aléatoire.. Non Retour

Abele (2017), l’existence de tombes très riches est avérée dès le début du fonctionnement de la nécropole, mais ce n’est que dans la dernière phase qu’elles

The built model is a 2D axisymmetric problem, based on the H formulation and coupled with electrical equations though the magnetic flux seen by the magnetizing coil.. The calculation

Its principle has been developed by Natalia Yaitskova, Kjetil Dohlen and Luzma Montoya (see Yaitskova & al. The telescope beam is focused inside the Mach-Zehnder interferometer.

Then, for each type of reference marker presented in Table 2 (names, indefinite, definite or unaccented pronouns), we used logistic mixed model analyses to assess

طخلا ىلع قيثوتل ةينطولا ةباوبلا SNDL لا لوصولل ةليسو ربتعي : ةينورتكللإا قئاثولا ى ،بتك( يملعلا ثحبلاو سيردتلا تلااجم عيمج يطغتو ةعونتمو ةينغ