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

Octave Discussion :

Erreur avec la fonction SQP


Sujet :

Octave

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut Erreur avec la fonction SQP
    Bonjour à tous,

    Tout d'abord je dois avouer que je suis novice dans l'utilisation de OCTAVE donc merci d'être indulgent avec ma question ...
    J'utilise le code suivant avec la fonction SQP

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    # rline = dbstop( 51)
    #! C:\Octave\3.2.4_gcc-4.4.0\bin\octave-3.2.4.exe -q -f
     
    clear all
    global M  LMIN  LMAX  B 
    global bMin bMax lgCar lgComp
     
    function obj = phi (x)
    	global M B
    	obj=norm(((M*x)-B'));
    endfunction
     
    function r=f (x)
    	global M T B LMIN LMAX bMin bMax lgCar lgComp DM1 DM2
    	DM1=[M, zeros(lgCar, lgCar);zeros(lgCar, lgComp),diag(bMax, 0)];
    	DM2=[diag(bMin, 0),zeros(lgCar, lgComp);zeros(lgCar, lgCar),M];
    	r=(DM1*(vertcat(x, ones(lgCar, 1))))-(DM2*(vertcat(ones(lgCar, 1), x)));
    endfunction
     
    function r=g (x)
    	r=sum(x)-1;
    endfunction
     
    MM=[[17	0	82	0	17	85	105]
    [0	0	98	90	90	86	95]
    [93	93	0	93	0	1	324]
    [42	1	52	1	41	57	139]];
    M=MM';
    LMIN=[29	12	44	14	16	41	136];
    LMAX=[54	22	69	46	48	70	165];
    B=[50	12	60	46	35	60	150];
     
    lgCar=rows(M);
    lgComp=columns(M);
     
    x02(1:lgComp)=0;x02=x02';
    xmin(1:lgComp)=0;xmin=xmin';
    xmax(1:lgComp)=1;xmax=xmax';
     
    Inc=10
    T(1:lgCar)=Inc
    bMin=max(B-T,LMIN);
    bMax=min(B+T,LMAX);	
    [x, obj, info, iter, nf, lambda] = sqp (x02, @phi, @g, @f, xmin, xmax);
    iter
    x
    #  pause
    J'essaie de résoudre un système linéaire du style :
    M*X = B. X est l'inconnu et B est la cible.
    X doit être tel que B0 = M*X doit se rapprocher le plus possible de B avec comme contrainte :

    0<=X<=1 et
    LMin <= B0 <= LMax

    Après plusieurs essais infructueux, j'ai introduit une nouvelle variable : Inc qui permet d'affecter une tolérance autour de B (voir dans le code le calcul de bMin et bMax). La nouvelle contrainte est donc :
    bMin <= B0 <= bMax

    Certaines valeurs de Inc donne un résultat (exemple Inc=10) par contre pour une valeur plus faible (Inc =9) le système retourne une erreur sur la fonction SQP (voir fichier joint).
    Je peux comprendre que certains systèmes n'admettent pas de solutions répondant aux contraintes imposées mais je suis surpris que la fonction ne retourne pas un code Erreur afin de pouvoir l'exploiter et entreprendre une autres stratégie (dans mon cas augmenter Inc par exemple).

    Plusieurs questions :

    • Ai-je "loupé" quelque chose dans l'utilisation de la fonction SQP ?
    • Est-ce que mon approche est erronée et ne devrais-je pas utiliser une autre méthode ? Si oui, laquelle ?


    Merci par avance de vous intéresser à mon problème.
    Cordialement
    Images attachées Images attachées  

Discussions similaires

  1. Erreur avec la fonction Make .
    Par seboyoyo dans le forum Linux
    Réponses: 3
    Dernier message: 06/10/2007, 01h31
  2. [Formule]Erreur avec la fonction recherchev
    Par solorac dans le forum Excel
    Réponses: 4
    Dernier message: 19/04/2007, 17h09
  3. [XSLT] erreur avec les fonctions
    Par frouge dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/07/2006, 10h15
  4. [Mail] erreur avec utilisation fonction mail
    Par taka10 dans le forum Langage
    Réponses: 7
    Dernier message: 12/07/2006, 16h19
  5. erreur avec la fonction putfile() sur connexion FTP
    Par stefane1981 dans le forum C++
    Réponses: 2
    Dernier message: 23/09/2005, 09h13

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