[PYTHON] Warteschlangentheorie Teil 4

[Überlastungsstudien](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) Ich werde darüber erklären.

Was ist eine Überlastungsstudie?

In dem oben verlinkten Buch wird Überlastung definiert als "ein Zustand, der auftritt, wenn eine Population von Personen mit einem Ausschlussvolumeneffekt, der unter bestimmten Bedingungen arbeitet, eine bestimmte Dichte überschreitet". Dies bedeutet, dass "eine Besonderheit auftritt, wenn Personen, die unter bestimmten Bedingungen arbeiten, eine bestimmte Dichte (kritische Dichte) in einer Gruppe überschreiten, die ohne Überlappung existiert (mehrere Personen belegen denselben Raum). Es ist ein Phänomen. " Sie wissen wahrscheinlich noch nicht, wovon Sie sprechen, nehmen wir also ein Auto als Beispiel. Beachten Sie, dass die Linie nur aus Einzelpersonen = Autos und Gruppen = Autos besteht. Dann ist eine Überlastung ein Phänomen, das auftritt, wenn ein Fahrzeug eine bestimmte Verkehrsdichte überschreitet, unter der Regel, sich bei geöffneter Front vorwärts zu bewegen, und es für viele Autos schwierig wird, sich vorwärts zu bewegen, oder wenn die Geschwindigkeit höher als die zulässige Geschwindigkeit ist. Es ist eine besondere Situation, zum Beispiel nur mit einer deutlich langsameren Geschwindigkeit laufen zu können. " Ich werde in Zukunft über dieses Auto sprechen. Wenn Sie wissen möchten, wie viel Verkehr von anderen Staus als Autos bewältigt werden kann, gehen Sie zu Google oder zu Amazon Traffic Studies % 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) Bitte kaufen und lesen.

Eine einfache Simulation des Autoverkehrs

Dieses Mal werde ich den Zellautomaten als einfachste Simulation verwenden. Der Zellautomat wird als Lebensspiel bezeichnet, wenn es sich um eine zweidimensionale Regel handelt. Diesmal handelt es sich jedoch um eine eindimensionale Regel, die besagt, dass "wenn die vorherige leer ist, fortfahren". Für Zellautomaten [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) Siehe.

Python-Programm zur Simulation

Geben Sie zunächst den Code ein.

trafic.py


# -*- coding: utf-8 -*-

#Änderung der Überlastung aufgrund eines eindimensionalen Zellautomaten
import random
import copy

MAX = 45
SIM_TIME = 5
P = 0.6

#Zustand 0 ist ein leerer Raum ohne Auto
#Zustand 1 repräsentiert ein Fahrzeug
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:
            #Ganz links
            if i == 0:
                temp[i] = 0
            #Zu anderen Zeiten rückwärts prüfen
            elif l[i-1] == 0:
                temp[i] = 0
            else:
                temp[i] = 1

        elif state == 1:
            #Ganz rechts
            if i == len(l)-1:
                temp[i] = 0
            #Zu anderen Zeiten vorwärts prüfen
            elif l[i+1] == 0:
                temp[i] = 0
            else:
                temp[i] = 1
    return temp

if __name__ == "__main__":
    #Ausführungsteil
    setRandom(trafic, P)
    print(list2string(trafic))

    for i in range(SIM_TIME):
        #Informationen aktualisieren
        trafic = nextTime(trafic)
        #Zeichnen Sie Informationen als Zeichen
        print(list2string(trafic))

Ich werde den Code erklären.

Beschreibt die zuerst definierten Variablen und Konstanten. Die Variable MAX repräsentiert die später definierte maximale Verkehrsgröße, dh die maximale Länge der aufgereihten Autos. Das nächste SIM_TIME ist die Zeitdauer für die Durchführung der Simulation, und P ist die Verkehrsdichte. Und die Liste mit dem Namen "Verkehr" ist eine Liste, die nur zwei Arten von Zuständen annimmt: (1) mit einem Auto und (0) ohne Auto. Sie wird zunächst als Initialisierung auf 0 vereinheitlicht.

Die definierte Funktion wird unten erklärt. Die erste list2string-Funktion ist eine Funktion, die □ und ■ in ein Zeichen konvertiert und ein Zeichen für eine Liste zurückgibt, in der nur 0 und 1 Zustände als Argumente angegeben sind. Die Funktion setRandom ist eine Funktion, die festlegt, ob es ein Auto mit dem Wert des zweiten Arguments als Grenze gibt oder nicht. Die nextTime-Funktion ist eine Funktion, die prüft, ob entsprechend dem Zustand des Fahrzeugs zu diesem Zeitpunkt vorgegangen werden soll, und den nächsten Zustand zurückgibt. Sie können die Fallklassifizierung sehen, indem Sie sich die Kommentare ansehen.

Der letzte ist der Ausführungsteil. Hier besteht keine Notwendigkeit zu erklären, und ich denke, Kommentare sind ausreichend. Sie können diesen Code umschreiben, um ihn zu einer Kreisstraße zu machen, oder aus der Schleife ausbrechen, wenn alle Autos weg sind.

Zusammenfassung und Erläuterung der Simulationsergebnisse

Wenn Sie einige Werte von P ändern und ausführen, ändert sich das Verhalten erheblich, wenn P 0,5 beträgt. (Da Zufallszahlen verwendet werden, ändert sich möglicherweise nicht viel.)

Überlegen Sie, warum es sich ändert. Erstens ist es unabdingbar, dass die Front offen ist, damit sich das Auto bewegen kann. Also werde ich versuchen, die offene Front eines Autos mit einem Auto zu füllen. Dann sollte der Zustand der Zustand sein, in dem die Anwesenheit und Abwesenheit des Autos abwechselnd auftreten. Natürlich können wir in diesem Zustand reibungslos und ohne Überlastung vorgehen. Aber was ist mit einem Auto? Ich denke, dass Verkehr stattfinden wird, egal wo Sie Ihr Auto abstellen. Der Wert von 0,5 zu diesem Zeitpunkt wird als kritische Dichte des Verkehrs bezeichnet. Wenn die kritische Dichte nicht überschritten wird, wenn es lange dauert, selbst wenn es eine Überlastung gibt, wird sie beseitigt. Wenn es jedoch überschreitet, wird es nicht für immer gelöst. Tatsächlich ist bekannt, dass dieses Ergebnis auch in der Realität zutrifft, obwohl der Wert der kritischen Dichte unterschiedlich ist. Daher wird an Orten, an denen häufig eine Überlastung auftritt, eine Überlastung unter Berücksichtigung dieser Idee der kritischen Dichte beseitigt.

Schließlich

Eine detailliertere Erklärung der hier gegebenen Erklärung wird zuerst gegeben [Überlastungsstudien](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 Sie finden es auch im Buch / dp / 4106035707). Es gibt andere interessante Verkehr wie "günstiger Verkehr", also lesen Sie es bitte.

Recommended Posts

Warteschlangentheorie Teil 4
Warteschlangentheorie Teil 3
Datum / Uhrzeit Teil 1
numpy Teil 1
Argparse Teil 1
numpy Teil 2
Mathematischer Test 2 (Mathematisches Modell der Item-Reaktionstheorie)