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 :

Problème de minimisation sous contrainte


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème de minimisation sous contrainte
    Bonjour,

    Codant en Matlab un algorithme de type gradient projeté, j'ai à coder deux traitements pour le calcul de deux réels.

    f est non-linéaire de Rn dans R, passée en paramètre d'entrée du programme, x et y sont connus avant les calculs de max / min.

    1) amax = max{a tel que f(x+a*y) <= 0}
    2) b = min{norme(x+a*y) tel que 0<=a<=amax}

    J'ai essayé des traitements avec
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function [c,ceq] = mycon(f,a,x,y)
             c = @(a)(feval('f',x-a*y));
             ceq = [];
    end
     
    ! dans le programme principal
    amax = fmincon(@(a) feval('f',x-a*k), 1, [],[], [],[],0,[], @(a)mycon(f,a,x,y));
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ! dans le programme principal
    [b,fb] = fmincon(@(a) norm(x+a*y,2), amax/2 ,[],[],[],[], 0, amax);
    Le traitement 1) me met une erreur : je ne dois pas avoir tout compris pour prendre en compte la contrainte f(...)<=0
    Le traitement 2) me met "Warning: Large-scale (trust region) method does not currently solve this type of problem, switching to medium-scale (line search)."

    Si quelqu'un peut m'aider, peut-être que je n'utilise pas la fonction Matlab la plus appropriée pour faire ce que j'ai à coder...
    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Quelle est ton erreur ?
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Sur le traitement 1), cela me fait à l'éxecution :

    Warning: Large-scale (trust region) method does not currently solve this type of problem, switching to medium-scale (line search).
    > In fmincon at 260
    In methode_gradient at 102
    Warning: To support parenthesis notation for invocation, "indexing" a scalar function handle by ":" will continue to work in R14, but may be illegal or may work differently in R15. To prepare for R15, and to avoid this warning, use cell arrays of function handles instead of arrays. For more information, type 'help function_handle' and see the section at the end entitled Note on Backward Compatibility.
    > In fmincon at 406
    In methode_gradient at 102
    Warning: non-scalar function handles will not be supported past R14
    > In optim\private\nlconst at 175
    In fmincon at 498
    In methode_gradient at 102
    Warning: non-scalar function handles will not be supported past R14
    > In optim\private\nlconst at 176
    In fmincon at 498
    In methode_gradient at 102
    ??? Error using ==> vertcat
    The following error occurred converting from double to function_handle:
    Attempt to execute SCRIPT function_handle as a function.

    Error in ==> optim\private\nlconst at 176
    c = [ Aeq*XOUT-Beq; nceq; A*XOUT-B; ncineq];

    Error in ==> fmincon at 498
    [X,FVAL,lambda,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...

    Error in ==> methode_gradient at 102
    amax = fmincon(@(a) feval('f',x-a*k), 1, [],[], [],[], 0,[], @(a)mycon(f,a,x,y));

Discussions similaires

  1. Eviter les problème de violation des contraintes d'integrité sous talend
    Par ensatTetouan dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 04/05/2012, 14h03
  2. Minimisation sous contrainte de positivitée
    Par rienque2008 dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 22/01/2009, 12h09
  3. Minimisation sous contrainte
    Par rienque2008 dans le forum Général Java
    Réponses: 1
    Dernier message: 20/01/2009, 18h23
  4. minimisation sous contraintes
    Par nant44 dans le forum MATLAB
    Réponses: 3
    Dernier message: 01/06/2007, 19h39
  5. Problème : modifier une matrice sous contraintes
    Par andjeo dans le forum Algorithmes et structures de données
    Réponses: 44
    Dernier message: 27/03/2006, 17h04

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