Simulation d une économie monétaire (programmation impérative, sujet 3) http://sfc-abm.org/students/mief/ 10 février 2014 Table des matières 1 Sujet 2 2 Description plus détaillée de la simulation 3 2.1 Les agents............................. 3 2.2 Les interactions.......................... 3 2.3 Les quantités, les paramètres.................. 4 2.3.1 La monnaie........................ 4 2.3.2 Le temps......................... 4 2.3.3 Les biens, la production, les stocks........... 4 2.3.4 Travail, qualification, contrat de travail......... 5 2.3.5 Données des ménages................... 5 2.3.6 Données de production des entreprises......... 5 2.3.7 Données financières des entreprises........... 5 2.3.8 La banque......................... 6 2.4 Les relations, les marchés.................... 6 2.4.1 La relation de salariat.................. 6 2.4.2 le marché du travail................... 7 2.4.3 Le marché des biens................... 7 2.5 Les comportements........................ 8 3 Étapes de réalisation et rendu 8 3.1 Première étape : le marché du travail.............. 8 3.2 Seconde étape : le marché des biens............... 9 3.3 Troisième étape : le marché du crédit.............. 9 3.4 Quatrième étape : améliorer la simulation........... 9 1
1 Sujet L objectif de ce projet est de simuler une économie monétaire simplifiée, sans secteur financier, avec une seule banque créant la monnaie par le crédit, des entreprises et un nombre fixe de ménages. La simulation se déroule par tour. 1. Un tour commence lorsque les entreprises fixent leurs objectifs de production pour le tour. Elles doivent fixer un objectif de masse salariale (qui les conduira soit à licencier soit à embaucher par rapport au tour précédent) duquel dépend directement la quantité de biens produits et elle doivent également fixer un prix unitaire de vente de ces biens pour le tour. 2. Marché du travail. Les entreprises ayant des offres d emploi embauchent parmi les ménages inactifs. Ceci détermine la masse salariale réelle des entreprises pour le tour et donc les salaires à verser. 3. Les entreprises versent les salaires à leurs salariés. Au besoin les entreprises empruntent à la banque le montant nécessaire. 4. Grâce au travail des salariés, les entreprises produisent les biens et constituent leurs stocks. 5. Marché des biens. Les ménages, avec l argent des salaires, achètent et consomment les biens proposés par les entreprises. 6. Les entreprises remboursent (partiellement) leurs crédits. 7. Les entreprises qui ont trop de difficultés à rembourser leurs crédits font faillite. Leurs pertes sont essuyées par la banque qui peut à son tour faire faillite, si ses fonds propres ne couvrent pas les pertes à essuyer. Tant que la banque ne fait pas faillite la simulation continue. Dans un premier temps la simulation doit être la plus simple possible, beaucoup de simplification sont donc introduites. Un objectif raisonnable est de créer des simulations qui durent au moins une cinquantaine de tours. On affichera dans la console les faillites des entreprises avec l effectif salarial au moment de la faillite, ainsi que l encours total de crédit (la masse monétaire) et les fonds propres de la banque à chaque tour. Une fois cette première étape accomplie vous êtes encouragés à créer de nouveaux affichages pour suivre l évolution de l économie. Il n y aura aucune interaction à gérer avec l utilisateur du programme, une fois la simulation lancée elle se déroule jusqu à la fin. Le sujet pourra être traité par binôme ou trinôme (il sera tenu compte du nombre de participants au projet). 2
2 Description plus détaillée de la simulation 2.1 Les agents Il y a trois sortes d agents. Chacun possède des caractéristiques propres. On utilisera des structures pour représenter les caractéristiques de chaque agent. 1. Une seule banque dont la faillite met fin à la simulation. Elle note la dette des entreprises et elle crée l argent en accordant des prêts aux entreprises selon un taux qui dépend de la note. 2. Un nombre fixé de ménages (utiliser un tableau de ménages), chaque ménage compte comme un salarié (on confond complètement les deux notions). 3. Pour simplifier, il y a aussi un nombre fixé d entreprises organisées en tableau. Dès qu une entreprise fait faillite une nouvelle entreprise la remplace au tour suivant. Lorsqu une entreprise fait faillite, les contrats de travail sont rompus (sans indemnité). Son stock est perdu. La dette de l entreprise est effacée. C est la banque qui encaisse la perte sur ses fonds propres (abondés par les interêts perçus sur les prêts). Une nouvelle entreprise, sans stock, sans salariés, sans capital et sans dette est alors introduite à sa place. 2.2 Les interactions Les interactions entres agents sont résumées dans le tableau suivant. Agent ménage entreprise banque banque attribue une note entreprise licencie entreprise offre emploi ménage répond offre emploi entreprise embauche entreprise emprunte entreprise paie salaire ménage fournit travail entreprise propose produit ménage consomme produit entreprise fait faillite entreprise rembourse banque fait faillite 3
2.3 Les quantités, les paramètres 2.3.1 La monnaie Une seule monnaie. typedef double monnaie; La monnaie détenue par chaque agent est normalement conservée à la banque, mais pour simplifier chaque agent en conserve simplement le compte, de même pour le compte de ses dettes et le compte de ses défauts. 2.3.2 Le temps Le temps est représenté par un entier initialement nul, et augmentant de un par tour (hebdomadaire, mensuel peut importe la grandeur réelle représentée). typedef unsigned int tour; tour temps_global; 2.3.3 Les biens, la production, les stocks Il y a un seul type de bien produit et consommé. C est un bien impérissable, il peut être stocké indéfiniment. Les entreprises n ont pas d objectif de stock, elles ont juste des invendus. Le prix du bien est variable selon les entreprise. Paramètres par entreprise : le prix de vente d un produit et le niveau du stock d invendus. monnaie prix_unitaire; unsigned int stock_invendus; La production se fait ex nihilo à l aide de la seule force de travail. La quantité de biens produits dépend uniquement du nombre de salariés, de façon linéaire, par multiplication de la masse salariale par un coefficient de productivité et arrondi par partie entière inférieure. La productivité est le même pour toutes les entreprises et ne progresse pas dans le temps. double productivite = 100.; 4
2.3.4 Travail, qualification, contrat de travail Il y a une seule qualification de travailleur et un seul contrat de travail avec au plus un salaire par ménage. Un seul type de contrat de travail à durée illimitée. Un seul montant de salaire. La rupture du contrat de travail peut se faire unilatéralement par l entreprise et ne donne lieu à aucune indemnité (pas de démission des salariés). Paramètre global : montant du salaire unique. monnaie salaire_unique = 1000.; 2.3.5 Données des ménages Pas d objectif d épargne pour les ménages. Les ménages ne s endettent pas. Les ménages cherchent à consommer un nombre fixé de produits par période. Ce nombre est le même pour tous les ménages. unsigned int demande_par_menage = 90; 2.3.6 Données de production des entreprises Les données de production d une entreprise sont le nombre de salariés, le prix unitaire auquel elle vend ses produits et le niveau de stock des invendus. unsigned int nombre_salaries; monnaie prix_unitaire; unsigned int stock_invendus; 2.3.7 Données financières des entreprises Il n y a pas de dividendes d entreprise (ni de banque), et pas de détenteur du capital. Chaque entreprise a une note attribuée par la banque en fonction des défauts de crédit sur les termes passés et le temps écoulé depuis. Vous aurez à inventer la méthode de notation et la façon d en déduire un taux de crédit. Chaque entreprise a une seule ligne de crédit ouverte auprès de la banque et il y a une seule durée de crédit applicable. Chaque crédit se fait sur dix tours de temps en dix d échéances d un même montant, une par tour. L entreprise peut rembourser un montant inférieur à l échéance sans pénalité mais il doit couvrir les intérêts, et le prêt doit être intégralement remboursé à terme. Le montant dû à l échéance est calculé de façon à rembourser toute la dette en le nombre de tours de temps restants. 5
Si l entreprise ne peut pas rembourser la part que représente les intérêts ou si le crédit atteint son terme sans complet remboursement, sa note est dégradée. L entreprise doit alors renégocier un crédit, dans le tour suivant ou faire faillite. En cas de nouveau crédit elle doit racheter le précédent, sans pénalité, mais au nouveau taux (obtenu à partir de la nouvelle note). /* données financières d une entreprise */ monnaie solde; /* solde du compte */ monnaie dette; /* montant total de la dette */ double note_pret; /* note au moment du pret */ double note; /* note actuelle */ tour date_terme; /* initialisé à temps intial +10 */ 2.3.8 La banque Pour simplifier, la banque ne conserve quasiment pas de données puisque les comptes courants, les dettes des clients, et les notes et taux d intérêts sur les clients sont conservés par les ménages et les entreprises. Toutefois elle possède des fonds propres abondés par les intérêts perçus sur les prêts et d où les défauts des clients sont décaissés. monnaie fonds_propres; La banque ne peut pas être débitrice auprès d elle même. Si ses fonds propres deviennent négatif elle fait faillite et cela met fin à la simulation. L encours total de crédit est par définition la somme des dettes des entreprises. Il est égal au montant total des prêts accordés depuis le début de la simulation moins les remboursements du principal versé jusq alors, et moins les dettes des entreprises faillitaires. Il est encore égal à la somme des soldes des comptes des ménages et des entreprises et des fonds propres de la banque. 2.4 Les relations, les marchés 2.4.1 La relation de salariat Chaque ménage actif connaît l entreprise qui l emploie et sa date d embauche dans cette entreprise. Réciproquement, chaque entreprise connaît la liste de ses employés actuels. Cela pourra être représenté explicitement par une liste chaînée d employés (les entiers qui sont leurs indices dans le tableau des ménages), ou alors on pourra déduire les employés de l entreprise en parcourant le tableau des ménages. 6
2.4.2 le marché du travail Le marché du travail met en relation les ménages au chômage avec les entreprises. Les ménages occupant un emploi sont exclus de ce marché. On suppose qu ils ne cherchent pas un nouvel emploi, le salaire et le travail étant le même partout. Les entreprises déterminent leur objectif de masse salariale à chaque tour. Selon le niveau actuel et l objectif à atteindre elles licencient et remettent ainsi les ménages sur le marché du travail ou bien elles font des offres d emploi auxquelles les ménages répondent, puis donnent suite ou non par une embauche effective. On suppose qu il n y pas de chômage volontaire de la part des ménages. Pour simuler le marché du travail, tant que le salaire est unique, on ne représente que les étapes suivantes. 1. Les entreprises qui veulent diminuer leur masse salariale licencient (elles pourront par exemple licencier les derniers embauchés). 2. Puis les entreprises qui veulent augmenter leur masse salariale déclarent leurs besoins en affichant leur nombre d offres de travail sur le marché. 3. Tant qu il y a des ménages disponibles sur le marché, les embauchent se font une à une, en mettant en relation au hasard une offre d emploi et un ménage au chômage, jusqu à ce que cela ne soit plus possible. S il y a plus d offres que de ménages disponibles, il reste des offres non pourvues, ou au contraire s il y a moins d offre que de ménages en recherche d emploi il restera des ménages au chômage. Dans un cas il suffit de choisir au hasard les offres qui ne seront pas pourvues et dans l autre cas il suffit de choisir au hasard quels ménages resteront au chômage. Une fois l excédent d offre ou de demande ainsi mis de côté, il ne reste plus qu à apparier un même nombre d offres et de ménages et pour cela il suffit de commencer par tirer un ordre aléatoire sur les ménages demandeurs et de pourvoir les offres qui doivent l être entreprise par entreprise. 2.4.3 Le marché des biens Le marché des biens mets en relation la demande de consommation des ménages avec l offre de biens des entreprises. Les entreprises offrent tout leur stock sur le marché des biens au prix unitaire qu elles ont décidé. Tous les ménages cherchent à consommer un même nombre (fixé globalement) de produits par période. On suppose que les ménages cherchent 7
toujours à acquérir les biens au meilleur prix et qu ils sont en concurrence pour cela. Si l objectif de consommation d un ménage est atteint ou si le solde de son compte est trop bas, il cesse de consommer. On pourra trier les offres des entreprises par ordre croissant de prix unitaire et faire consommer les ménages aléatoirement tour à tour en commençant par les meilleures offres. 2.5 Les comportements Il vous appartient de fixer le comportement des agents de la simulation. Ceux-ci ne doivent dépendre que de données simples et directement accessibles (la rationalité est limitée). Le comportement des entreprises consiste en la façon dont elles déterminent leurs objectifs de production (masse salariale, prix unitaire). Dans un premier temps vous n utiliserez pour cela que les données de production actuelles (masse salariale, stock, prix unitaire) et les données financières actuelles (note et niveau de la dette, nombre de tours avant le terme) de l entreprise. Le comportement de la banque consiste en la façon de noter les entreprises, uniquement en fonction des défauts passés et du niveau de dette et de décider d accorder ou non un prêt et de son taux en fonction uniquement de la note. Le comportement des ménages sur les marchés des biens et du travail est entièrement déterminé et ne nécessite aucun choix. 3 Étapes de réalisation et rendu 3.1 Première étape : le marché du travail Dans une première étape vous réaliserez une simulation uniquement du marché du travail avec un tableau de ménages et un tableau d entreprises donnés. Vous testerez ce marché en donnant arbitrairement des objectifs de masse salariale pour chaque entreprise, sur quelques tours. Vérifiez que les données de la simulation sont toutes cohérentes entre elles. Rendu : avant le 7 mars, remettre à votre chargé de TD les fichiers source du programme permettant de tester votre simulation du marché du travail. 8
3.2 Seconde étape : le marché des biens Simuler le marché des biens en plaçant manuellement quelques offres (prix unitaire et stock) du côté des entreprises et en attribuant des soldes différents aux ménages. Vérifier la cohérence sur plusieurs simulations. Rendu : avant le 21 mars. 3.3 Troisième étape : le marché du crédit Équiper les entreprises d un comportement de production simple : 1. Fixer une fois pour toute en début de simulation le nombre de salariés et ne plus le changer (sauf faillite). 2. si le niveau de stock dépasse la demande unitaire des ménages multipliée par le nombre de salariés, baisser le prix unitaire d une unité, autrement l augmenter d une unité. Équiper la banque d une fonction de notation simple : 1. fixer la note initiale à 0 et le taux initial à 1%. 2. En cas de défaut d une entreprise baisser sa note de 0.5 et ne jamais la remonter. 3. Fixer le nouveau taux à 1% moins la note (donc le taux sera de 1.5% après un défaut, 2% après deux défauts, etc.). Tester la simulation complète avec le marché du crédit. Votre simulation complète doit maintenant fonctionner, faire des tests avec différents nombres d entreprises et de ménages (commencer petit, par exemple avec deux ou trois entreprises). Rendu : avant le 4 avril. 3.4 Quatrième étape : améliorer la simulation Améliorer les comportements de votre simulation, notamment le comportement des entreprises de façon à rendre le marché du travail dynamique. Contrôler l aléa. Votre simulation utilise une graine aléatoire pour initialiser un générateur de nombres aléatoires, afficher cette graine en début de simulation. Puis faire en sorte qu il soit possible de passer en argument à la ligne de commande la graine aléatoire, de façon à rejouer à l identique une dynamique. Dépasser le cas simplifié. Vous pouvez revenir sur des choix de simplification qui ont été fait dans cette simulation pour la rendre un peu plus 9
réaliste. Par exemple en rendant le nombre d entreprises réellement dynamique ou en donnant aux ménages un comportement de consommation plus complexe. Dans ce cas, vous pouvez rendre une deuxième version de la simulation complète dans laquelle vous irez plus loin. Rendu final : avant le 28 avril. Vous livrerez, les fichiers sources (du C standard dans des fichiers.c et.h) un fichier Makefile et un document dans un format ouvert (pdf, odt, etc.) avec vos noms, où vous décrirez les parties intéressantes de votre simulation et vos commentaires sur la dynamique. En fournissant vos graines aléatoires vous permettez normalement à d autres personnes de revoir exactement les mêmes enchaînements d événements. Vous ne rendrez aucun autre type de fichier. 10