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

MATLAB Discussion :

[fminsearch] Borner la recherche


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 5
    Points
    5
    Par défaut [fminsearch] Borner la recherche
    Bonjour,

    J'utilise la fonction fminsearch sous MATLAB pour résoudre une optimisation (7 inputs).

    j'applique donc la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tpsguess=[0.1 0.1 0.1 0.1 0.1 0.1 0.1];
    onset= fminsearch(@fct,tpsguess);
    cependant je veux absolument que mes valeurs trouvées soient positives (car elle définissent un temps).
    Je souhaitais donc savoir comment je pouvais "forcer" fminsearch à ne chercher la solution optimum, uniquement avec des "tpsguess >= 0".

    Actuellement si je n'impose pas cette contrainte j'obtiens des valeurs négatives et positives:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onset = 0.0745   -0.0418    0.0751    0.0367   -0.0598   -0.0429    0.0119
    J'espère avoir été assez précis.

    Cordialement

    Yoann

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Utilise fmincon à la place de fminsearch pour spécifier des contraintes.

    Le cas ou tu veux tout les paramètres positifs peut s'écrire de 2 manières (en reprenant les notations de doc fmincon):
    1/ Ax< b, avec A= -eyes(N,N) et b= zeros(N,1)
    2/ lb= zeros(N,1)

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    fminsearch de permet pas d'ajouter des contraintes sur les variables, il faut utiliser une fonction qui les admet, par exemple sur le file exchange :
    fminsearchbnd

    Ou alors il faut regarder du côté des fonctions de la toolbox optimization.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup

    la fonction fmincon a l'air de bien marcher.

    Par contre fminbnd ne semble pas marcher avec un vecteur.

    Dans tous les cas mon problèm eest résolu.

    Cordialement

    Yoann

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par yoyo42300 Voir le message
    Par contre fminbnd ne semble pas marcher avec un vecteur.
    Pour les variables? L'exemple donné utilise justement un vecteur...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    désolé, j'avais mal regardé le script,

    en effet cela à l'air de marcher plutôt bien.
    J'ai fait une optimisation rapide en mettant uniquement une borne inferieure
    [0 0 0 0 0 0 0]

    par contre je ne trouve pas le même résultat si je change le x0 initial:

    par exemple si je mets :

    x0 = [0 0 0 0 0 0 0] ou x0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]

    pouvez vous m'expliquer pourquoi?

    merci

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par yoyo42300 Voir le message
    par contre je ne trouve pas le même résultat si je change le x0 initial:
    C'est parce que pour ce genre de fonctions, le résultat dépend de l'initialisation. C'est une recherche de minimum local donc suivant le point de départ le résultat peut être différent. Il faudrait plus d'informations sur le résultat que tu obtiens pour pouvoir te donner plus d'explications a priori.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    ok,

    lorsque je pars de x0 =[0 0 0 0 0 0 0]

    j'obtient des valeurs x d'ordre 10^-7et lorque je pars de x0 =[0.001 0.001 0.001 0.001 0.001 0.001 0.001]

    j'obtiens le résultat suivant :

    x = [0.0899 0.0460 0.0797 0.0517 0.0689 0.0472 0.0231]

    lorsqu'on fait un fminsearch sans contrainte, le x0 de départ influe aussi sur le résultat?

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Et dans chaque cas, que vaut fct(x)?

    Citation Envoyé par yoyo42300 Voir le message
    lorsqu'on fait un fminsearch sans contrainte, le x0 de départ influe aussi sur le résultat?
    fminsearchbnd utilise fminsearch donc oui, l'initialisation influence le résultat, et c'est le cas de toutes les méthodes de minimisations numériques qui demandent une initialisation. Je pense que ce qui est important à comprendre c'est que ces fonctions recherchent un minimum local et non un minimum global.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    ok j'ai compris, j'avais oublié cette histoire de minimum local.
    C'est pour ça que lorsque c'est possible on préfère utiliser les "genetic algorythmes".

    ma valeur f(x), change bien en fct de l'initialisation, donc j'ai juste à prendre la solution me donnant ma plus petite valeur f(x).

    Une dernière question:

    Comment je peux savoir si j'ai réellement trouvé mon minimum global et non pas un autre minimum global. (biensur je pourrais tester toutes les possibilités d'initialisation, mais à 7 inconnues ça fait beaucoup).

    Merci pour toutes les infos.

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par yoyo42300 Voir le message
    Comment je peux savoir si j'ai réellement trouvé mon minimum global et non pas un autre minimum global. (biensur je pourrais tester toutes les possibilités d'initialisation, mais à 7 inconnues ça fait beaucoup).
    Tu ne peux pas le savoir directement, le seul moyen est de faire une analyse précise de ta fonction pour savoir si tu cherches au bon endroit.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  2. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  3. Réponses: 8
    Dernier message: 17/05/2002, 09h08
  4. [PRO*C] Recherche information
    Par Anonymous dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2002, 17h53
  5. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09

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