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èmes avec fmincon ..


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut Problèmes avec fmincon ..
    Bonjour tout le monde,

    Voilà après avoir utilisé la fonction lsqcurvefit j'ai finalement opté pour fmincon pour pouvoir mieux intégrer mes contraintes.

    J'ai 12 inconnues (x), toutes solutions d'équations linéaires ou non linéaires.
    Quand je mets ceci à fmincon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    ifg = ones(8,1); % pour le moment - constantes
    YDATA = [Esp; Esp2]; % colonne de taille 8
     
    % Bornes pour les x! (colonne de taille 12)
    lb = [-Inf, 0, -Inf, -Inf, -Inf, 0, -Inf, -Inf, -Inf, -Inf, -Inf, -Inf] ; 
    ub = [Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf] ; 
    % Point de départ
    x0 = [0; 1; 0; 3; 0; 1; 0; 3; 1; 0; 0; 1] ; 
     
    weight = ones(1,8) ; % Pour le moment
     
    % Définition de A et b tel que A*x <=b
     
    A = [0 0 2 -3 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 2 -3 0 0 0 0; 0 0 0 0 0 0 0 0 -1 0 0 0; 0 0 0 0 0 0 0 0 0 -1 0 0; 0 0 0 0 0 0 0 0 0 0 -1 0;0 0 0 0 0 0 0 0 0 0 0 -1 ; 0 0 0 0 0 0 0 0 1 0 0 0 ; 0 0 0 0 0 0 0 0 0 1 0 0 ; 0 0 0 0 0 0 0 0 0 0 1 0 ; 0 0 0 0 0 0 0 0 0 0 0 1 ]; 
     
    b = [-9; -9; 0; 0; 0; 0; 1; 1; 1; 1]; 
     
    % options_fmincon A editer
    options_fmincon = optimset('fmincon')
     
    % Définition de Aeq/beq tel que Aeq*x=beq
    Aeq = [0 0 0 0 0 0 0 0 1 1 0 0; 0 0 0 0 0 0 0 0 0 0 1 1]; 
    beq = [1;1] ;
    % fmincon
    [x,fval,exitflag,output] = fmincon('myfun4fmin',x0,A,b,Aeq,beq,lb,ub,[],options_fmincon, YDATA, weight, ifg)
    Avec 'myfun4fmin' définit tel que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function f = myfun4fmin(x,YDATA,weight,ifg)
    xdata = []; 
    f = sum((fun_cumlmamulti(x,xdata,weight,ifg)-YDATA).^2); %fun_cumlmamulti retourne les "YDATA" souhaités en fonction des x
    Et bien ça me donne des 'x' imaginaires.
    Quand je rajoute des contraintes (A devient plus grande) ça tourne dans le vide et j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error in ==> optim\private\nlconst at 615
                   [YMAX,YIND]=min(YL.*sdiff);
     
    Error in ==> fmincon at 498
       [X,FVAL,lambda,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
    Donc là je vois vraiment pas.
    Pourtant c'est pas "sorcier" comme problématique et avec le A définit au dessus j'ai un résultat (imaginaire) dans la seconde (mauvaise convergence quand même).


    Si quelqu'un avait une petite idée, je serai preneur

    Hollow

  2. #2
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut
    N'y a t'il pas - par exemple - un moyen plus simple pour définir A et b tel que A*x<=b ?

    Ici en gros A n'est qu'une diagonale vu que je veux des contraintes du style 3*x(3) <= 0, -2*x(4) <= 1, etc.

    --
    Hollow

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut
    A priori (et ça me semble bizarre), dès que la matrice passe à plus de 10 lignes ça pose un problème!

    C'est assez fou mais bon je vais continuer mes investigations car ça serait vraiment vraiment contraignant et "bizarre" pour justement ajouter des contraintes.

Discussions similaires

  1. Problème avec fmincon
    Par Memboro dans le forum MATLAB
    Réponses: 12
    Dernier message: 09/04/2013, 20h00
  2. [Débutant] problème avec [fmincon]
    Par gueloude dans le forum MATLAB
    Réponses: 5
    Dernier message: 28/04/2011, 16h30
  3. Problème avec fmincon
    Par XamamaX dans le forum MATLAB
    Réponses: 3
    Dernier message: 25/02/2011, 18h32
  4. [fmincon] Problème avec la fonction contrainte
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 0
    Dernier message: 24/04/2008, 11h32
  5. [fmincon] Problème avec des variables de classe Single
    Par Wassim123 dans le forum MATLAB
    Réponses: 5
    Dernier message: 11/10/2007, 17h01

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