Agentenbasierte Modelle verstehen über Elara
In diesem Artikel wird Elara vorgestellt, ein Tool zum Bearbeiten von Ausgaben agentenbasierter Transportmodelle mit MATSim. Elara unterstützt Analysten bei der Übersetzung umfangreicher, halbstrukturierter Daten in nützliche Formate und Zusammenfassungen und hilft bei der Modellkalibrierung und -validierung. Elara ist jetzt Open Source und unser Code ist auf GitHub verfügbar .
Im City Modeling Lab von Arup erstellen wir viele agentenbasierte Simulationen . Mithilfe dieser Art von Werkzeugen können wir direkt beobachten, wie sich synthetische Individuen verhalten und komplexe Entscheidungen treffen, während sie mit ihrer Umgebung und untereinander interagieren. Für die Modellierung von Transportszenarien verwenden wir gerne MATSim – ein Open-Source-ABM-Framework, in dem Agenten versuchen, ihre Transportoptionen (Auswahl des Verkehrsmittels, Zeitauswahl und Routenauswahl usw.) zwischen verschiedenen Aktivitäten über einen Zeitraum von 24 Stunden zu optimieren.
Eine Schwierigkeit beim Erstellen von ABMs in MATSim besteht darin, dass sie in Bezug auf Eingaben sehr datenhungrig sind. Aber auch auf der Output-Seite produzieren sie riesige Datenmengen.
Die primären Ergebnisse eines MATSim-Laufs umfassen ein detailliertes Manifest aller Ereignisse im Laufe des simulierten Tages. Diese Dateien erfassen die Entscheidungen einzelner Agenten und sekundengenaue Ereignisse im Netzwerk in umfangreichen XML-Dokumenten, die für komplexe Simulationen eine Größe von mehreren Gigabyte erreichen können. Diese Daten müssen analysiert und transformiert werden, um die übergeordneten analytischen Erkenntnisse zu gewinnen, die unsere Projekte benötigen.
Aus diesem Grund haben wir Elara entwickelt – ein Tool, das uns hilft, tiefer in unsere Simulationen einzutauchen, die Ergebnisse zu verstehen und die zugrunde liegenden Modelle von MATSim zu kalibrieren. Mit Elara können wir auf einfache Weise sowohl traditionelle Zusammenfassungen (z. B. Verkehrsträgeranteile, stündliche Flüsse und Verbindungsgeschwindigkeiten) als auch mikroskopische Informationen darüber erstellen, wie Agenten im Modell ihre Tagespläne ausgeführt haben. Es verfügt außerdem über Tools zum Vergleich der Leistung einer MATSim-Simulation mit realen, beobachteten Daten.
Und das Beste ist, dass die Ausgaben von Elara in vertrauten, benutzerfreundlichen Tabellen- und Geodatenformaten wie CSV und GeoJSON vorliegen, um die weitere Analyse zum Kinderspiel zu machen.
Wie Elara funktioniert
Elara ist darauf ausgelegt, den Inhalt von MATSim-XML-Dateien effizient elementweise zu streamen und die Daten an einen oder mehrere einzelne Handler weiterzugeben, die für das Parsen und Verarbeiten der Informationen in tabellarische oder räumliche Ausgaben verantwortlich sind.
Diese Struktur hat zwei wesentliche Vorteile. Erstens vermeidet das Streaming des XML das Laden großer Dokumente in den Speicher, sodass Elara auch mit geografisch großen und komplexen Simulationen arbeiten kann. Zweitens ist jeder Handler so konzipiert, dass er genau weiß, wie er die empfangenen Daten analysiert. Durch die Delegierung der Verantwortung für die Verarbeitung und das Schreiben von Ausgaben können neue Funktionen schnell und einfach als Reaktion auf neu entstehende Projektanforderungen hinzugefügt werden.
Die Liste der verfügbaren Ausgabehandler finden Sie in der README-Datei und wird regelmäßig aktualisiert, um neue und verbesserte Funktionen widerzuspiegeln.
Umgang mit Plänen und Ereignissen
MATSim erzeugt zwei Kernausgaben: Pläne und Ereignisse.
Die Ausgabeplandatei berichtet, wie jeder Agent seine tägliche Aktivitätssequenz ausgeführt hat.
Es beschreibt, wann jede Aktivität stattgefunden hat, wie lange und welche Reisemodi und Routen der Agent verwendet hat, um zwischen ihnen zu wechseln. Es enthält auch die Attribute des Agenten und die endgültige „Bewertung“ des Plans – was für den Vergleich verschiedener Szenarien hilfreich sein kann.
Zu den im Labor am häufigsten verwendeten Plan-Handlern gehören:
- Modeshares und Zählungen, optional gefiltert nach bestimmten Aktivitäten;
- Sequenzierte Listen der Aktivitäten, Fahrten und Fahrtstrecken einzelner Agenten; Und
- Bewertete Agentenpläne
Agenteninteraktionen mit dem öffentlichen Verkehrsnetz werden ebenfalls als Ereignisse gespeichert, darunter das Warten an einem Bahnhof oder das Ein- und Aussteigen in einen Bus. Auch Geldtransaktionen, etwa die Zahlung einer Maut, zählen zu den Ereignissen. Zeitlich analysiert, können die Ereignisse verwendet werden, um das gesamte Straßenvolumen oder die Geschwindigkeit eines einzelnen Agenten entlang seiner Route zu rekonstruieren.
Zu den wichtigsten Ausgaben von Event-Handlern gehören:
- Stündliches Verbindungsvolumen und -geschwindigkeiten;
- Zählen der Anzahl der Fahrgäste zwischen Haltestellen des öffentlichen Nahverkehrs;
- Ein- und Aussteigen von Fahrgästen sowie Wartezeiten an Haltestellen öffentlicher Verkehrsmittel ermitteln; Und
- Berechnung, wie viel Agenten an Mautgebühren für Straßenbenutzungsgebührenszenarien zahlen.
Ein separates Nachbearbeitungsmodul erfasst die Ausgaben anderer Tools erneut, um einige nützliche Berechnungen durchzuführen, z. B. das Gruppieren von Fahrtentfernungen und -dauern, die Berechnung von Fahrzeugkilometern aus dem Verkehrsaufkommen auf Verbindungen und das Zusammenfassen von Agentenplänen.
Benchmarking
Eine der leistungsstärksten Funktionen von Elara besteht darin, dass es die Möglichkeit bietet, die Qualität eines MATSim-Laufs zu bewerten, indem die Ergebnisse automatisch mit (vom Benutzer bereitgestellten) realen Daten verglichen werden.
Wir verwenden Benchmarking, um viele verschiedene Aspekte einer Simulation zu bewerten. Beispielsweise verwenden wir Umfragedaten (Volkszählungen oder Reisetagebücher), um festzustellen, ob die Modal Splits in unserem Modell den Entscheidungen realer Menschen ähneln. Anhand der Verkehrszählungsdaten beurteilen wir, ob zu den richtigen Tageszeiten ausreichend Verkehr auf dem Straßennetz vorhanden ist. Gilt das Gleiche auch für das Ein- und Aussteigen im ÖPNV an Haltestellen des ÖPNV? Auf der Mikroskala verwenden wir von verschiedenen APIs erhaltene Fahrtzeitdaten, um die Fahrtentfernungen und -geschwindigkeiten für einzelne Agenten zu validieren.
Wir prüfen Benchmarks sorgfältig, damit wir unsere Modelle realistischer gestalten können, indem wir die Parameter von MATSim optimieren oder einige physikalische Aspekte unserer Simulationen ändern (z. B. die Geschwindigkeiten des freien Verkehrs im Netzwerk). Zu Beginn eines Projekts können fehlgeschlagene Benchmarks auch dazu beitragen, Probleme im Netzwerk oder bei Bevölkerungseingaben schnell zu diagnostizieren.
Kürzlich haben wir Elara um neue Tools erweitert, die bewerten, wie genau eine bestimmte Simulationskonfiguration ihre eigenen Eingaben reproduzieren kann. Wenn Agenten im Modell beispielsweise direkt aus Reisetagebuchdaten synthetisiert werden, könnte ein Maß für die Leistung eines Modells darin bestehen, ob die Nutzenfunktion von MATSim die Agenten korrekt dazu bringt, für eine bestimmte Reise die gleiche Reiseart zu wählen, die in der Umfrage angegeben wurde .
Die manuelle Prüfung der Ergebnisse ist wichtig, erfordert jedoch immer noch zeitintensive menschliche Intelligenz, was möglicherweise nicht möglich ist, wenn Sie eine große Anzahl von Simulationen vergleichen müssen. Um eine Auswertung auf einen Blick zu ermöglichen, wird jeder Benchmark in Elara auch anhand einer Verlustfunktionsbewertung (normalerweise mittlerer absoluter prozentualer Fehler) bewertet. Benutzer können jeden Benchmark gewichten, um seine Bedeutung für die Kalibrierung der Simulation widerzuspiegeln, die je nach Projekt variieren kann. In naher Zukunft werden wir ein Autokalibrierungs-Framework implementieren, das Elaras Benchmark-Scoring nutzt, um Simulationsparameterräume zu erkunden und Modelle schnell zu kalibrieren.
Tauchen Sie tiefer in die Auswirkungen ein
Viele der Tools von Elara unterstützen zusätzliche Optionen, mit denen Sie einen tieferen Einblick in die Ergebnisse Ihrer MATSim-Simulation erhalten und so aus dem Modell eine umfassendere und überzeugendere Geschichte erstellen können.
Ein Hauptmerkmal von Elara ist die Möglichkeit, Ergebnisse nach beliebigen Agentenattributen aufzuschlüsseln. Dies ist uns im Labor besonders wichtig, wo sich viele unserer Analysen auf die Verteilungseffekte verschiedener Verkehrssysteme und -politiken konzentrieren.
Beispielsweise könnte sich eine Änderung der Tarife und Ermäßigungen im öffentlichen Nahverkehr unterschiedlich auf verschiedene Einkommensgruppen auswirken. Um zu verstehen, wie sich diese Richtlinie auf Modeshares für verschiedene Agententypen auswirkt, müssen Sie lediglich den trip_modesHandler mit den entsprechenden Optionen konfigurieren.
Die Ergebnisse für die meisten Handler können auch anhand der in Ihrer Simulation konfigurierten Modi disaggregiert werden. Dies ist in einer Vielzahl von Fällen nützlich, beispielsweise beim Zählen der Ein- und Ausstiege an einem gemeinsamen Bahnhof durch regionale und örtliche Busse oder beim Fokussieren darauf, wie viele Agenten eine Verbindung in verschiedenen Verkehrsträgern befördert.
Elara installieren und ausführen
Elara ist in Python 3.7 geschrieben und kann mithilfe von einfach aus dem Quellcode unseres GitHub-Repositoryspip installiert werden .
Elara wird mit einer Befehlszeilenschnittstelle ausgeliefert. Der übliche Weg, einen Elara-Lauf aufzurufen, ist über eine Terminalsitzung mit dem runBefehl unter Verwendung einer relativ einfachen Konfigurationsdatei, die in TOML geschrieben ist :
elara run elara_config.toml
Innerhalb der Konfiguration können Sie Elara auffordern, eine beliebige Anzahl verfügbarer Tools (oder „Handler“) auszuführen, die jeweils zu einer oder mehreren Ausgaben führen.
Das allgemeine Format zum Anfordern eines Handlers ist handler_name = {options}.
Wenn Sie keine zusätzlichen Optionen einschließen möchten, können Sie auch verwenden handler_name = [“all”].
Die verfügbaren Optionen variieren je nach Tool und in den meisten Fällen ignoriert Elara problemlos alle übergebenen ungültigen Optionen. Zwei der oben erwähnten gängigen Optionen sind die Aufschlüsselung der Ergebnisse für verschiedene Arten von Agenten oder Modi.
Die folgende Konfiguration würde Elara beispielsweise anweisen, separate Modalzählungen und -anteile für verschiedene Einkommens- und Altersgruppen sowie CSV- und GeoJSON-Ausgaben mit nach Bus und Auto getrennten Volumina im Straßennetz zu erstellen. Beachten Sie, dass die Benchmarking-Tools ein spezielles Pfadargument benötigen, um Elara mitzuteilen, wo sich der Vergleichsdatensatz befindet.
[plan_handlers]
trip_modes = {groupby_person_attributes=["income", "age"]}
[event_handlers]
link_vehicle_speeds = {modes=["bus", "car"]}
[benchmarks]
link_counter_comparison = {modes=["car"], benchmark_data_path=/path/to/your_data.json"}
Randbemerkung zur DAG
Ein nettes Feature von Elara ist, dass es mithilfe eines gerichteten azyklischen Graphen (oder DAG) immer versucht herauszufinden, was in welcher Reihenfolge getan werden muss .
Jeder Handler in Elara ist mit einem spezifischen Satz von Anforderungen codiert. Wenn ein Lauf initiiert wird, erstellt Elara aus der Konfiguration ein Diagramm und stellt sicher, dass der Lauf in einer Reihenfolge fortgesetzt wird, die nicht zu einem Fehler führt, weil zuerst ein anderes Tool hätte ausgeführt werden sollen.
Weniger abstrakt ausgedrückt: Um die zurückgelegten Fahrzeugkilometer zu berechnen, vktmuss der Postprozessor die Volumina auf jeder Verbindung kennen. Anstatt diese Aufgabe ein zweites Mal auszuführen, stellt der DAG sicher, dass der link_vehicle_countsHandler mit den richtigen Optionen ausgeführt wird, auch wenn der Benutzer dies nicht angefordert hat.
Dies bedeutet, dass bei Benutzern weniger Fehler aufgrund von Fehlkonfigurationen auftreten und dass Ausfälle meist zu Beginn eines Laufs auftreten. Darüber hinaus werden redundante Berechnungen reduziert, sodass Elara bei vielen sich überschneidenden Anforderungen effizienter arbeitet.
Beitrag zu Elara
Wir glauben, dass mehr Transparenz und Großzügigkeit in den Planungsdisziplinen der Schlüssel zu einer nachhaltigeren Zukunft ist. Das City Modeling Lab ist stolz darauf, Elara der MATSim-Community weltweit zugänglich zu machen.
Wenn Sie ein MATSim-Modellierer sind, hoffen wir, dass Sie versuchen, Elara in Ihr nächstes Projekt zu integrieren, um zu sehen, wie es Ihren Arbeitsablauf verbessern kann, und um uns Feedback zu geben, wie wir die Software verbessern können.
Wir freuen uns auch über externe Beiträge zum Projekt. Wenn Sie sich engagieren möchten, können Sie am besten über unsere GitHub-Problemseite mit uns interagieren . Sie können uns auf Fehler aufmerksam machen, neue Funktionen anfordern und Fragen stellen. Sie können Code auch direkt über einen Pull-Request beisteuern.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































