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 :

Algorithme Optimisation Control Command


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Algorithme Optimisation Control Command
    Bonjour à tous,

    Je travaille actuellement sur une loi de commande permettant l'asservissement d'un système mécanique. Je fais ce que l'on appelle du "loop shaping". Je façonne la boucle ouverte de mon système en y imposant un certain nombre de critères sur les marges de robustesse. J'aimerai réalisé un algorithme d'optimisation sous Matlab me permettant de minimiser un critère J correspondant au maximum d'amplitude de la boucle fermée du système tout en garantissant une marge de phase minimale sur la boucle ouverte. J'ai la toolbox optimisation Matlab mais je constate qu'il y a énormément de fonction disponible telle que fmincon, que l'on m'a suggéré d'utiliser. N'aillant jamais fait d'optimisation en automatique auparavant, auriez-vous des suggestions pour me guider.

    Merci par avance
    Neodole

  2. #2
    Modérateur

    salut

    il y a en effet plusieurs fonctions utilisables dont fmincon, qui fait une minimisation sous containte
    il y en a des plus simple (comme fminbnd ou fminunc) si tu as peu ou pas de contraintes

    mais la mécanique est la même dans tous les cas, il faut te créer une fonction "coût" à minimiser

    dans le cas de fmincon, cette fonction doit avoir pour prototype f(x) ou x est un vecteur contenant tous tes paramètres à optimiser
    bien évidement si tu as des paramètres "statiques" (cad pas à optimiser) tu peux utiliser la syntaxe des foncitons anonymes pour y parvenir (@(x) f(x,a,b) par exemple)

    la fonction coût doit retourner un nombre à minimiser, cad que la solution que tu recherche correspond à une petite valeur de ce nombre ... à priori J si je t'ai bien suivi

    Fabien

  3. #3
    Membre à l'essai
    Salut Fabien,

    Désolé mais je n'avais pas vu ta réponse depuis….donc merci. J'ai pas mal progressé sur l'optimisation avec Fmincon et j'ai une question sur les options. J'ai une fonction d'optimisation qui contient un vecteur avec 1 seule variable à optimiser et qui est un entier. Je n'arrive pas à trouver l'option de fmincon qui me permet de changer le pas entre chaque optimisation de x. As-tu une idée ?

    Merci par avance
    Neodole

  4. #4
    Modérateur

    salut

    tu peux utiliser l'option typicalX pour cela
    si tu as la sensation que ton algo est "bloqué", j'ai déjà amélioré son comportement en mettant FiniteDifferenceType à 'central'
    n'hésites pas à utiliser les options display et plotfcn pour suivre en" temps réel" ton optimisation