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 d'optimisation avec contrainte


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Problème d'optimisation avec contrainte
    Bonjour à tous,

    Je suis confronté à un problème d'optimisation et je ne vois pas du tout comment partir dans mon algorithme pour le résoudre.
    En plus je pense que c'est quelque chose d'assez classique et pas compliqué, mais je n'ai rien trouvé de satisfaisant sur le net.

    Mon problème est le suivant:
    J'ai 5 variables (A B C D E pour simplifier) qui ont chacune un poids (Aw Bw Cw Dw Ew)
    Chaque poids peut varier de 0 à 100% avec comme contrainte que la somme de tous les poids fassent 100%

    Je voudrais stocker dans une matrice tous les résultats des combinaisons de tous les poids possibles avec un pas de X% (par exemple avec un pas de 5%)

    Il faudrait donc que je teste toutes les situations:
    100 - 0 - 0 - 0 - 0
    95 - 5 - 0 - 0 - 0
    95 - 0 - 5 - 0 - 0
    .....
    20 - 20 -20 -20 -20
    .....
    0 - 0 - 0 - 0 - 100


    Ca fait pas mal de combinaisons mais vu que je travaille en petite dimension ca devrait tourner dans des temps raisonnables.

    Là où j'ai besoin de votre aide c'est pour me guider sur la façon d'organiser les boucles afin d'être sûr de ne pas rater une combinaison


    D'avance merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Points : 752
    Points
    752
    Par défaut
    Il faudrait voir quel est exactement la fonction que tu veux optimiser, notamment si elle est convexe, vu tes contraintes, il y a des algorithmes plus efficaces que la force brute pour trouver la solution.

    Sinon il suffit de boucler sur toutes tes variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (i1=0;i1<=20;i1++){
      a = 20*i1;
      for (i2=0;i2<=20;i2++){
        b = 20*i2;
        for (i3=0;i3<=20;i3++){
          c = 20*i3;
         .....
       }
      }
    }

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Alexis.M Voir le message
    Il faudrait voir quel est exactement la fonction que tu veux optimiser, notamment si elle est convexe, vu tes contraintes, il y a des algorithmes plus efficaces que la force brute pour trouver la solution.

    Sinon il suffit de boucler sur toutes tes variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (i1=0;i1<=20;i1++){
      a = 20*i1;
      for (i2=0;i2<=20;i2++){
        b = 20*i2;
        for (i3=0;i3<=20;i3++){
          c = 20*i3;
         .....
       }
      }
    }
    Le soucis c'est qu'avec mes contraintes, pour une résolution en continu ca ne fonctionne pas.
    Je sais que ce n'est pas la solution optimale ni la plus jolie, mais au moins j'aurai un résultat rapidement (et je vais continuer à chercher une meilleure façon pour résoudre)

    En tout cas merci pour l'idée des boucles for imbriquées, c'est exactement ça que je cherchais !

  4. #4
    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
    for i1:=0 to 20
    for i2:=0 to 20-i1
    for i3:=0 to 20-i1-i2
    ...
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  5. #5
    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,

    as-tu essayé la méthode du simplexe? Elle est disponible dans la plupart des tableurs (Excel, ...).

  6. #6
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonjour,

    as-tu essayé la méthode du simplexe? Elle est disponible dans la plupart des tableurs (Excel, ...).
    +1 pour la méthode du simplexe !

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonjour,

    as-tu essayé la méthode du simplexe? Elle est disponible dans la plupart des tableurs (Excel, ...).
    Bonjour,

    Oui j'ai essayé par le solveur excel, cela a même était ma 1ère idée.

    Cependant, avec mes contraintes, le solveur n'arrive pas à résoudre toutes les situations.
    C'est pour cela que j'avais besoin d'une méthode un peu "bourrine" pour tester toutes les combinaisons avec un pas paramétrable.
    Comme celà je fais solveur excel et si j'ai un soucis alors je fais l'autre méthode.

  8. #8
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    A part
    Citation Envoyé par Fluxe Voir le message
    Chaque poids peut varier de 0 à 100% avec comme contrainte que la somme de tous les poids fassent 100%
    quelles sont tes autres contraintes ?

Discussions similaires

  1. Problème d'optimisation avec Cplex
    Par CliffeCSTL dans le forum Mathématiques
    Réponses: 0
    Dernier message: 31/12/2012, 11h18
  2. Réponses: 1
    Dernier message: 26/07/2012, 12h44
  3. Réponses: 0
    Dernier message: 19/04/2012, 10h15
  4. Problème d'optimisation avec contrainte
    Par mouuuhamed dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/05/2011, 17h07
  5. Réponses: 9
    Dernier message: 27/04/2006, 15h02

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