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

Calcul scientifique Python Discussion :

Trouver l'intervalle optimal de plusieurs fonctions


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Research Scientist
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Research Scientist
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut Trouver l'intervalle optimal de plusieurs fonctions
    Bonjour,

    Je fais mes debuts en Python et j'aurais besoin de conseils pour resoudre un probleme que j'ai actuellement dans mon programme.

    La chose est assez simple mais assez longue a coder avec surement des pieges...

    J'ai 4 fonctions qui font du calcul sur un intervalle, disons de [0, 400].
    Chaque fonction a un temps d'execution plus ou moins grand (mais croissant)et je souhaiterai que mon programme final fournisse les meilleurs performances. Pour cela, je souhaiterai faire un script en python pour tester chaque fonction, et trouver le meilleur intervalle pour les utiliser. Cela permettra a mon programme d'avoir le temps d'execution le plus court possible pour une valeur donnee.

    Le probleme est que, faire tourner chaque fonction entre [0,400] puis choisir celle qui a le temps d'execution le plus court, pour un intervalle donne, ne resoud pas mon probleme. En effet, lorsque je change de fonction, il y a un coup d'initialisation.

    Il me faut donc faire la chose suivante:
    0. calculer le temps de chaque fonction de [0,400], en les faisant fonctionner individuellement.
    1. Selectionner la fonction X qui fourni le temps minimal de [0,a] et la fonction Y qui fourni le temps minimal de [a,b].
    2. Regarder si le cout du changement de X vers Y en a ne fait pas apparaitre un "pique" lie au changement de fonction.
    3 -Si c'est le cas, regarder en a+1 si le cout du changement est amorti, sinon regarder en a+2 etc....
    -Sinon, si il n'y a pas de "pique", faire la meme etude en b etc....

    Vu que le temps de mes fonctions est croissant, je ne pense pas que cela soit tres difficile, mais etant donne que python dispose de nombreuses libraries, je pensais qu'il y avait peut etre deja une lib optimisee qui pouvait faire cela (histoire de ne pas reinventer la roue).
    J'ai regarde les lib scientiques (http://wiki.python.org/moin/NumericAndScientific) du wiki, mais je n'ai trouve qu'un moyen de faire l'etape 1 (trouver le min)..


    Si quelqu'un pourrait m'orienter pour savoir si une lib existait deja pour l'etape 2-3 ou me donner des conseils, je serais tres interesse.

    Merci bcp.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Rien compris...

  3. #3
    Membre confirmé
    Homme Profil pro
    Research Scientist
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Research Scientist
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut
    Bonjour,

    Desoler si je n'ai pas ete assez clair.

    Je vais essayer de fournir un exemple.
    Soit 3 functions, x, y et z sur [0,5]
    Pour chaque valeur comprise entre 0 et 5 je recupere le temps de ces fonctions
    x[0]=2
    x[1]=8
    x[2]=16
    x[3]=32
    x[4]=64
    x[5]=128

    y[0]=10
    y[1]=12
    y[2]=14
    y[3]=26
    y[4]=54
    y[5]=76

    z[0]=50
    z[1]=50
    z[2]=50
    z[3]=50
    z[4]=50
    z[5]=50

    On peut voir ici que:
    x est le plus rapide sur [0,2[
    y est le plus rapide sur [2,4[
    z est le plus rapide sur [4,5]

    Mais si j'utilise a l'interieur de ma fonction f les fonctions x,y, z sur ces intervalles, j'obtiens:
    f[0]=2
    f[1]=8
    f[2]=19 (et non 14 car il y a le cout du changement de fonction)
    f[3]=26
    f[4]=56 (et non 50 car il y a le coup de changement de fonction)
    f[5]=50

    Il faut donc change le switch point entre x et y en 3 et non en 2.
    Je restart ma function f en utilise x sur [0,3[ et y en [3,4[ et z en [4,5]
    On obtient ainsi:
    f[0]=2
    f[1]=8
    f[2]=16
    f[3]=30 (coup du switch mais temps y est sup a temps x)
    f[4]=56 (et non 50 car il y a le coup de changement de fonction)
    f[5]=50

    Comme ce switch point entre x et y est maintenant ok, on s'attaque au switch entre y et z:
    Je restart ma function f en utilise x sur [0,3[ et y en [3,5[ et z en [5]
    On obtient ainsi:
    f[0]=2
    f[1]=8
    f[2]=16
    f[3]=30 (coup du switch mais temps y est sup a temps x)
    f[4]=54
    f[5]=56 (et non 50 car il y a le coup de changement de fonction)

    Donc au final, on utilise:
    x sur [0,3[
    y sur [3,5[
    z sur [5]

Discussions similaires

  1. Lancer plusieurs fonctions JavaScript sur même evenement
    Par davinout dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2010, 17h37
  2. Exécuter simultanément plusieurs fonctions
    Par benj63 dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/10/2005, 16h42
  3. [Info]pliage/depliage de plusieurs fonctions d'un coup
    Par pierre.zelb dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/06/2005, 14h17
  4. appeler plusieurs fonctions à partir d'une checkbox
    Par amelhog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/05/2005, 16h10
  5. [VB.NET] Variable visible dans plusieurs fonctions ?
    Par Webman dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/05/2004, 17h36

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