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 :

[fmincon] minimisation d'une fonction avec paramètre


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Points : 34
    Points
    34
    Par défaut [fmincon] minimisation d'une fonction avec paramètre
    Bonjour à tous,

    Voici mon problème simplifié, j'espère que l'on pourra trouver un solution.

    J'ai dans mon programme principal une minimisation à faire. Je veux minimiser la fonction test_min selon les valeurs de x. Jusque là, rien de bien sorcier mais il faudrait qu'en plus de x la fonction à minimiser accepte un intrant (exemple rf) de donnée provenant du prog principal. Et la je bug !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % prog principal
    clear all 
    clc
    rf = 2;
    [x] = fmincon(@test_min,0,1,10);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %fonction
    function [f ] = test_min( x , rf )
    f = x^2 +2 +rf

    merci beaucoup

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Tu trouveras la réponse dans la FAQ : Que représente le symbole @ ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    j'ai trouvé avec les variables globales
    merci beaucoup

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur validation
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    j'ai un probléme en utilisant fmincon. je travaille sur la commande prédictive et les sortie prédite de mon système sont en fonction des d'entrée de commande que je les ai déclaré sous forme des variables symboliques. le problème que la fonction "fmincon" n'accepte pas des entrées de type symbolique.
    dans l'attente de votre réponse veuillez accepter mon profond respect.

  5. #5
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par lefevrelaumonier Voir le message
    j'ai trouvé avec les variables globales
    merci beaucoup
    arg !!
    il faut eviter tant que possible les variables global (sous matlab ou sous tout logiciel de programmation)
    et plutot utiliser la synatxe @ correctement comme te le suggerait Dut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [x] = fmincon(@(x) test_min(x,rf),0,1,10);
    cette syntaxe créé une fonction anonyme (cad sans nom) qui prend seulement x comme paramètre (comme l'attend fmincon) et qui exécute test_min(x,rf), rf devant être déclaré dans le workspace local (de là ou on appele fmincon)

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par ntouzouti Voir le message
    j'ai un probléme en utilisant fmincon. je travaille sur la commande prédictive et les sortie prédite de mon système sont en fonction des d'entrée de commande que je les ai déclaré sous forme des variables symboliques. le problème que la fonction "fmincon" n'accepte pas des entrées de type symbolique.
    dans l'attente de votre réponse veuillez accepter mon profond respect.
    en effet fmincon est une méthode d'optimisation numérique, et non symbolique !
    (de toute façon on fait pas d’optimisation en symbolique : on fait de la résolution (via solve par exemple) si c'est possible)

    pour utiliser fmincon à partir d'un problème décrit symboliquement, il faut le ramener à une écriture numérique, en utilisant les fonctions subs, matlabFunction et éventuellement gradient et hessian
    je te suggère la lecture de ceci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier onclick dynamiquement pour passer une fonction avec paramètres
    Par denisosteo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/01/2014, 12h38
  2. Appel d'une fonction avec paramètre OUT
    Par Bibeleuh dans le forum PL/SQL
    Réponses: 6
    Dernier message: 04/05/2012, 17h51
  3. Appel à une fonction avec paramètre contenant apostrophe
    Par tomy29 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2012, 19h10
  4. Réponses: 3
    Dernier message: 20/01/2012, 14h18
  5. Executer une fonction (avec paramètres) dans un thread secondaire
    Par you38 dans le forum Threads & Processus
    Réponses: 21
    Dernier message: 06/08/2010, 08h12

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