Kontakt
About

Das Beer Game verstehen

Wie Systemdenken genutzt werden kann, um Spielergebnisse zu verbessern
  • Oliver Grasl
    Oliver Grasl
    Friday, January 16, 2015
Eine Untersuchung der Auswirkungen verschiedener Spielstrategien

Verwenden von Systems Thinking zur Verbesserung der Spielergebnisse

In meinem Spielen Sie das Beer Game habe ich eine Online-Einzelspieler-Version des Beer Games vorgestellt, mit der Sie spielen können. Um eine verbesserte Spielstrategie zu finden, möchte ich die Dynamik des Spiels mit unserem Business-Prototyping-Ansatz analysieren.
Beim Anschauliches Beispiel zur Business Prototyping Methodik geht es darum, mithilfe von Modellen und Simulationen neue Geschäftsideen und -strategien zu erforschen und die Komplexität der Umsetzung im Unternehmen und im Markt zu beherrschen.
In diesem konkreten Fall untersuchen wir das dynamische Verhalten einer Lieferkette, um eine bessere Strategie für das Lieferkettenmanagement zu finden. Da wir das dynamische Verhalten auf strategischer Ebene untersuchen, sind Kausalschleifendiagramme ein gutes Hilfsmittel (Sie könnenKausalschleifendiagrammemehr über diese Diagramme lesen, wenn sie für Sie neu sind).

Einführung in das Beer Game

Das Beer Game wurde ursprünglich in den 1950er-Jahren am MIT entwickelt, um zu veranschaulichen, wie schwierig es ist, dynamische Systeme zu managen - in diesem Fall ist das dynamische System eine Lieferkette, die Bier von einer Brauerei an den Endverbraucher liefert.
Sie können den Code für die Simulationsmodelle zusammen mit einer Jupyter-Notebook-Version dieses Blogposts auf unserem GitHub Repository finden.
Was das Spiel so faszinierend macht, ist, dass die Struktur der Lieferkette und die Spielregeln einfach sind, das resultierende Verhalten jedoch ziemlich komplex ist. Das Beer Game ist gut dokumentiert: Meine Lieblingsbeschreibung des Spiels finden Sie in Peter Senges Weltbestseller "Die fünfte Disziplin", John Stermans Business Dynamics analysiert das Spiel mithilfe von systemdynamischen Bestands- und Flussmodellen, eine gute Online-Ressource für das Spiel ist beergame.org.
Um Ihnen den Zugriff auf das Spiel zu erleichtern, während Sie diesen Beitrag lesen, habe ich das Einführungsvideo zum Spiel mit einem Link zum Spielen unten eingefügt:
P.S: Sie können das Beer Game auf beergame.transentis.com spielen.

Die Herausforderung: Das Management der Lieferkette

Um die Herausforderung des Managements einer Lieferkette zu verstehen, lassen Sie uns einen genaueren Blick auf ihre Struktur werfen - die Lieferkette führt von der Brauerei über einen Verteiler und Großhändler zum Wiederverkäufer, der das Bier an seine Kunden, die Endverbraucher, verkauft.
Ziel des Spiels ist es, dass die Nachfrage der Verbraucher nach Bier direkt oder zumindest mit möglichst geringer Verzögerung befriedigt werden kann, wobei das Inventar jedes Spielers so klein wie möglich gehalten wird.
Die folgende Skizze veranschaulicht die Lieferkette und den Informationsfluss entlang dieser Kette.
Training Artificial Intelligence to Play the Beer Distribution Game Graph 1 DE
Zu Beginn liegt die Kundennachfrage nach Bier stabil bei 100 Einheiten pro Woche und die gesamte Lieferkette befindet sich in einem stabilen Zustand. Jedes Mitglied der Lieferkette hat ein Inventar von 400 Einheiten.
Die Regeln des Spiels sind einfach - in jeder Runde führt jeder Spieler die folgenden vier Schritte aus:
  • Check deliveries (Lieferungen prüfen). Er prüft, wie viele Biereinheiten von seinem Lieferanten in der Lieferkette an ihn geliefert werden.
  • Check incoming orders (Bestelleingang prüfen). Er prüft, wie viele Biereinheiten sein Kunde in der Lieferkette bestellt hat.
  • Deliver beer (Bier liefern). Er liefert so viel Bier, wie er kann, um die Nachfrage der Kunden zu befriedigen (Hinweis: In unserer Implementierung des obigen Spiels wird dieser Schritt automatisch für Sie ausgeführt).
  • Place outgoing order (Laufende Bestellung aufgeben). Der schwierige Schritt besteht darin, zu entscheiden, wie viele Biereinheiten der Spieler von seinem Lieferanten benötigt, um sein Inventar aufrechtzuerhalten und sicherzustellen, dass er genug Bier hat, um zukünftige Anforderungen zu erfüllen.
Hinweis: In der Einzelspielerversion des Spiels, die ich oben eingebunden habe, spielen Sie die Rolle des Einzelhändlers. Die anderen Rollen werden vom Computer gespielt, d. h. die Bestellentscheidung für diese Spieler wird vom Computer gemäß einer vordefinierten Bestellpolitik getroffen (die Bestellpolitik, der der Computer folgt, ist im Wesentlichen die, die in diesem Blogbeitrag entwickelt wurde).

Einige Fallstricke, die Sie beachten sollten

Es gibt drei Fallstricke beim Beer Game derer sich die Spieler bewusst sein müssen:
  • Verzögerungen. Aufgrund der Beschaffenheit von Lieferketten kann es vorkommen, dass die Nachfrage der Spieler nach Bier nicht sofort erfüllt wird - ihr Lieferant hat möglicherweise auch nicht genügend Inventar und muss dann seine eigene Bestellung in der Lieferkette weitergeben. Es gibt eine Verzögerung von mindestens einer Woche in jede Richtung, d. h. eine geänderte Bestellung wird frühestens nach zwei Wochen ausgeliefert, auch wenn das Inventar des Lieferanten ausreichend ist.
  • Inventarkosten. Wenn Sie zu viele Biereinheiten bestellen, steigen Ihre Inventarkosten, da Sie mehr Mitarbeiter für die Handhabung des Biers und mehr Lagerplatz benötigen. Jede Biereinheit hat Inventarkosten von 0,5 $ pro Woche. Da Sie Ihren Lagerplatz nicht auf Null reduzieren können, betragen die minimalen Inventarkosten immer 200 $, selbst wenn Ihr Inventar auf Null sinkt. Das Zielniveau der Biereinheiten in Ihrem Inventar ist also 400 Einheiten, Sie sollten versuchen, bis zum Ende des Spiels 250 Einheiten zu erreichen.
  • Rückstandskosten. Wenn Sie zu wenige Biereinheiten bestellen, sind Sie möglicherweise nicht in der Lage, die Nachfrage Ihrer Kunden nach Bier zu befriedigen. Rückstände werden ebenfalls bestraft, jede Biereinheit im Rückstand kostet 1 $ pro Woche. Daher ist das Ziel, der Rückstand bei 0 zu halten.

Wie die Spielleistung bewertet wird

Am Ende des Spiels erhält jeder Spieler eine persönliche Leistungsbewertung. Angesichts der Spielregeln und der oben erwähnten Fallstricke gibt es zwei relevante Leistungsmessungen:
  • Individuelle Lieferkettenkosten. Dies sind die kumulierten Kosten des Spielerteils der Lieferkette, d. h. die Summe seiner Inventar- und Rückstandskosten über die Zeit. Das Ziel der individuellen Lieferkettenkosten ist es, die kumulierten Kosten während des gesamten Spiels unter 8.300 $ zu halten.
  • Gesamtkosten der Lieferkette. Dies sind die Gesamtkosten der Lieferkette. Es ist wichtig, dies im Auge zu behalten, da der einzelne Spieler seine eigenen Kosten auf Kosten der anderen Spieler in der Lieferkette verbessern könnte - wir werden gleich sehen, wie dies geschieht. Das Ziel für die Gesamtkosten der Lieferkette ist es, die kumulierten Kosten während des gesamten Spiels unter 29.300 $ zu halten.

Dynamik der Lieferkette - Umgang mit der sich ändernden Nachfrage nach Bier

Wie ich bereits erwähnt habe, befindet sich die gesamte Lieferkette zunächst in einem stabilen Zustand und die Nachfrage der Verbraucher nach Bier liegt stabil bei 100 Einheiten pro Woche. In der "realen Welt" ist die Nachfrage natürlich nie konstant, was einer der Gründe ist, warum das Lieferkettenmanagement überhaupt nicht einfach ist.
Was das Beer Game so interessant (und vielleicht auch frustrierend) macht, ist, dass die Nachfrage der Verbraucher nach Bier nicht wild schwankt, im Gegenteil, sie ändert sich eigentlich nur einmal: Die Nachfrage der Verbraucher nach Bier vervierfacht sich in der zweiten Woche von 100 auf 400 Einheiten und bleibt dann für den Rest des Spiels bei 400.
Understanding the Beer Distribution Game Blog Post Graph 2 DE
Dennoch sehen typische Spielergebnisse in etwa so aus, wie in der Grafik unten dargestellt: Obwohl die Verbraucherbestellungen nie über 400 steigen, liegen die Einzelhändlerbestellungen lange Zeit nahe bei 1000. Dies führt zu einem enormen Peitscheneffekt entlang der Lieferkette, der in der Brauerei zu Spitzenbestellungen von weit über 30.000 Einheiten führt.
Understanding the Beer Distribution Game Blog Post Graph 3 DE
Angesichts dieses Bestellverhaltens ist es nicht verwunderlich, dass die Spieler riesige Inventare aufbauen, die mehr als 2 Jahre brauchen, um aufgebraucht zu werden, da die Verbraucherbestellungen konstant bei 400 Einheiten pro Woche liegen.
Understanding the Beer Distribution Game Blog Post Graph 4 DE
Um zu verstehen, warum das Bestellverhalten der meisten Spieler anfangs so ist, müssen wir die Rückkopplungsschleife verstehen, die die Bestellentscheidungen der Spieler steuert.

Die Rückkopplungsschleife, die die Bestellentscheidung des Spielers steuert

Das Ziel jedes Spielers ist es, die eingehenden Bestellungen zu erfüllen und sein Inventar auf einem Niveau nahe dem Zielinventar auszugleichen. Angesichts der während des Spiels verfügbaren Informationen sollte also das Verhalten jedes Spielers durch die unten dargestellte Rückkopplungsschleife ausgeglichen werden:
  • Am Ende jeder Spielrunde stellt der Spieler sein aktuelles Inventar fest, indem er die eingehenden Biereinheiten addiert und die ausgehenden Biereinheiten von Inventar subtrahiert.
  • Er prüft dann die aktuelle Nachfrage der Kunden nach Bier, sein Zielinventar und sein aktuelles Inventar und entscheidet, wie viele Bestellungen er aufgeben muss.
  • Der Spielerlieferant wird (vermutlich) etwas Ähnliches tun und schließlich das Bier liefern, das der Spieler bestellt hat.
Understanding the Beer Distribution Game Blog Post Graph 5 DE
Die Rückkopplungsschleife ist eigentlich sehr einfach, was geht also schief?
Das Problem ist zunächst einmal psychologische: Ja, die Rückkopplungsschleife ist einfach, aber ein wichtiger Teil dieser Schleife ist für den Spieler unsichtbar und damit außer seiner Kontrolle. Ich habe dies unten illustriert.
Understanding the Beer Distribution Game Blog Post Graph 6 DE
Was also wirklich passiert, ist Folgendes:
  • Der Spieler gibt seine Bestellung auf und wartet, bis das Bier kommt.
  • Und wartet.
  • Es wird kein Bier geliefert.
  • Die Anzahl der Einheiten im Rückstand beginnt zu steigen. Damit steigen auch die Kosten und damit die Unruhe des Spielers.
  • Vielleicht ist die Bestellung nie angekommen? Es ist besser, beim nächsten Mal mehr zu bestellen...
Obwohl also die Einheiten, die im Rückstand sind, bereits bestellt wurden, fügen viele Spieler die Einheiten, die im Rückstand sind, sicherheitshalber zu jeder neuen Bestellung hinzu, wodurch die unten dargestellte positive Rückkopplungsschleife entsteht. Die Bestellungen nehmen exponentiell zu, bis schließlich eine riesige Menge an Bier geliefert wird.
Ausgehende Bestellungen = Eingehende Bestellungen + Zielinventar - Inventar + Rückstand
Understanding the Beer Distribution Game Blog Post Graph 7 DE
Der erste Schritt zur Verbesserung der Spielergebnisse besteht also darin, Rückstände bei Bestellentscheidungen zu ignorieren.

Verbesserungen von der Spielerergebnisse

Rückstände ignorieren

Wie sollte die Bestellpolitik angesichts der obigen ausgleichenden Rückkopplungsschleife aussehen?
Der einfachste Ansatz besteht darin, wöchentlich sowohl die eingehenden Bestellungen als auch das Inventar zu überprüfen und dann so viel zu bestellen, dass das gewünschte Inventar berücksichtigt wird:
Ausgehende Bestellungen = Eingehende Bestellungen + Zielinventar - Inventar
Sie können diese Strategie im obigen Spiel selbst testen!
Obwohl dies zu einer drastischen Verbesserung führt, sind die Ergebnisse immer noch nicht wirklich zufriedenstellend, wie Sie in der Grafik unten sehen können, die das Bestellverhalten und das daraus resultierende Inventar zeigt.
Understanding the Beer Distribution Game Blog Post Graph 8 DE
Das Inventar steigt immer noch auf einen beträchtlichen Betrag an - der Grund dafür ist, dass die oben definierte Politik immer noch zu Überbestellungen führt, weil die Politik die bereits aufgegebenen Bestellungen "vergisst".
Understanding the Beer Distribution Game Blog Post Graph 9 DE
Schauen wir uns also an, was passiert, wenn die Bestellpolitik offene Bestellungen in Betracht zieht.

Offene Bestellungen merken: einschließlich der Versorgungsleitung

Unser nächster Schritt zur Verbesserung unserer Bestellpolitik besteht darin, uns zu merken, wie viele Artikel bereits bestellt wurden, und dies bei unserer Bestellentscheidung zu berücksichtigen - um Verwirrung zu vermeiden, werde ich diese Menge als Versorgungsleitung bezeichnen.
Training Artificial Intelligence to Play the Beer Distribution Game Graph 1 DE
Wenn wir die Versorgungsleitung in unsere Rückkopplungsschleife einbeziehen, erhalten wir das folgende Diagramm:
Understanding the Beer Distribution Game Blog Post Graph 10 DE
Wir verfolgen nun die ausgehenden Bestellungen in der Versorgungsleitung - jedes Mal, wenn eine Bestellung ausgeht, steigt auch die Versorgungsleitung; sobald neue Biereinheiten eintreffen, sinkt die Versorgungsleitung. Wenn wir entscheiden, wie viele Artikel wir bestellen sollen, beziehen wir auch die Versorgungsleitung in unsere Bestellentscheidung mit ein. Dadurch wird sichergestellt, dass wir einen Artikel nie mehr als einmal bestellen.
Wie viele Artikel sollten sich zu jeder Zeit in der Versorgungsleitung befinden?
Um dies abzuschätzen, führen wir ein kleines Gedankenexperiment durch und nehmen an, dass unser Inventar gleich Null ist und unsere Kunden jede Woche genau 100 Einheiten bestellen und dass wir uns nicht um Rückstände kümmern. Damit sich das System in einem stabilen Zustand befindet, müssen wir jede Woche 100 Einheiten liefern lassen (die wir dann direkt an unseren Kunden, den Verbraucher, weitergeben).
Da es zwei Wochen dauert, bis die bestellten Artikel geliefert werden, erhalten die Kunden, die in der ersten Woche bestellen, überhaupt kein Bier (sorry!), aber wir bestellen 100 Einheiten. Die Kunden in der zweiten Woche bekommen auch kein Bier (sorry!), aber wir bestellen wieder 100 Einheiten. Jetzt befinden sich 200 Einheiten in unserer Versorgungsleitung.
In der dritten Woche trifft schließlich unsere erste Bestellung ein. Wir geben diese Lieferung an die Verbraucher weiter und geben eine weitere Bestellung von 100 Einheiten auf. Von nun an können wir die Nachfrage der Verbraucher immer befriedigen. Unser Inventar ist immer gleich Null, und wir haben permanent 200 Einheiten in unserer Lieferkette.
Was würde sich ändern, wenn die Verbraucher nicht immer 100 Einheiten, sondern 200 Einheiten bestellen würden? Nun, in diesem Fall würde unsere Versorgungsleitung bei 400 Einheiten liegen (2 Wochen Zeit 200 Einheiten).
Daraus können wir ableiten, dass unsere offenen Bestellungen immer gleich sein sollten:
Zielversorgungsleitung = Lieferverzögerung * Eingehende Bestellungen
Hinweis: Diese Formel gilt natürlich nur, wenn die Lieferverzögerung stabil ist und die bestellten Artikel auch - um unsere Schätzung für die Zielversorgungsleitung zu verbessern, sollten wir die Lieferverzögerung durch die durchschnittliche Lieferverzögerung und die bestellten Artikel durch unsere Erwartung, wie viele Artikel bestellt werden, ersetzen. Um unsere Analyse einfach zu halten, werde ich dies jedoch vorerst nicht einbeziehen, aber wir sollten uns das für weitere Untersuchungen merken.
Ich habe unten eine aktualisierte Version des Kausalschleifendiagramms eingefügt.
Understanding the Beer Distribution Game Blog Post Graph 11 DE
Mit unserem neuen Kausalschleifendiagramm können wir auch eine neue Bestellpolitik formulieren:
Bestellungen = Eingehende Bestellungen + Zielinventar - Inventar + Zielversorgungsleitung - Versorgungsleitung
Auch diese Strategie können Sie im obigen Spiel selbst testen. Es erfordert ein wenig Aufwand, die Versorgungsleitung zu verfolgen ...
Die Ergebnisse sehen jetzt viel besser aus - die Bestellspitzen sind kleiner und weniger anhaltend. Das Zielinventar wird nach 17 Wochen erreicht.
Understanding the Beer Distribution Game Blog Post Graph 12 DE
Die Kostenstruktur sieht jetzt auch viel besser aus, wir schaffen es gerade noch, innerhalb des Kostenziels zu bleiben:
Understanding the Beer Distribution Game Blog Post Graph 13 DE
Unser Überschuss sieht auch gut aus, wir erreichen leicht das Überschussziel:
Understanding the Beer Distribution Game Blog Post Graph 14 DE

Vermeiden des Peitscheneffekts

Leider führt unsere neue Bestellpolitik immer noch zu einem enormen Peitscheneffekt - das liegt daran, dass jeder Spieler in der Lieferkette die gleiche Bestellpolitik anwendet und versucht, sicherzustellen, dass das Niveau des Zielinventars erreicht und die Bestellpipeline gefüllt wird. Weil der Verbraucher eine größere Bestellung aufgibt, muss der Einzelhändler eine noch größere Bestellung aufgeben. Und der Großhändler gibt dann eine noch größere Bestellung auf ... Sie können diesen Effekt schön in der Grafik unten sehen.
Understanding the Beer Distribution Game Graph 15 DE
Durch diese Auftragsspitzen explodieren auch die Gesamtkosten der Lieferkette und liegen noch weit über dem Kostenziel.
Understanding the Beer Distribution Game Graph 16 DE
Wie kann der Peitscheneffekt vermieden werden?
Der Schlüssel zur Vermeidung des Peitscheneffekts liegt darin, Bestellungen zu vermeiden, die sich deutlich von den Bestellungen der letzten Woche unterschieden - anstatt also zu versuchen, das aktuelle Inventar so schnell wie möglich an das gewünschte Inventar anzupassen, tun wir dies sanft über einen längeren Zeitraum, wie in der folgenden Bestellpolitik:
Bestellungen = Eingehende Bestellungen + (Zielinventar - Inventar + Zielversorgungsleitung - Versorgungsleitung)/Inventaranpassungszeit
Ich habe das Kausalschleifendiagramm aktualisiert, um die Inventaranpassungszeit einzubeziehen, die definiert, wie viel Zeit wir für die Anpassung des Inventars an das gewünschte Niveau einräumen:
Understanding the Beer Distribution Game Graph 17 DE
Das folgende Diagramm zeigt, was passiert, wenn wir die Inventaranpassungszeit auf 8 Wochen setzen.
Understanding the Beer Distribution Game Graph 18 DE
Mit diesen Einstellungen erreichen wir alle unsere Leistungsziele.
Understading the Beer Distribution Game Graph 19 DE
Understanding the Beer Distribution Game Graph 20 DE
Auch der Überschuss erreicht das gewünschte Niveau - bei noch mehr Zeit würde sich das Inventar auf das gewünschte Niveau von 400 einstellen.
Understanding the Beer Distribution Game Graph 21 DE
Natürlich gibt es hier einen Kompromiss - weil wir das Inventar langsam anpassen, sind wir öfter nicht auf Lager und damit sinkt unser Dienstleistungsniveau gegenüber unseren Kunden in der Lieferkette. Aber im Beer Game wird dies durch das Leistungsziel aufgewogen, das wir haben, um die Gesamtkosten der Lieferkette niedrig zu halten.
Um diesen Kompromiss zu veranschaulichen, können wir einen Blick darauf werfen, wie der Einzelhändlerüberschuss und die Gesamtkosten der Lieferkette mit der Inventaranpassungszeit variieren.
Das unten stehende Diagramm stellt den Einzelhändlerüberschuss für verschiedene Inventaranpassungszeiten dar. Je kürzer die Inventaranpassungszeit ist, desto schneller steigt der Überschuss wieder über Null und desto schneller erreichen wir das gewünschte Inventar von 400.
Understanding the Beer Distribution Game Graph 22 DE
Auf der anderen Seite zeigt die Grafik unten, wie die Gesamtkosten der Lieferkette mit der Inventaranpassungszeit variieren - der interessante Effekt hier ist, dass eine Inventaranpassungszeit von 16 Wochen anfänglich mit geringeren Gesamtkosten verbunden ist, aber auf lange Sicht die Inventaranpassungszeit von 8 Wochen besser abschneidet. Das liegt daran, dass die Gesamtkosten sowohl Strafen für fehlende Bestände als auch für Überbestände enthalten - wenn die Anpassungszeit zu kurz ist, dann sind einige der Lieferanten überbestückt und somit steigen die Kosten. Wenn die Anpassungszeit zu lang ist, sind schließlich alle Lieferanten nicht mehr auf Lager, was die Gesamtkosten der Lieferkette erhöht.
Understanding the Beer Distribution Game Graph 23 DE
Die obige Bestellpolitik ist die Politik, die wir für die oben vorgestellte Einzelspieler-Version des Spiels implementiert haben.

Die nächsten Schritte: Neugestaltung der gesamten Lieferkette

Dieser Beitrag erklärt die Dynamik hinter dem Beer Game. Er veranschaulicht, wie die Bestellpolitik einzelner Spieler in der Lieferkette anhand von Kausalschleifendiagrammen und einigen Live-Experimenten mit dem Spiel analysiert und verbessert werden kann.
In der Realität wäre es natürlich riskant und teuer, solche Live-Experimente mit Ihrer Lieferkette durchzuführen - deshalb ist es sinnvoll, Simulationen zu erstellen, die Ihnen die Möglichkeit geben, risikolose Experimente durchzuführen.
Ich habe ein solches Simulationsmodell unten eingefügt, um Ihnen die Möglichkeit zu geben, mit den Änderungen der Bestellpolitik, die wir besprochen haben, zu experimentieren:
Unsere Analyse der Lieferkette weist auch auf weiteres Verbesserungspotenzial hin - so wie die Lieferkette im Beer Game strukturiert ist, kommuniziert jeder Spieler Bestellungen nur an seinen unmittelbaren Lieferanten in der Kette, daher dauert es recht lange, auf Änderungen der Kundennachfrage zu reagieren.
Sicherlich könnten wir die Leistung der Lieferkette verbessern, wenn die Nachfrage der Verbraucher nach Bier direkt an alle Spieler in der Kette kommuniziert werden würde?
Es ist überflüssig zu erwähnen, dass dies in der "realen Welt" tatsächlich passiert ist, wir müssen uns nur die Just-in-time-Produktion und die schlanke Fertigung ansehen (und vergessen wir nicht, dass das Beer Game in den 1950er-Jahren entwickelt wurde, bevor diese Revolutionen stattfanden).
Obwohl diese Ideen sehr spannend sind, habe ich das Gefühl, dass wir für den Moment genug erreicht haben und werde daher eine detaillierte Untersuchung dieser Ideen einem zukünftigen Beitrag überlassen.
Das Beer Game mit künstlicher Intelligenz spielenführt zunächst eine agentenbasierte Simulation des Beer Games ein und verwendet dann Reinforcement Learning, um die Agenten zum Spielen des Spiels zu trainieren.
Eine Jupyter-Notebook-Version dieses Blogbeitrags finden Sie in unserem GitHub Repository.