IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Problème de minimisation


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut Problème de minimisation
    Salut, comment-y k'est-ce qu'on fait avec le truc suivant: dans une compact connexe K du plan, comment choisir N points K tel que

    - toute paire de points a un distance supérieur à une constante C
    - la somme de ces distances est minimale

    Gné?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    En faisant du circle packing dans un compact ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Nan, passqu'euh mon nombre de points N et mon D est petit par rapport à mon compact.

    En fait Pseudocode, si tu veux le détail, voila:

    mon K est décomposé en un pavage de "briques", et il y a en a beaucoup. Je veux decomposer mon K en N ensembles disjoints de briques, ensembles qui doivent tous avoir "à peu près" la meme taille. Ensuite, je vous trouver une brique dans chacun des N ensembles de telle sorte que la somme des distances entre ces N briques soit minimale.
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Et bien heu... y a donc deux problèmes distincts ?

    1. décomposer K en N ensembles disjoints qui ont tous a peu près la même taille
    2. trouver un circuit de N points (chacun dans un ensemble) qui soit de longueur minimale

    Ou alors les deux problèmes sont liés ? Il faut décomposer K de telles facon que le circuit soit minimum ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    oui 1 est aussi un problème!! Mais disons pour simplifier que tu fais un Voronoï en N-morceaux et tu passes au problème 2...


    (mais si tu sais optimiser d'un coup 1+2, I take)
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    oui 1 est aussi un problème!! Mais disons pour simplifier que tu fais un Voronoï en N-morceaux et tu passes au problème 2...
    Hum... pas évident. Mathématiquement, vu qu'on est dans un cas continu je suppose qu'on doit pouvoir utiliser les multiplicateurs de Lagrange.

    Mais ca serait moi, je ferais de multiples essais avec un algo simplex (Nelder–Mead).

    (mais si tu sais optimiser d'un coup 1+2, I take)
    Heu... non.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    J'essaie de comprendre le pb.
    Tu as un pays K de forme donnée composé de M communes que tu veux regrouper en N départements, définir un chef-lieu au centre de chaque département.
    Ensuite construire des autoroutes qui relient 2 à 2 les chef-lieus.
    N est-il donné au départ ?
    Le critère "somme des distances" est-il le mieux adapté ?
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  8. #8
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    l'idée d'utiliser des multiplicateurs de Lagrange semble a priori être une bonne approche. Tu cherches un ensemble E={x1,x2,...xN} de N points de K tels que
    la fonctionnelle "somme des distances" soit minimale avec des contraintes d'inégalité que tu introduis par des multiplicateurs de Lagrange. Par contre, tel que tu as posé ton problème initial, les briques dont tu parles n'interviennent pas. Mais peut-être que cela ne te pose pas de problème de les définir a posteriori?

  9. #9
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    tu peux préciser? Comment user de multiplicateur de Lagranges sur un problème de multi-déplacements?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  10. #10
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    je ne sais pas ce que tu appelles un problème de multi-déplacements. Tel que tu as posé ton problème initialement, il s'agit d'un problème de partitionnement en pavage de Voronoi qui peut se résoudre soit par une approche géométrique (Delaunay), soit par une approche numérique (k-means,vq,kohonen,etc). La fonctionnelle que tu souhaites minimiser est tout à fait particulière et nécessite d'introduire des multiplicateurs pour tenir compte de tes contraintes. Enfin, j'opterai plutôt pour une approche stochastique par descente de gradient, ou équivalent, que pour une approche déterministe par minimisations locales successives. Concernant l'approche géométrique, il faudrait par exemple pouvoir générer un très grand nombre de points dans ton domaine K (par Monte-Carlo ou autre selon la connaissance que tu as de K), puis ensuite le mailler (a priori de manière non structuré par Delaunay si K n'a pas une forme particulière ou tensorisée), puis ensuite partitionner a posteriori ce maillage (enfin le graphe correspondant) comme ce qu'on fait en calcul parallèle pour l'équilibrage de tâche ou les méthodes de décomposition de domaine (il existe des bibliothèques pour ça, par ex. METIS et ParMETIS).

  11. #11
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    L'algorithme implémenté actuellement procède effectivement par une décomposition en zone de Voronoï; chaque médoïde des zones de Voronoï subit un petit déplacement dans les 4 directions et ceci récursivement sur les N zones pour rechercher un optimal. Le point de "départ" initialisant le 1ier découpage en 2 zones de Voronoï parcourt aussi le périmètre de K.

    Cet algorithme donne une solution raisonnable, mais le temps de calcul est long. On envisage aussi un choix de N points dans les Voronoï par algorithme génétique ou par swarm optimisation.


    Concernant l'approche par multiplicateur, ok pour la fonction somme des distance à différentier, mais comment modélises-tu des contraintes???
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  12. #12
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    Concernant l'approche par multiplicateur, ok pour la fonction somme des distance à différentier, mais comment modélises-tu des contraintes???
    Les multiplicateurs de Lagrange te servent justement à prendre en compte tes contraintes. Jette un oeil à ce document :
    http://math.unice.fr/~dreyfuss/P13.pdf
    et en particulier aux théorèmes 18 et 19 pages 41 et 42.

    Si le document ne te convient pas, tu peux faire une recherche sur google avec les mots-clés "cours" et "optimisation".

  13. #13
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Je connais les multiplicateurs, merci!
    Mais ici, je ne vois pas comment definir les contraintes.

    La fonction fitness f a 2*n variables, et se differencie aisément.
    Mais quid de la contrainte? Appartenance
    D'un point a K? Soit un ensemble d'inegalites d'hyperplans?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  14. #14
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    si j'ai bien compris ton problème initial, tes contraintes sont des inégalités et portent sur la distance minimale entre deux points quelconques :
    toute paire de points a un distance supérieur à une constante C

  15. #15
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    D'accord tu repars du problème simplifié initial.

    Dans le cas où il n' y a pas cette contrainte, mais où K est partitionné en N zones de même taille (sauf la derniere, le "résiduel"), comment définir la contrainte d'appartenance d'un point à un zone, si ce n'est pas une liste d'équations ax+by< ou >c? Liste obtenue à partir d'une liste de points définissant le périmètre de la zone?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  16. #16
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    en s'inspirant des pavages de Voronoi. Le tien est certainement centroidal. Un point x appartient à une zone si et seulement la distance entre x et la germe g de cette zone est strictement inférieure aux distances entre x et les autres germes (je considère que ton pavage est ouvert pour ne pas avoir de cas indécidables).

  17. #17
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Tu as raison, à une modif près c'est une très bonne idée... je vais la faire tester pour voir ce que ça donne.

    Merci
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  18. #18
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonsoir,

    en s'inspirant des pavages de Voronoi. Le tien est certainement centroidal. Un point x appartient à une zone si et seulement la distance entre x et la germe g de cette zone est strictement inférieure aux distances entre x et les autres germes (je considère que ton pavage est ouvert pour ne pas avoir de cas indécidables).
    J'ai regardé... et tout cela est difficle... je reprends le problème:

    "
    mon K est décomposé en un pavage de "briques", et il y a en a beaucoup. Je veux decomposer mon K en N ensembles disjoints de briques, ensembles qui doivent tous avoir "à peu près" la meme taille. Ensuite, je vous trouver une brique dans chacun des N ensembles de telle sorte que la somme des distances entre ces N briques soit minimale.
    "


    En prenant N briques comme variables du modèles, puis
    - en définissant les N cellules de Voronoi associées pour obtenir les nombres de briques NBn de ces cellules
    - on définit les containtes par

    1) somme des distances minimales
    2) Tous les NBn inférieurs à une constante M

    La j'ai correctement modélisé pour faire du multiplicateurs. Mais... le problème est que je ne sais absolument pas expliciter NBn: K est compact, mais n'est pas forcément connexe ni convexe...

    Je suis preneur d'autres idées! En l'état, on fait du génétique et pis c'est tout
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  19. #19
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    mon K est décomposé en un pavage de "briques", et il y a en a beaucoup. Je veux decomposer mon K en N ensembles disjoints de briques, ensembles qui doivent tous avoir "à peu près" la meme taille.
    Je ne sais pas ce que tu entends par "briques" mais ton problème ressemble beaucoup à ce que l'on trouve dans les méthodes de décomposition de domaine, à savoir : partitionner un domaine maillé en N sous-domaines de taille similaire. La bibliothèque METIS permet de faire cela :
    http://glaros.dtc.umn.edu/gkhome/views/metis
    Tu pourras trouver les détails des algorithmes employés dans la documentation et les publications associées. Il faut avoir quelques notions en théorie des graphes. Il y a aussi une version parallèle si besoin (ParMETIS). Tu peux contacter l'auteur, il répond aux questions.

    Citation Envoyé par Nemerle Voir le message
    Ensuite, je vous trouver une brique dans chacun des N ensembles de telle sorte que la somme des distances entre ces N briques soit minimale.
    C'est peut-être une fausse bonne idée, mais a priori je commencerai par éliminer toutes les briques qui ne touchent pas de "bord" (les briques intérieures en quelque sorte) parce qu'intuitivement je pense qu'elles ne sont pas dans l'ensemble des solutions. Concernant la complexité de ton problème, ca te permet de passer d'un problème de dimension D à un problème de dimension D-1 (grosso modo). Partant de ce principe, je pense qu'une énumération doit être relativement efficace (par rapport au temps global de toute la procédure) même s'il y a sûrement plus malin.

    Citation Envoyé par Nemerle Voir le message
    Mais... le problème est que je ne sais absolument pas expliciter NBn: K est compact, mais n'est pas forcément connexe ni convexe...
    Il faut vraiment que tu expliques ce qu'est une brique pour toi. Il y a sûrement moyen de s'en sortir en utilisant la relation d'Euler, quitte à passer par le dual de K (triangulation) et une étape de raffinement pour avoir des "briques". Au fait, tu travailles en quelle dimension?

    Quelles sont les propriétés de K? Est-ce un polyèdre? Les composantes connexes de K sont-elles convexes, simplement connexes? Connais-tu ces propriétés à l'avance ou faut-il les détecter?

  20. #20
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Je ne sais pas ce que tu entends par "briques" mais ton problème ressemble beaucoup à ce que l'on trouve dans les méthodes de décomposition de domaine, à savoir : partitionner un domaine maillé en N sous-domaines de taille similaire.
    Certes (on connait, on utilise un processus de Voronoi pour obtenir de telles décompositions dans l'algo génétique), mais ce que je cherche, c'est un peu plus: partitionner un domaine de telle sorte que la somme des "distances" entre sous-domaines soit minimale; la "distance entre 2 sous-domaine étant librement définie par le choix préalable d'un point (=une brique) dans le domaine, qui joue le jeu de centroïde.

    Donc mes varia sont

    - la partition
    - le choix d'un point (=une brique) dans chaque sous-domaine.

    Mon domaine (2D) est naturellement décomposé par un pavage rectangulaire régulier, et j'appelle "brique" un élément de ce pavage. Ce domaine est "juste" compact: pas connexe, pas convexe, avec des "trous",etc...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

Discussions similaires

  1. Problème de minimisation
    Par psy4-vip dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 15/04/2011, 16h16
  2. Problème de minimisation
    Par atoly dans le forum MATLAB
    Réponses: 0
    Dernier message: 28/03/2011, 12h14
  3. Problème de minimisation de coût
    Par kululu dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 14/01/2011, 18h12
  4. Problème de minimisation sous contrainte
    Par kitts dans le forum MATLAB
    Réponses: 2
    Dernier message: 24/01/2008, 17h40
  5. Problème avec le bouton "minimiser"
    Par marcootz dans le forum C++Builder
    Réponses: 8
    Dernier message: 25/09/2007, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo