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

Algorithmes et structures de données Discussion :

Minimisation / optimisation (Matlab)


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Par défaut Minimisation / optimisation (Matlab)
    Bon voila ,

    J'ai une problématique un peu particulière que je sais "théoriquement" coder mais l’algorithme d'optimisation (fmincon) ne semble pas faire le job.

    Pour résumer,

    J'ai un vecteur A={A(1); .... A(9000)} composé de 9000 valeurs comprises entre 0 et 1 classées en ordre croissant

    L'idée est de trouver des "range" de valeurs de A tels que les moyennes de chaque groupe ainsi constitué se rapproche au plus d'une valeur cible pour chacun des groupes. Ces valeurs délimitant les "range" sont D={D(1)...D(19)}.

    les groupes sont tels que ci-dessous :
    [0 ; D(1)[ , [D(1) ; D(2)[ ... [D(19) ; 1[

    Le vecteur des moyennes cibles de 20 valeurs T={T(1)...T(20)} classées en ordre croissant .

    Pour chacune des valeurs de D, on calcule la moyenne des valeurs de A telles que :
    mu(0) = moyenne de A pour 0=<A(i)<D(1)
    mu(1) = moyenne de A pour D(1)=<A(i)<D(2)
    ....
    mu(20) = moyenne de A pour D(19)=<A(i)<1

    Je configure donc une fonction qui calcule une erreur de "fitting" en fonction des valeurs de D : Erreur Fitting = somme[ValAbsolue (mu(i)-T(i))/T(i)]

    Avec cette fonction je cherche donc les valeurs du vecteur D qui minimise la fonction ErreurFitting sachant que j'ai pour contrainte que D(1)>D(2)>...>D(20).

    Au final j'ai pas trop de mal a configurer tout cela, mais la valeur Erreur Fitting ne semble pas trop sensible et fmincon éprouve bcp de difficultés à optimiser le modèle.

    Le modèle s’arrête dès le début :
    Optimization completed because the objective function is non-decreasing in
    feasible directions, to within the selected value of the function tolerance,
    and constraints were satisfied to within the default value of the constraint tolerance.

    Alors évidement j'ai "joué" avec les paramètres :
    options=optimset('Display','iter','TolFun',1e-30,'MaxFunEvals',5000,'MaxIter',1000,'TolX',1e-30 );

    Mais rien n'y fait.
    Je me demande tout simplement si fmincon est capable de résoudre ce genre de problème.

    Cela fait plusieurs jours que je me casse la tête sur ce problème et j'ai du mal à trouver une issue.

    La seule solution que j'ai trouvée jusqu'à présent est une approche du type simulation MonteCarlo.

    Je tire aléatoire un vecteur (d),je le trie en ordre croissant, j'estime mon ErreurFitting.
    Je répète l'expérience 1 millions de fois et je prends le vecteur d présentant min(ErreurFitting).

    Bien entendu, cette solution n'est pas optimale en terme de temps d'éxécution et compte tenu de la distribution de mes valeurs, pas optimale en terme de qualité d'ajustement mais au moins j'ai un début de résultat.

    J'avoue c'est assez dense comme question mais si quelqu'un a une idée je serais bien bien reconnaissant.

  2. #2
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Les T sont donnés et tu dois trouver les D ?
    Es-tu sûr de ta fonction
    Erreur Fitting = somme[ValAbsolue (mu(i)-T(i))/T(i)]
    en particulier du Ti au dénominateur qui pondère très fortement les faibles valeurs ?
    Sinon, j'ai l'impression que tu pourrais ajuster chaque D indépedament puisqu'il ne contribue qu'à 2 sommes.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2011
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 56
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    Les T sont donnés et tu dois trouver les D ?
    Es-tu sûr de ta fonctionen particulier du Ti au dénominateur qui pondère très fortement les faibles valeurs ?
    Sinon, j'ai l'impression que tu pourrais ajuster chaque D indépendamment puisqu'il ne contribue qu'à 2 sommes.
    Effectivement mon explication n'était pas totalement claire. T sont les valeurs "target", elles sont données ; Les D doivent être estimés.

    Pour le Ti du dénominateur, la formule est correcte : elle pondère effectivement les petites valeurs, mais ceci est désirable compte tenu de ma problématique globale (risque de crédit)

    Les D doivent être ajustés de "manière globale" compte tenu de ma distribution de valeurs, le vecteur D doit vraiment être la résultante d'un processus de minimisation des écarts de fitting.

  4. #4
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Soit E1plus = somme de T1 à D1 des ((A-T1)/T1)
    E2moins = somme de D1 à T2 des (-(A-T2)/T2)
    D1 n'intervient que dans ces deux contributions. Ne suffit-il pas de minimiser
    (E1+ + E2-) vs D1, etc ?
    Les algos de minimisation portent sur des fonctions continues, la tienne ne l'est pas. Il faudrait chercher k tel que Ak<Dn<Ak+1

Discussions similaires

  1. [Débutant] initiation optimisation matlab
    Par zinanew dans le forum MATLAB
    Réponses: 0
    Dernier message: 17/03/2015, 11h38
  2. minimisation avec matlab
    Par k22000099 dans le forum MATLAB
    Réponses: 0
    Dernier message: 16/03/2011, 13h30
  3. Comment optimiser le calcul du gradient d'une image dans matlab
    Par MPEG4 dans le forum Traitement d'images
    Réponses: 19
    Dernier message: 28/04/2009, 18h36
  4. Matlab et optimisation linéaire
    Par Mouhsine2009 dans le forum MATLAB
    Réponses: 7
    Dernier message: 05/01/2009, 14h40
  5. Optimisation globale sous MATLAB
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/04/2008, 14h35

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