Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

optimisation avec matlab

  1. #1
    ahmed55

    optimisation avec matlab

    Bonjour ,
    je cherche à faire l'optimisation d'une fonction liant le débit d'une motopompe alimentée par un profil de puissance
    f= 2e-06*ps.^2*x(1)^2*(x(1)+x(2))^2-0.0074*ps*(x(1)+x(2))*x(1)+2.6 475;
    sachant que ps représente le profil de puissance utilisé et créé ci-dessous.
    sous les contraintes :

    je veux trouver le maximum de f en fonction de x1 et x2 et le profil de puissance qui est une donnée dans mon problème

    -----

    Images attachées Images attachées

  2. Publicité
  3. #2
    Antoane

    Re : optimisation avec matlab

    Bonjour,

    Tu peux, par exemple, essayer avec la fonction fmincon, qui permettra de minimiser -f sous contraintes.

    Il faut cependant que la fonction à minimiser renvoit un unique scalaire, et non un vecteur de la taille de ps. Ce n'est pas une limitation de matlab mais bien de ton problème : il faut que la fonction objectif soit à valeur dans R, sans quoi il n'est, me semble-t-il, pas possible d'optimiser (sauf à construire un front de Pareto).

    Note que si x1+x2=1, l'optimisation ne se fait plus que sur une unique variable et f est fortement simplifiable...
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  4. #3
    ahmed55

    Re : optimisation avec matlab

    j'ai essayé avec la fonction fmincon et j'ai mis les contraintes sous la forme A.x=b et des contraintes d'inégalités sous une fonction non linéaire mais il m'affiche un erreur :
    Error using fmincon (line 291)
    Row dimension of A is inconsistent with length of b.

    Error in Untitled8 (line 16)
    [x, fval]=fmincon(@probofminobjdebitp,[0 0], A,b,[],[],lb,ub,@mycon,options);
    comme vous l'avez dites , la fonction retourne un vecteur et pas un scalaire.
    Images attachées Images attachées

  5. #4
    Antoane

    Re : optimisation avec matlab

    Bonsoir,

    Tu n'as pas d'inégalités non linéaires dans ce problème, toutes sont linéaires et peuvent être mises sous la forme A*x<b
    b est un vecteur colonne, A une matrice de taille length(b)*length(x) (pour que le produit matriciel soit mathématiquement possible).

    L'égalité x1+x2 = 1, quant à elle, peut être utilisée pour simplifier le problème car elle se réécrit x2 = 1-x1. x1 et x2 ne sont donc pas indépendant, l'optimisation peut ne se faire que sur x1 (ou sur x2). La valeur de x2 peux être remplacée par 1-x1 dans la fonction objectif.

    comme vous l'avez dites , la fonction retourne un vecteur et pas un scalaire.
    Il faut que tu y fasses quelque chose... Des méthodes classiques consistent à prendre la norme du vecteur. Norme L1, Eculidienne,... ou infinie sont des choix classiques, à voir en fonction de la réalité physique du problème.
    https://fr.wikipedia.org/wiki/Espace...tes_%E2%84%93p
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

Discussions similaires

  1. [Matlab]Problème d'optimisation Abaqus/Matlab
    Par Saroute dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 08/04/2015, 17h54
  2. Optimisation sur matlab
    Par sam_89 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 24/07/2012, 11h20
  3. optimisation de code Matlab
    Par ABN84 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 06/03/2011, 16h50
  4. Optimisation sur Matlab
    Par doudy dans le forum Physique
    Réponses: 6
    Dernier message: 24/12/2010, 16h32
  5. Optimisation avec contraintes sous Matlab
    Par leetimber5 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 01/11/2009, 08h29