En utilisant la classe python, simulez grossièrement le comportement de production d'un agriculteur et le comportement de consommation d'un consommateur ② ~ Il est temps de voir le résultat ~

La dernière fois, j'ai expliqué comment définir les conditions en utilisant le modèle économique, donc cette fois je vais expliquer quel type de code a été utilisé pour construire la situation. Si vous voulez revenir sur les paramètres de condition, veuillez vérifier la précédente Utilisation de la classe python …… ①.

Confirmation de ce qu'il faut faire cette fois

(1) Remplacez les paramètres du modèle défini la dernière fois par des valeurs numériques spécifiques. ② Vérifiez le code. ③ Vérifiez le résultat.

(1) Remplacez le paramètre par une valeur numérique spécifique

Gestion des paramètres dans d'autres simulations économiques

D'après "Empirical Analysis of Evolving Economics" dans le numéro spécial du Séminaire économique (2016) que j'ai lu l'autre jour, Dans un article récent de macroéconomie, après avoir vérifié quantitativement si un modèle économique peut représenter la réalité, les paramètres estimés sont substitués dans le modèle économique, puis une simulation virtuelle anti-réelle (si une subvention est accordée). Qu'est-il arrivé à la production de l'agriculteur si cela n'avait pas été fait?). Taylor (2005) et Dyer (2006), que j'ai présentés dans l'article précédent, ont également facilement estimé et simulé les paramètres de la fonction de production et de la fonction d'utilité (type Cobb-Douglas) à partir de l'enquête rurale au Mexique. En revanche, dans cette simulation, les paramètres n'ont pas été estimés et les valeurs numériques sélectionnées de manière appropriée ont été remplacées. Ci-dessous, nous présenterons les valeurs numériques appliquées aux paramètres de cette simulation.

Fonction de production de l'agriculteur

\Pi = p_A*Q_A+p_B*Q_B+200*L_n...(1) \\ Q_A = 3*L_A^{0.3} *K_A^{0.7}...(2) \\ Q_B = L_B^{0.7} *K_B^{0.3}...(3) \\ 24 = L_A+L_B+L_n...(4) \\ 10 = K_A+K_B...(5)

$ p_A (prix initial de A) $: 100 $ p_B (prix initial de B) $: 300

Fonction d'utilité du consommateur

U = c_A^{0.4}+c_B^{0.6}...(1) \\ I_t = I_{t-1} + 5000 - C_{t-1} > C_t = p_A*c_A + p_B*c_B...(2:Contraintes budgétaires) \\ Q_{A,t} + s_{A,t-1} > c_{A,t}...(3:La fourniture+Reste> Consommation) \\ Q_{B,t} + s_{B,t-1} > c_{B,t}...(4:La fourniture+Reste> Consommation) \\ c_A + c_B < 40...(5:Contrainte de satiété)

$ p_A (prix initial de A) $: 100 $ p_B (prix initial de B) $: 300

Autres (formation des prix et report du produit suivant)

① Prochain budget: $ I_ {t + 1} = I_t + 5000 --c_t $ ② Montant reporté pour le trimestre suivant: $ s_ {t + 1} = s_t + Q_t --c_t $ ③ Comment déterminer le prix pour le prochain trimestre  if (Q_t + s_{t-1} - c_t)/(Q_t + s_{t-1}) < 0.3:   p_{t+1} = 1.01 * p_t  else:   p_{t+1} = 0.99 * p_t

J'ai expliqué dans l'article précédent pourquoi je l'ai configuré de cette façon. Veuillez vérifier là-bas.

② Code

"""
sell&buy.programme py
Les agriculteurs et les consommateurs répètent la production et l'achat
Les agriculteurs maximisent les profits, les consommateurs maximisent l'utilité
Les agriculteurs utilisent leur propre travail et leur propre capital pour la production
Le prix du prochain trimestre fluctuera en fonction du stock + volume de production-volume de consommation du trimestre précédent.
"""

#Importation de module
import random
import numpy as np
import matplotlib.pyplot as plt

#Variables globales
alpha = 0.3   #Paramètres liés à la production du produit A
beta = 0.7    #Paramètres liés à la production du produit B
gamma = 0.4  #Paramètres liés à l'utilité que les consommateurs obtiennent lors de la consommation de chaque produit
w = 200       #salaire
appe = 40     #La quantité maximale qu'une personne peut manger est fixée à 40
SEED = 32768  #Valeur des semences
R = 100        #Nombre de répétitions de transaction

#Définition de classe Farmer
class Farmer:
    """Définition d'une classe qui représente un agriculteur"""
    def __init__(self, cat):   #constructeur
        self.category = cat
        self.maxprofit = 0   #Bénéfice maximum (0 pour le moment)
        self.mqa = 0          #Un volume de production au maximum de profit
        self.mqb = 0          #Production B avec un profit maximum
        self.mLA = 0         #Ci-dessous, le montant de chaque élément de production utilisé au profit maximum
        self.mKA = 0
        self.mLB = 0
        self.mKB = 0
        self.mLn = 0
        self.L = 24           #Travail autonome
        self.K = 10           #Montant du capital propre
    def solvePmax(self):   #Produire A et B pour optimiser les profits
        """Réinitialisez le meilleur profit"""
        self.maxprofit = 0
        """Résolvez le problème de l'optimisation des bénéfices"""
        for i in range(nlimit):
            self.calcprofit(Market)   #Le profit est calculé (le profit est calculé)
    def calcprofit(self, Market):   #Calcul des bénéfices
        """Obtenir au hasard des combinaisons qui satisfont à l'auto-contrainte des facteurs de production"""
        LA = int(random.randrange(24))       #Choisissez un entier entre 0 et 24
        LB = int(random.randrange(24 - LA))  #Choisissez un entier entre 0 et 24-LA
        Ln = self.L - LA - LB                #Transférer le surplus de main-d'œuvre dans la main-d'œuvre non agricole
        KA = int(random.randrange(10))
        KB = self.K - KA
        """Fonction de production"""
        qa = 3 * LA ** (alpha) * KA ** (1 - alpha)
        qb = 1 * LB ** (beta) * KB ** (1 - beta)
        """Fonction de profit"""
        profit = Market.pA * qa + Market.pB * qb + w * Ln
        """Mettre à jour la meilleure solution"""
        if profit >= self.maxprofit:   
            self.maxprofit = profit
            self.mqa = qa
            self.mqb = qb
            self.mLA = LA
            self.mKA = KA
            self.mLB = LB
            self.mKB = KB
            self.mLn = Ln
#Fin de la définition de la classe Farmer

#Définition de classe Consommateur
class Consumer:
    """Définition d'une classe qui représente un consommateur"""
    def __init__(self, cat):   #constructeur
        self.category = cat
        self.maxutility = 0   #Utilité maximale (0 pour le moment)
        self.mca = 0     #Consommation du produit A
        self.mcb = 0     #Consommation du produit B
        self.C = 0       #Dépenses totales
        self.I = 5000    #Enregistrer S comme budget initial=A donné 5000
    def solveUmax(self):   #Consommez A et B pour maximiser l'utilité
        """Réinitialiser les meilleures contraintes d'utilité et de budget"""
        self.maxutility = 0
        I = self.I + 5000   #Le revenu unique est de 5000
        """Résoudre les problèmes d'optimisation des utilitaires"""
        for i in range(nlimit):
            self.calcutil(I, Market)   #L'utilité est calculée (l'utilité est calculée)
    def calcutil(self, I, Market):   #Calcul de l'utilité
        """Sélectionnez au hasard la consommation des produits A et B"""
        ca = int(random.randrange(appe))       #0 à appe=Choisissez un entier dans les 40
        cb = int(random.randrange(appe - ca))  #0 à appe=40 -Choisissez un entier dans ca
        """Calculez les dépenses totales pour ce terme"""
        C = Market.pA * ca + Market.pB * cb
        """Fonction d'utilité"""
        utility = ca ** (gamma) + cb ** (1 - gamma)  
        """Mettre à jour la meilleure solution"""
        if I > C and Market.sa > ca and Market.sb > cb:
            if utility >= self.maxutility:   #Mettre à jour la meilleure solution
                self.maxutility = utility
                self.mca = ca
                self.mcb = cb
                self.C = C
                self.I = I - C   #Je vais calculer le budget pour le prochain trimestre, donc j'ai soustrait les dépenses
            
#Consommateur de fin de cours

#Marché de définition de classe
class Market:
    def __init__(self):
        self.pA = 100   #Prix initial du produit agricole
        self.pB = 300   
        self.sa = 2 * (12 ** 0.3) * (5 ** 0.7)   #Nous avons utilisé les valeurs lorsque la moitié des éléments de production que nous possédions étaient affectés à la production de A et B, respectivement.
        self.sb = 1 * (12 ** 0.7) * (5 ** 0.3)
    def save(self, f):   #La quantité produite par l'agriculteur est mise en stock
        for i in range(len(f)):   
            self.sa += f[i].mqa
            self.sb += f[i].mqb  
    def eaten(self, c):   #La quantité consommée par le consommateur est attirée par le stockage, et un autre/Seulement 3 peuvent être mangés par les souris
        for i in range(len(c)):   #Manger par les humains réduit le stockage pour le prochain trimestre
            self.sa -= c[i].mca
            self.sb -= c[i].mcb
        self.sa *= 2 / 3          #Mangez par souris et réduisez le stockage pour le prochain trimestre
        self.sb *= 2 / 3
    def price(self, c):   #Calculez le prix pour le prochain trimestre
        Tca = 0
        Tcb = 0
        for i in range(len(c)):
            Tca += c[i].mca
            Tcb += c[i].mcb
        if (self.sa * 3 / 2) / (self.sa * 3 / 2 + Tca) <= 0.3:
            self.pA *= 1.01
        else:
            self.pA *= 0.99
        if (self.sb * 3 / 2) / (self.sb * 3 / 2 + Tcb) <= 0.3:
            self.pB *= 1.01
        else:
            self.pB *= 0.99               
        
#Définition de la fonction de sous-traitance
#Calcn qui supervise le prochain calcul()Définition des fonctions
def calcn(t, f, c, Market):
    #(1) Énuméré le temps, le prix du terme précédent et le surplus de produit du terme précédent.
    pAlist.append(Market.pA)   #prix
    pBlist.append(Market.pB)
    salist.append(Market.sa)   #Produit restant
    sblist.append(Market.sb)
    tlist.append(t + 1)        #temps
    #② Optimiser les profits de la ferme
    for i in range(len(f)): 
        f[i].solvePmax()
    #③ Valeur agrégée du volume de production des produits sur le marché et autres facteurs
    mqa = 0
    mqb = 0
    maxprofit = 0
    mLA = 0
    mKA = 0
    mLB = 0
    mKB = 0
    mLn = 0
    for i in range(len(f)):   
        mqa += f[i].mqa
        mqb += f[i].mqb
        maxprofit += f[i].maxprofit
        mLA += f[i].mLA
        mKA += f[i].mKA
        mLB += f[i].mLB
        mKB += f[i].mKB
        mLn += f[i].mLn    
    #④ Mettez la valeur agrégée de la production de chaque agriculteur dans la liste
    maxprofitlistF.append(maxprofit)   
    mqalistF.append(mqa)
    mqblistF.append(mqb)
    mLAlistF.append(mLA)
    mKAlistF.append(mKA)
    mLBlistF.append(mLB)
    mKBlistF.append(mKB)
    mLnlistF.append(mLn)
    #⑤ Les produits agricoles sont sur le marché
    Market.save(f)
    #⑥ Optimiser l'utilité des consommateurs
    for i in range(len(c)):   
        c[i].solveUmax()
    #⑦ Valeur agrégée de la consommation de produits et autres facteurs survenant sur le marché
    mca = 0
    mcb = 0
    maxutility = 0
    C = 0
    mI = 0
    for i in range(len(c)):   
        mca += c[i].mca
        mcb += c[i].mcb
        maxutility += c[i].maxutility
        C += c[i].C
        mI += c[i].I    
    #⑧ Mettez la valeur agrégée de chaque produit consommateur dans la liste
    maxutilitylistC.append(maxutility)   
    mcalistC.append(mca)
    mcblistC.append(mcb)
    ClistC.append(C)
    IlistC.append(mI)
    #⑨ Excédent de produits reporté au trimestre suivant
    Market.eaten(c)
    #⑩ Prix suivant
    Market.price(c)      
    

#Exécutif principal
#Initialisation
random.seed(SEED)      #Initialisation aléatoire
Market = Market()      #Mettre une instance de la classe Market dans une variable
#Dupliquez les instances Farmer et Consumer de catégorie 0 dans la liste (prévu pour le faire, une à la fois). Si vous créez une instance avec une liste, il semble que vous ne pouvez pas utiliser la variable seule.
f = [Farmer(0)]
c = [Consumer(0)]
#Liste du statut d'agriculteur
maxprofitlistF = []
mqalistF = []
mqblistF = []
mLAlistF = []
mKAlistF = []
mLBlistF = []
mKBlistF = []
mLnlistF = []
#Liste du statut de consommateur
maxutilitylistC = []
mcalistC = []
mcblistC = []
ClistC = []
IlistC = []
#Liste des prix et des restes de produits
pAlist = []
pBlist = []
salist = []
sblist = []
#Liste des horaires
tlist = []
#Entrez le nombre d'essais
nlimit = int(input("Spécifiez le nombre de fois pour rechercher la meilleure solution. Plus le nombre est élevé, plus la solution optimale est proche. :"))

#Simulation d'agent
for t in range(R):
    calcn(t, f, c, Market)   #Calculez l'état à la prochaine fois
#Fin de la partie simulation

#Ajustement des nombres après la virgule décimale dans une liste particulière
#Ajuster le profit, la production, l'utilité, C, s, le revenu
maxprofitlistF = [round(maxprofitlistF[n]) for n in range(len(maxprofitlistF)) ]
mqalistF = [round(mqalistF[n], 1) for n in range(len(mqalistF))]
mqblistF = [round(mqblistF[n], 1) for n in range(len(mqblistF))]
maxutilitylistC = [round(maxutilitylistC[n], 1) for n in range(len(maxutilitylistC))]
ClistC = [round(ClistC[n]) for n in range(len(ClistC))]
IlistC = [round(IlistC[n]) for n in range(len(IlistC))]
salist = [round(salist[n], 2) for n in range(len(salist))]
sblist = [round(sblist[n], 2) for n in range(len(sblist))]


#Affichage du graphique
print("profit","\n",maxprofitlistF,"\n","\n","Un volume de production","\n",mqalistF,"\n","\n","Production B","\n",mqblistF,"\n","\n","LA","\n",mLAlistF,"\n","\n","LB","\n",mLBlistF,"\n","\n","Ln","\n",mLnlistF,"\n","\n","utilitaire","\n",maxutilitylistC, "\n","\n","Une consommation","\n",mcalistC,"\n","\n","Consommation B","\n",mcblistC,"\n","\n","C","\n",ClistC,"\n","\n","pA","\n",pAlist,"\n","\n","pB","\n",pBlist,"\n","\n","sa","\n",salist,"\n","\n","sb","\n",sblist,"\n","\n","le revenu","\n",IlistC)
pA = plt.plot(tlist, pAlist)
pB = plt.plot(tlist, pBlist)
plt.title("the price change of product A and B")
plt.xlabel("time")
plt.ylabel("price")
plt.legend((pA[0], pB[0]), ("pA", "pB"), loc=4)

plt.show()
# sell&buy.py

Structure générale

J'ai utilisé la classe

Comme écrit dans le titre, j'ai essayé d'utiliser la classe. Il existe trois types de classes créées ici: "Agriculteur", "Consommateur" et "Marché". L'agriculteur produit A et B pour maximiser les profits, Le consommateur consomme A et B pour maximiser l'utilité sous contraintes, Market gère l'inventaire A et B et ajuste les prix.

Comment résoudre le problème d'optimisation

Je ne sais pas comment le problème d'optimisation est résolu dans d'autres simulations économiques, Ici, nous avons essayé au hasard la combinaison de variables de sélection un nombre spécifié de fois, et mis à jour la combinaison lorsque l'utilité ou le profit était le plus grand et que les conditions de contrainte étaient remplies.

Un livre auquel j'ai fait référence en écrivant du code

Le code est écrit selon Tomohiro Odaka (2018): «Calcul numérique et simulation par Python», mais il peut y avoir une partie où M. Odaka a mal interprété les mots utilisés.

Je mets une instance de Farmer and Consumer dans une variable de liste même si je n'ai qu'un seul agent

La raison en est que je voulais augmenter le nombre d'agents plus tard. À l'avenir, en le faisant plus comme un multi-agent, j'augmenterai le nombre d'agents avec des paramètres différents. Lorsque disperser les paramètres de l'agent ① Pensez-vous que les paramètres sont ajustés en fonction de la distribution de probabilité? (2) Je m'inquiète de savoir s'il faut faire en sorte que la structure change les paramètres sous l'influence d'autres variables exogènes.

③ Confirmation des résultats

Quand j'ai couru, le résultat était sorti comme suit. Comme il est long, certaines parties sont omises.

résultat

Spécifiez le nombre de fois pour rechercher la meilleure solution. Plus le nombre est élevé, plus la solution optimale est proche. : 100 Un volume de production [11.7, 21.2, 22.0, 16.3, 11.4, 21.2, 17.2, 17.9, 19.4, 14.4, 17.9, 17.2, 23.9, 19.4, 15.8, 22.6, 19.5, 19.4, 15.8, 15.8, 19.4, 19.5, 21.2, 17.2, 17.9, 22.0, 14.6, 22.6, 16.3, 17.2, 19.5, 19.4, 25.0, 17.8, 19.5, 23.9, 23.9, 25.0, 17.9, 27.0, 22.6, 14.4, 19.5, 21.2, 19.5, 19.4, 23.9, 15.8, 17.2, 26.1, 17.9, 19.4, 21.2, 17.2, 21.2, 26.1, 19.4, 22.6, 26.1, 22.6, 23.9, 21.2, 23.9, 22.6, 19.0, 26.1, 25.0, 27.9, 19.5, 22.6, 21.2, 25.0, 19.5, 22.6, 22.0, 21.2, 19.4, 27.0, 25.0, 27.0, 24.0, 19.4, 27.9, 21.2, 22.6, 19.5, 27.9, 27.0, 25.0, 27.0, 20.8, 30.1, 25.0, 23.9, 23.9, 26.1, 29.4, 19.4, 17.2, 25.0]

Production B [5.4, 0.0, 3.8, 4.9, 6.3, 1.6, 1.0, 3.2, 0.0, 2.3, 3.2, 2.2, 1.0, 2.6, 3.2, 1.6, 2.0, 1.0, 3.2, 2.0, 2.6, 2.7, 2.2, 0.0, 2.0, 1.2, 5.9, 1.6, 4.3, 1.0, 3.2, 1.0, 1.6, 3.0, 1.2, 1.6, 2.6, 2.6, 1.2, 1.6, 2.2, 3.0, 5.7, 2.6, 1.2, 3.1, 1.6, 3.2, 1.6, 0.0, 1.2, 1.6, 2.6, 0.0, 2.6, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.6, 1.0, 2.3, 2.6, 0.0, 2.2, 3.8, 2.2, 1.0, 2.2, 1.2, 1.0, 3.8, 1.0, 3.9, 0.0, 3.1, 1.0, 2.0, 2.2, 3.1, 1.0, 1.6, 3.2, 1.0, 1.0, 1.6, 0.0, 1.2, 1.0, 0.0, 2.6, 2.2, 1.6, 0.0, 2.2, 1.0, 1.6]

LA [1, 4, 6, 3, 2, 4, 2, 3, 3, 2, 3, 2, 6, 3, 2, 5, 4, 3, 2, 2, 3, 4, 4, 2, 3, 6, 3, 5, 3, 2, 4, 3, 7, 4, 4, 6, 6, 7, 3, 9, 5, 2, 4, 4, 4, 3, 6, 2, 2, 8, 3, 3, 4, 2, 4, 8, 3, 5, 8, 5, 6, 4, 6, 5, 5, 8, 7, 10, 4, 5, 4, 7, 4, 5, 6, 4, 3, 9, 7, 9, 8, 3, 10, 4, 5, 4, 10, 9, 7, 9, 5, 13, 7, 6, 6, 8, 12, 3, 2, 7]

LB [7, 0, 5, 6, 7, 2, 1, 4, 0, 2, 4, 3, 1, 4, 4, 2, 2, 1, 4, 2, 4, 3, 3, 0, 2, 1, 7, 2, 5, 1, 4, 1, 2, 3, 1, 2, 4, 4, 1, 2, 3, 3, 9, 4, 1, 5, 2, 4, 2, 0, 1, 2, 4, 0, 4, 0, 1, 1, 0, 0, 0, 1, 2, 1, 2, 4, 0, 3, 5, 3, 1, 3, 1, 1, 5, 1, 7, 0, 5, 1, 2, 3, 5, 1, 2, 4, 1, 1, 2, 0, 1, 1, 0, 4, 3, 2, 0, 3, 1, 2]

Ln [16, 20, 13, 15, 15, 18, 21, 17, 21, 20, 17, 19, 17, 17, 18, 17, 18, 20, 18, 20, 17, 17, 17, 22, 19, 17, 14, 17, 16, 21, 16, 20, 15, 17, 19, 16, 14, 13, 20, 13, 16, 19, 11, 16, 19, 16, 16, 18, 20, 16, 20, 19, 16, 22, 16, 16, 20, 18, 16, 19, 18, 19, 16, 18, 17, 12, 17, 11, 15, 16, 19, 14, 19, 18, 13, 19, 14, 15, 12, 14, 14, 18, 9, 19, 17, 16, 13, 14, 15, 15, 18, 10, 17, 14, 15, 14, 12, 18, 21, 15]

Une consommation [23, 11, 28, 16, 12, 14, 19, 17, 21, 7, 23, 16, 23, 20, 16, 12, 26, 17, 16, 7, 20, 21, 19, 19, 15, 21, 10, 22, 10, 23, 16, 22, 20, 20, 16, 26, 20, 24, 16, 25, 23, 9, 13, 28, 19, 20, 20, 6, 22, 24, 20, 19, 20, 20, 12, 28, 14, 25, 26, 1, 39, 21, 13, 29, 18, 24, 20, 32, 17, 24, 20, 26, 15, 17, 25, 23, 11, 23, 20, 34, 16, 21, 22, 18, 27, 11, 33, 23, 28, 28, 28, 28, 28, 15, 25, 27, 27, 10, 22, 26]

Consommation B [12, 1, 3, 5, 5, 2, 1, 3, 0, 2, 3, 2, 1, 1, 3, 2, 2, 0, 2, 3, 1, 1, 4, 0, 0, 2, 6, 1, 4, 1, 2, 2, 1, 1, 1, 2, 3, 2, 1, 2, 1, 3, 6, 2, 1, 3, 1, 2, 2, 0, 0, 2, 3, 3, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 2, 3, 0, 2, 3, 2, 1, 2, 1, 1, 4, 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 3, 0, 1, 2, 2, 2, 2, 2, 0, 2, 1, 0, 2, 0, 2]

C [5900, 1414, 3700, 3101, 2724, 2048, 2244, 2660, 2185, 1341, 3310, 2299, 2753, 2459, 2668, 1930, 3438, 1859, 2391, 1707, 2520, 2651, 3363, 2161, 1723, 3042, 3006, 2861, 2394, 2977, 2486, 3209, 2696, 2717, 2250, 3795, 3368, 3608, 2330, 3797, 3276, 2066, 3479, 4192, 2764, 3521, 2946, 1405, 3502, 3200, 2693, 3165, 3627, 3627, 1681, 3884, 2255, 3468, 3642, 141, 5463, 3256, 2145, 4387, 3135, 4317, 2915, 5279, 3389, 4184, 3326, 4563, 2614, 2947, 5039, 3890, 2334, 3889, 4052, 5613, 3134, 3588, 4385, 3176, 4869, 2676, 5205, 3972, 5115, 5115, 5115, 5115, 5115, 2537, 4867, 4959, 4704, 2351, 3833, 5166]

le revenu [4100, 7686, 8986, 10886, 13162, 16114, 18870, 21210, 24025, 27684, 29374, 32075, 34322, 36863, 39195, 42265, 43827, 46968, 49578, 52870, 55350, 57700, 59337, 62176, 65452, 67410, 69404, 71543, 74149, 76171, 78685, 80477, 82781, 85064, 87813, 89018, 90650, 92042, 94712, 95916, 97639, 100573, 102095, 102902, 105138, 106617, 108672, 112267, 113764, 115565, 117872, 119707, 121080, 121080, 124399, 125515, 128260, 129792, 131150, 136009, 135546, 137290, 140145, 140758, 142623, 143307, 145392, 145112, 146723, 147539, 149212, 149649, 152036, 154089, 154050, 155160, 157827, 158937, 159885, 159272, 161138, 162550, 163164, 164989, 165120, 167444, 167239, 168267, 168152, 168152, 168152, 168152, 168152, 170616, 170748, 170789, 171085, 173734, 174901, 174735]

image.png

Impressions de voir les résultats

Si vous essayez vraiment de résumer les résultats de votre examen, cela prendra plus de temps, je voudrais donc décrire brièvement vos impressions sur les résultats.

① Comment afficher (graphique)

J'ai trouvé assez difficile de sortir le résultat en utilisant matplotlib. Cette fois, j'ai fait un diagramme des changements de prix uniquement et montré les changements d'autres variables simplement en collant une liste de manière appropriée, mais j'aimerais pouvoir faire de toutes les variables un graphique à barres. Le prochain défi.

② Changement de prix

La raison pour laquelle je n'ai tabulé que les variations de prix était parce que je me demandais si les prix convergeraient vers quelque chose comme un prix équilibré. En regardant la figure, Vous pouvez voir que le prix du produit A (l'image de céréales à bas prix et à forte intensité de capital) n'a cessé d'augmenter. Et la consommation de A est presque constante, et la production semble avoir augmenté progressivement. Il est normal que les agriculteurs produisent plus de A avec des prix plus élevés, mais il est étrange que la quantité de A consommée par les consommateurs n'ait pas changé. La raison en est peut-être qu'en raison des restrictions de satiété, le montant de l'augmentation de la consommation est trop faible pour le montant de l'augmentation des revenus, et le budget a tellement augmenté que les restrictions budgétaires n'ont pas de sens. Dans ce cas, la répartition de la consommation peut converger vers un équilibre de la consommation (la répartition de la consommation que vous préférez lorsque le prix ne change pas), qui est déterminé par les paramètres de la fonction d'utilité quel que soit le budget. Eh bien, c'est profond ... Vaut-il mieux supprimer la restriction de satiété? Ou peut-être serait-il préférable d'augmenter le nombre d'agents ...

③ Tendance d'entrée des éléments de production

Expliquer la tendance d'entrée des éléments de production en un mot "Les salaires du travail non agricole sont si élevés que tout le monde ne cultive que pour des emplois annexes." Il s'avère que la plupart du temps a été investi dans Ln, mais le salaire de 200 personnes peut avoir été trop élevé. En outre, le produit B (une image de fruits à prix élevé et à forte intensité de main-d'œuvre) était rarement produit, et seul A était produit en grand nombre. Avec cette condition, on peut dire que les agriculteurs avaient tendance à produire beaucoup de A, qui a une productivité élevée des éléments de production, au lieu de B, qui a un prix initial légèrement élevé. Cela ressemble à un riziculteur japonais à temps partiel. En passant, si vous entrez des nombres différents dans les paramètres, des résultats complètement différents seront affichés. Après tout, il peut être nécessaire de s'en tenir un peu plus à la valeur du paramètre.

⑤ Je pensais que le monde était compliqué

Comme mon ami l'a dit, le concepteur de l'automate cellulaire ne sait pas quel type de motif sera dessiné à la fin tant que le programme ne sera pas lancé. Cette fois, moi (le dieu de ce programme) j'ai essayé de faire un modèle qui pourrait imiter le comportement des agriculteurs et des consommateurs, mais je ne savais pas quel serait le résultat avant la course, et après avoir vu le résultat, pourquoi? Je n'ai même pas pu déterminer la raison du résultat. Je pense que les scientifiques relèvent peut-être un défi imprudent. La réalité est plus compliquée que cette simulation. Après tout, tout ce que les humains peuvent faire est de "(1) trouver une théorie de base qui est un os pour expliquer un phénomène. (2) coller divers os ensemble pour faire de la viande pour expliquer un phénomène spécifique." pense.

Donc, c'est brusque, mais ça se termine ici. Ensuite, je pense faire une simulation d'un fermier autosuffisant, ou étudier le pygame et faire un jeu simple qui donne envie au fermier de bouger.

Les références

~ Papier ~ [1]Alain de Janvry, Marcel Fafchamps and Elisabeth Sadoulet(1991) “Peasant household behavior with missing markets: some paradoxes explained” Economic Journal. Vol.101, pp.1400-1417. [2]George A. Dyer, Steve Boucher, and J. Edward Taylor(2006) “Subsistence response to market shocks” American journal of agricultural economics. Vol. 88, pp. 279-291. [3]J.Edward Taylor, George A. Dyer, Antonio Yu'nez-Naude(2005) "Disaggregated Rural Economywide Models for Policy Analysis" World Development. vol. 33, pp. 1671-1688

~ Manuel ~ [1] Tomohiro Odaka (2018): "Calcul numérique et simulation avec Python", Ohm [2]Jake VanderPlas(2016) "Python Data Science Handbook: Essential Tools for Working with Data", O'Reilly Media

Recommended Posts

En utilisant la classe python, simulez grossièrement le comportement de production d'un agriculteur et le comportement de consommation d'un consommateur ② ~ Il est temps de voir le résultat ~
En utilisant la classe python, essayez de simuler très grossièrement et facilement le comportement de production et de consommation des agriculteurs autosuffisants ② Afficher le code et les résultats
À l'aide de la classe python, essayez de simuler très grossièrement et facilement le comportement de production et de consommation des agriculteurs autosuffisants.
Je veux connaître la nature de Python et pip
L'histoire du retour au front pour la première fois en 5 ans et de la refactorisation de Python Django
Je veux clarifier la question de la méthode "__init__" et de l'argument "self" de la classe Python.
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[Python] Comment obtenir le premier et le dernier jour du mois
L'histoire de l'exécution de python et de l'affichage des résultats sans fermer vim
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Obtenez et définissez la valeur du menu déroulant en utilisant Python et Selenium
Convertissez le résultat de python optparse en dict et utilisez-le
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
J'ai essayé de livrer du courrier depuis Node.js et Python en utilisant le service de livraison de courrier (SendGrid) d'IBM Cloud!