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 :

Remplacement d'un pas de temps adaptatif


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut Remplacement d'un pas de temps adaptatif
    Bonsoir,

    j'espere que vous pourrez m'apporter de l'aide. je suis actuellement en train de reprendre le code de quelqu'un dans le cadre d'un projet et je voudrais remplacer un pas de temps adaptatif qui se trouve dans se code par autre chose, mais je ne sais pas quoi...

    1°) le code permet de calculer en fonction du temps l'evolution d'un nombre de données et l'evolution de la taille de ces données. Les equations qui régissent le probleme sont du type:

    dN/dt=6*a*exp(-t/b) et dT/dt=b.c^0.5

    avec a, b,c des valeurs qui dépendent d'où on se trouve dans le calcul. t est le temps et dN et dT sont les quantité que je souhaite calculé (evolution du nombre N et de la taille T)

    2°) ce qui est fait actuellement est que l'on part d'un pas de temps tres tres faible et que l'on calcul pour le premier pas:

    IncrementN=(dN/dt)*Increment_t
    IncrementT=(dT/dt)*Increment_t

    ensuite on verifie que les resultats N et T sont cohérents:
    N=N-1+IncrementN
    T=T-1+IncrementT

    si c'est le cas alors le prochain increment de temps sera:
    Increment_t=Increment_t*1.3
    sinon on reduit l'increment pour etre plus precis:
    Increment_t=Increment_t*0.5

    3°) cette methode marche bien mais ce n'est pas du tout optimisé car les coefficients que je mets pour augmenter ou reduire le pas de temps sont dependants du probleme et je ne peux donc pas les optimiser pour ameliorer les temps de calculs.

    Sauriez vous si il existe une autre methode de resoudre mon probleme?

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Ca ressemble grandement à la régulation d'un système (cf. Régulateur PID).

    Avec (N[i],T[i]) comme comme consigne d'entrée, Increment_t comme commande, et tes 2 formules comme fonction de transfert :

    N[i] --> N[i]+(dN/dt)*Increment_t
    T[i] --> T[i]+(dT/dt)*Increment_t
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    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
    Citation Envoyé par 24titou24 Voir le message
    a, b,c des valeurs qui dépendent d'où on se trouve dans le calcul.
    Ca veut dire quoi ? Qu'elles dépendent aussi du temps ?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut
    hello hello
    c gentil de m'apporter votre help
    Citation Envoyé par pseudocode Voir le message
    Ca ressemble grandement à la régulation d'un système (cf. Régulateur PID).
    oui peut etre en effet

    Citation Envoyé par pseudocode Voir le message
    Avec (N[i],T[i]) comme comme consigne d'entrée, Increment_t comme commande, et tes 2 formules comme fonction de transfert :
    N[i] --> N[i]+(dN/dt)*Increment_t
    T[i] --> T[i]+(dT/dt)*Increment_t
    c exactement ce que je fais actuellement et je voudrais savoir si il existe pas une façon d'ameliorer cela
    => par exemple avec un algorithme d'euler ou runge kutta ou des truc dans ce style...
    => comme je ne m'y connait pas trop dans ces truc je voudrais avoir votre avis dessus

    Citation Envoyé par Nebulix Voir le message
    Ca veut dire quoi ? Qu'elles dépendent aussi du temps ?
    en fait elles ne dependent pas explicitement du temps. Elles dependent de l'historique qu'il y a eu avant.

    A chaque pas de temps on peut les considere comme des constantes

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Par défaut
    je relance le poste, en espérant plus d'indications...
    merci d'avance

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par 24titou24 Voir le message
    c exactement ce que je fais actuellement et je voudrais savoir si il existe pas une façon d'ameliorer cela
    => par exemple avec un algorithme d'euler ou runge kutta ou des truc dans ce style...
    => comme je ne m'y connait pas trop dans ces truc je voudrais avoir votre avis dessus
    C'est une intégration avec un pas adaptatif. Dans ton cas, le pas est modifié à chaque étape par un facteur constant (1.3 ou 0.5). Le mieux serait que ce facteur soit variable.

    Wikipedia à un article sur le sujet : Adaptive stepsize. Ca peut te servir de point de départ pour ton problème.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    salut! je m'incruste dans la discussion ;-)

    quel serait le critère qui ferai varier coefficient ?

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par BdidB Voir le message
    salut! je m'incruste dans la discussion ;-)

    quel serait le critère qui ferai varier coefficient ?
    Généralement on estime la valeur avec une méthode d'ordre "p", et une méthode d'ordre "p+1". La différence de valeur obtenue nous indique si l'estimation d'ordre "p" est suffisamment bonne ou pas.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [C#] label n'a pas le temps de s'afficher.
    Par Isher dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/08/2007, 09h30
  2. Pas le temps de voir fenetre
    Par bonofred dans le forum Dev-C++
    Réponses: 2
    Dernier message: 20/06/2007, 17h10
  3. [TP] Pas le temps de voir les résultats à l'écran
    Par bonomsoleil dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 08/02/2006, 22h49
  4. [Début.C#] Je n'ai pas le temps de voir se qui s'affiche!!!!
    Par sylvain_c42 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2005, 16h48

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