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 :

défi algorithmique et outil pour le réaliser


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    mmx
    mmx est déconnecté
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut défi algorithmique et outil pour le réaliser
    bonjour à tous !

    Je fais face à un petit défi et je vais le proposer ici pour vous demander quelques pistes de développement.

    Le défi :

    Je dois coder un système qui a pour objectif d'affecter une valeur mensuelle globale chaque jour ouvré d'un mois selon différentes règles comme :

    Règle 1 : (pondération entre les jours d'une même semaine)
    Lundi et dimanche et jours fériés : pas de valeur et les valeurs des autres jours doivent être organisées ainsi :
    Jeudi < Mercredi < Mardi < Vendredi < Samedi

    La valeur globale de la semaine dépend du nombre de jours dans la semaine (certaines semaines peuvent n'avoir que 1 jour !)

    Règle 2 :
    Les jours appartenant à la semaine qui contient le 21e jour doivent être 20% plus faibles que les autres jours de la semaine.


    Pensez-vous qu'il existe une solution analytique sachant qu'il faut prendre en compte les diverses situations du calendrier (informatiquement, ça, ce n’est pas trop dur, mais algorithmiquement parlant...) ?

    Quel outil (mathématique, informatique) me conseilleriez-vous pour faire cela ?

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    Je n'ai pas tout compris au problème posé (valeur mensuelle ?) mais en l'état il semble y avoir une infinité de solutions.

    Pour la résolution, ça ressemble à de l'optimisation linéaire sous contraintes. Le problème est de dimension N = le nombre de jours ouvrés.

    Les contraintes de la règle 1 se rajoutent en batch en traitant par semaine puisqu'elles se posent à ce niveau.

    Je ne pige pas bien la règle 2, les jours de la semaine du 21ème jour du mois doivent avoir des valeurs inférieures de 20% aux jours de quelle semaine ?

    L'optimisation linéaire sous contrainte sera très efficace, le principal boulot ici c'est de construire les matrices du problème en fonction du calendrier.
    Scipy (Python) contient de quoi résoudre ça, idem Matlab ou tu peux même le recoder dans ton langage préféré.

  3. #3
    mmx
    mmx est déconnecté
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Merci pour ta réponse !

    Je n'ai pas tout compris au problème posé (valeur mensuelle ?) mais en l'état il semble y avoir une infinité de solutions.
    La valeur est différente pour chaque mois de l'année, mais les mois sont indépendants. Prend ça comme un chiffre d'affaire mensuel qu'il faut répartir ensuite sur chaque jour ouvré, en fonction de ces règles. Suis-je plus clair ?

    Je ne pige pas bien la règle 2, les jours de la semaine du 21ème jour du mois doivent avoir des valeurs inférieures de 20% aux jours de quelle semaine ?
    Et bien la somme des valeurs des jours appartenant à la semaine qui contient le 21ème jour doit être de 20% plus faible par rapport à la somme des valeurs des jours de chacune des autres semaines. Au prorata du nombre de jours car les semaines n'ont pas le même nombre de jours...

    Par exemple :
    Semaine1 = valeur v
    Semaine2 = valeur v
    Semaine3 = -20% de v
    Semaine4 = valeur v

    Je vais découvrir un peu l'optimisation linéaire. Si je peux la coder en objective-C ça sera parfait

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    Ok c'est plus clair. La donnée de base c'est le CA mensuel j'imagine, et tu veux le répartir sur les jours ouvrés modulo certaines contraintes.

    Enfin la règle 2, comment tu fais si les autres semaines du mois n'ont pas la même valeur entre elles ? Car a priori rien ne dit que c'est le cas.
    Par ailleurs certains jours de cette semaine pourront quand même avoir une valeur supérieure à d'autres jours d'autres semaines, c'est le total qui sera inférieur.

    Regarde du côté de l'algorithme du simplexe, ou de la méthode de Lagrange avec active sets.

    Tu as une contrainte d'égalité : la somme des valeurs est le CA mensuel
    La règle 1 donne des contraintes d'inégalités
    La règle 2 donne une autre contrainte d'inégalité

    Tu n'as pas de critère d'optimalité, tu pourras donc arrêter l'algo à la première solution trouvée (il se peut fort bien qu'il y en ait plusieurs).

  5. #5
    mmx
    mmx est déconnecté
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Enfin la règle 2, comment tu fais si les autres semaines du mois n'ont pas la même valeur entre elles ? Car a priori rien ne dit que c'est le cas.
    Je ne sais pas... je pourrais comparer avec les semaines ayant le même nombre de jours que celle-là, mais ça ne m'avance pas vraiment...

    Par ailleurs certains jours de cette semaine pourront quand même avoir une valeur supérieure à d'autres jours d'autres semaines, c'est le total qui sera inférieur.
    Oué, je comprends. Je verrais si cela gène. D'après toi, sera-t-il facile d'intégrer des contraintes ponctuelles par exemple : je décide arbitrairement que la valeur du jour 5 soit de 100 ?

    Merci pour les pistes (simplexe et Lagrange), je vais regarder ça de suite !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    La règle 2 gagnerait à être clarifiée, mais bon tu peux le faire plus tard.

    Tu as besoin de deux modules dans ton algo :
    - le premier, générique, qui résout un problème d'optimisation linéaire
    La forme canonique s'exprime avec 2 matrices A, C et 3 vecteurs g, b, d :

    min g^t . x
    tq. A.x = b
    tq. C.x < d

    où x est le vecteur de toutes les valeurs du mois.
    Pour ton cas, pas de g.

    - le deuxième module doit construire ces grandeurs à partir du mois considéré
    A et b regroupent les contraintes d'égalité, par exemple pour le CA mensuel égal à la somme des valeurs, tu auras la première ligne de A remplie de 1 et le premier élément de b égal au CA mensuel.
    Pour d'autres contraintes comme fixer une valeur pour un jour, c'est aussi là que ça se passe.
    C et d regroupent les contraintes d'inégalité, à toi de voir comment tu exprimes toutes tes inégalités sous la forme canonique.

    Par exemple jeudi < mercredi s'écrira sous forme matricielle (1, -1).(jeudi, mercredi) < 0

Discussions similaires

  1. quel outils pour la réalisation d'une application de gestion audiothéque?
    Par sarah_insat dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 17/10/2010, 20h59
  2. Réponses: 2
    Dernier message: 05/09/2008, 10h34
  3. Outils pour réaliser des templates en WYSIWYG
    Par Mister Nono dans le forum Webdesign & Ergonomie
    Réponses: 8
    Dernier message: 20/11/2006, 16h36
  4. Outils pour réaliser mon développement
    Par RamDevTeam dans le forum EDI et Outils pour Java
    Réponses: 16
    Dernier message: 25/01/2006, 21h23

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