[Études de congestion](https://www.amazon.co.jp/%E6%B8%8B%E6%BB%9E%E5%AD%A6-%E6%96%B0%E6%BD%AE%E9 % 81% B8% E6% 9B% B8-% E8% A5% BF% E6% 88% 90-% E6% B4% BB% E8% A3% 95 / dp / 4106035707) Je vais vous expliquer.
Dans le livre lié ci-dessus, la congestion est définie comme "un état qui se produit lorsqu'une population d'individus avec un effet de volume d'exclusion qui fonctionne dans certaines conditions dépasse une certaine densité." Cela signifie «une particularité qui survient lorsque des individus opérant dans certaines conditions dépassent une certaine densité (densité critique) dans un groupe qui existe sans chevauchement (plusieurs individus occupent le même espace). C'est un phénomène. " Vous ne savez probablement pas encore de quoi vous parlez, alors prenons une voiture comme exemple. Notez que le principe est que la ligne se compose uniquement d'individus = voitures et de groupes = voitures. Ensuite, la congestion est un phénomène qui se produit lorsqu'un véhicule dépasse une certaine densité de trafic en vertu de la règle d'avancer lorsque l'avant est ouvert, et il devient difficile pour de nombreuses voitures d'avancer ou la vitesse est supérieure à la vitesse légale. C'est une situation particulière, comme celle de ne pouvoir rouler qu'à une vitesse nettement plus lente. " Je parlerai de cette voiture à l'avenir. Si vous voulez connaître le trafic que peuvent gérer les embouteillages autres que les voitures, accédez à Google ou à Amazon [Traffic Studies](https://www.amazon.co.jp/%E6%B8%8B%E6%BB%9E] % E5% AD% A6-% E6% 96% B0% E6% BD% AE% E9% 81% B8% E6% 9B% B8-% E8% A5% BF% E6% 88% 90-% E6% B4% BB% E8% A3% 95 / dp / 4106035707) Veuillez acheter et lire.
Cette fois, j'utiliserai l'automate cellulaire comme simulation la plus simple. L'automate cellulaire est appelé un jeu de vie s'il s'agit d'une règle bidimensionnelle, mais cette fois c'est une règle unidimensionnelle qui dit "Si la précédente est vide, continuez". Pour les automates à cellules [Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC % E3% 83% 88% E3% 83% 9E% E3% 83% 88% E3% 83% B3) Voir.
Tout d'abord, mettez le code.
trafic.py
# -*- coding: utf-8 -*-
#Changement de congestion dû à un automate cellulaire unidimensionnel
import random
import copy
MAX = 45
SIM_TIME = 5
P = 0.6
#L'état 0 est un espace vide sans voiture
#L'état 1 représente un véhicule
trafic = [0 for i in range(MAX)]
def list2string(l):
string = ""
for state in l:
if state == 0:
s = "□ "
elif state == 1:
s = "■ "
string += s
return string
def setRandom(l, p):
for i, state in enumerate(l):
if p < random.random():
l[i] = 0
else:
l[i] = 1
def nextTime(l):
temp = copy.deepcopy(l)
for i, state in enumerate(l):
if state == 0:
#À l'extrême gauche
if i == 0:
temp[i] = 0
#Vérifiez en arrière à d'autres moments
elif l[i-1] == 0:
temp[i] = 0
else:
temp[i] = 1
elif state == 1:
#À l'extrême droite
if i == len(l)-1:
temp[i] = 0
#Vérifiez avant à d'autres moments
elif l[i+1] == 0:
temp[i] = 0
else:
temp[i] = 1
return temp
if __name__ == "__main__":
#Partie exécution
setRandom(trafic, P)
print(list2string(trafic))
for i in range(SIM_TIME):
#Mettre à jour les informations
trafic = nextTime(trafic)
#Dessiner des informations sous forme de caractères
print(list2string(trafic))
Je vais expliquer le code.
Décrit les variables et les constantes définies en premier. La variable MAX représente la taille maximale du trafic définie ultérieurement, c'est-à-dire la longueur maximale des voitures alignées. Le prochain SIM_TIME est la durée pour effectuer la simulation, et P est la densité du trafic. Et la liste appelée trafic est une liste qui ne prend que deux types d'états, (1) avec une voiture et (0) sans voiture, et est unifiée à 0 comme initialisation au début.
La fonction définie est expliquée ci-dessous. La première fonction list2string est une fonction qui convertit □ et ■ en un caractère et renvoie un caractère pour une liste qui n'a que 0 et 1 états donnés en arguments. La fonction setRandom est une fonction qui définit s'il y a ou non une voiture avec la valeur du deuxième argument comme limite. La fonction nextTime est une fonction qui vérifie s'il faut continuer en fonction de l'état de la voiture à ce moment-là et renvoie l'état suivant. Vous pouvez voir la classification des cas en regardant les commentaires.
Le dernier est la partie exécution. Il n'est pas nécessaire d'expliquer ici et je pense que les commentaires sont suffisants. Vous pouvez réécrire ce code pour en faire une route circulaire ou sortir de la boucle lorsque toutes les voitures sont parties.
Si vous modifiez certaines valeurs de P et que vous l'exécutez, le comportement changera considérablement lorsque P est égal à 0,5. (Comme il utilise des nombres aléatoires, cela peut ne pas changer beaucoup.)
Considérez pourquoi cela change. En premier lieu, il est indispensable que l'avant soit ouvert pour que la voiture puisse bouger. Je vais donc essayer de remplir l'avant ouvert de n'importe quelle voiture avec n'importe quelle voiture. Ensuite, l'état devrait être l'état où la présence et l'absence de la voiture apparaissent alternativement. Bien sûr, dans cet état, je pense que nous pouvons procéder sans encombre et sans encombrement. Mais qu'en est-il de mettre une voiture là-dedans? Je pense que le trafic se produira peu importe où vous mettez votre voiture. La valeur de 0,5 à ce moment est appelée densité critique du trafic. Si la densité critique n'est pas dépassée, si cela prend du temps, même s'il y a une certaine congestion, elle sera éliminée. Cependant, s'il dépasse, il ne sera pas résolu pour toujours. En fait, on sait que ce résultat tient même dans la réalité, bien que la valeur de la densité critique soit différente. Par conséquent, dans les endroits où la congestion se produit fréquemment, la congestion est éliminée en tenant compte de cette idée de densité critique.
Une explication plus détaillée de l'explication donnée ici est donnée au début [Études de congestion](https://www.amazon.co.jp/%E6%B8%8B%E6%BB%9E%E5%AD%A6- % E6% 96% B0% E6% BD% AE% E9% 81% B8% E6% 9B% B8-% E8% A5% BF% E6% 88% 90-% E6% B4% BB% E8% A3% 95 Vous pouvez également le trouver dans le livre / dp / 4106035707). Il existe d'autres types de trafic intéressants tels que "trafic favorable", veuillez donc le lire.