Partage
  • Partager sur Facebook
  • Partager sur Twitter

Régulation des prix

    7 janvier 2011 à 21:10:21

    Bonjour à tous,

    Je ne sais pas trop dans quel catégorie poster...
    Mon problème concerne la mise au point d'un algorithme (d'une formule mathématique en fait) donc je poste ici :)

    Voilà, je vous explique mon problème :)

    J'essaie de mettre au point un algorithme de régulation des prix.
    Je vous explique plus en détail.
    Dans l'environnement en question, il existe 3 ressources différentes.
    Appelons les bois, fer et or.
    Chaque agents possèdent une certaine quantité de chacune des ressources.
    Dans le système en question, il existe une banque centrale, qui permet à un agent d'échanger une certaine quantité de ressources contre une certaine quantité d'une autre ressource.

    Le taux de change que propose la banque devrait se réguler automatiquement en fonction de l'offre et la demande !
    Exemple.
    Un agent a besoin de fer et a beaucoup de bois, il contacte alors la banque qui lui propose une certaine somme de fer en échange de son bois.
    Mais, si beaucoup d'agents se mettent a avoir le même comportement, c'est a dire vendre du bois contre du fer, la banque va adapter ses taux de change en demandant plus de bois pour une même quantité de fer.
    Et de même, la banque offrira plus de bois a quiconque lui fournira du fer.

    Donc dans notre exemple, si au départ la banque fourni 1 unité de fer contre 3 unités de bois, si la demande de fer augmente, elle pourrait demander 5 unité de bois contre une unité de fer.
    Ce que j'essaie de mettre au point est un algorithme qui calcule les différents taux de change en fonction du comportement des agents et ce en temps réelle.

    Idée de départ.

    Dans mon idée de départ, la banque centrale contiens une certaine
    quantité de chaque ressource, au même titre que les agents.
    Nommons ces quantités :
    B = Quantité de bois que possède la banque centrale.
    F = Quantité de fer que possède la banque centrale.
    Or = Quantité d'or que possède la banque centrale.

    Mon algorithme fonctionne comme ceci :
    Dans notre exemple, un agents désire vendre 100 tonnes de bois et veux
    acquérir du fer en échange.
    La banque centrale dispose des ressources suivantes :
    B=2000, F=1000 et Or=300
    Elle calcule son taux
    De change de la manière suivante: F/B.
    Donc en échange des 100 unités de bois, elle va fournir F/B * 100
    unités de fer, c'est a dire, 1000/2000 * 100 = 50 unité de fer.
    Après la transaction, la banque centrale dispose des ressources
    suivantes: B=2100, F=950 et Or=300.
    Si un autre agent ou le même désire faire la même transaction, le taux
    de change sera maintenant de 950/2100 et la banque ne proposera plus
    que 45 de fer en échange de 100 unités de bois.
    Le problème c'est qu'il ne faut surtout pas que la banque centrale
    vende a perte ! Au contraire, elle devrait même prendre une petite
    commission sur chaque transaction.
    Mon algorithme me plait bien mais il a un problème...
    Ce problème se pose lorsque les réserves de la banque sont proches de
    la quantité que veut échanger un agent.
    Petit exemple, la banque possède 100 unités de bois et 50 de fer.
    Un agent vient vendre 80 unité de bois, la banque lui fourni donc en
    échange 40 unités de fer (50/100 * 80). Si notre agent revend
    instantanément le fer qu'il vient de recevoir, la banque va lui donner
    720 unités de bois !!! (180/10 * 40)
    Donc de un la banque a vendu a perte, son stock de bois étant de -540
    et de deux n'importe quel agent peut devenir immensément riche en
    répétant la manipulation.
    J'essaie de faite en sorte que ce ne soit pas possible mais je ne
    parviens pas à trouver la bonne modification à mes équations...
    Pour bien faire, il faudrait que quand un agent refasse juste
    l'inverse d'une transaction qu'il vient de faire, il se retrouve avec
    ses quantités de départ voir un peu moins mais surtout pas plus !
    Un second problème est que avec mon implémentation actuelle, si la
    banque prend une commission a chaque fois, les stocks de la banque
    vont tendre vers l'infini !
    Et comme c'est assez délicats de stoquer de très très grand nombres
    dans une base de données il faudrait trouver une solution.

    Un tout grand merci d'avance pour votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
      8 janvier 2011 à 1:59:03

      Citation : balzard


      Mon algorithme me plait bien mais il a un problème...
      Ce problème se pose lorsque les réserves de la banque sont proches de
      la quantité que veut échanger un agent.
      Petit exemple, la banque possède 100 unités de bois et 50 de fer.
      Un agent vient vendre 80 unité de bois, la banque lui fourni donc en
      échange 40 unités de fer (50/100 * 80). Si notre agent revend
      instantanément le fer qu'il vient de recevoir, la banque va lui donner
      720 unités de bois !!! (180/10 * 40)
      Donc de un la banque a vendu a perte, son stock de bois étant de -540
      et de deux n'importe quel agent peut devenir immensément riche en
      répétant la manipulation.


      Il suffit de faire que la banque ne puisse pas s'endetter : si elle n'a pas les ressources, elle ne les donne pas.

      Citation : balzard


      Un second problème est que avec mon implémentation actuelle, si la
      banque prend une commission a chaque fois, les stocks de la banque
      vont tendre vers l'infini !
      Et comme c'est assez délicats de stoquer de très très grand nombres
      dans une base de données il faudrait trouver une solution.


      http://www.toutestfacile.com/sql/cours [...] m%5Dtypes.php
      Si tu utilise le dernier type ( si tu utilise mysql ou postgresql, sinon il doit bien y avoir des solutions équivalentes pour les autres sgbd ) tu pourra stocker jusqu'à environ 1.8 * 10^19 de ressources, ça m'étonnerais que tu ais besoin de plus ;)

      Et sinon, juste par curiosité, tu vas t'en servir pour quoi de cet algo ?
      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2011 à 21:55:57

        Bonsoir,

        Ton système est un peu étrange car en réalité, un vendeur de fera pas affaire en dessous d'un certain prix. Inversement, un acheteur n'achète pas au dessus d'un certain prix.

        Lorsque l'on souhaite réguler un prix, il suffit de le fixer tel qu'un maximum de transactions puissent se faire. Une petite explication de tout ceci ici.

        La banque n'est pas nécessaire dans ce dernier système.
        • Partager sur Facebook
        • Partager sur Twitter
        Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
          9 janvier 2011 à 7:54:39

          Ce que tu pourrais faire, ce serais prendre en compte les dernières transactions, si c'est possible bien sur. Mais pour l'exemple de ton bois que tu achette/revend/achette... ca permetterais de voir qu'il y a une demande pour le fer, mais aussi que les dernières transactions montrent qu'il y a aussi une certaine demande pour le bois.

          Genre tu peut utiliser une fonction qui diminue l'influence des achats en fonction du temps. Je veut dire plus c'est éloigné dans le temps, moins la transaction a d'influence.

          Si tu veut, contacte moi, j'aurais certainement le même problème a résoudre dans un futur proche, on pourrais y réfléchir à plusieurs.
          • Partager sur Facebook
          • Partager sur Twitter

          Régulation des prix

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown