Simulation

Erstelle Live Twins deines Modells — verfolge reale Daten über die Zeit, projiziere Szenarien in die Zukunft und lass das Verhalten der Agents den Graph zum Leben erwecken.

Live Twins: Erste Schritte

Einsteiger

Was Live Twins sind, wann du sie einsetzt und wie sie auf deinem bestehenden Modell aufsetzen. Lies das, bevor du einen Twin anlegst oder Daten eingibst.

Twins und Szenarien anlegen

Einsteiger

Lege deinen ersten Twin an, wähle seinen Geltungsbereich und füge dann ein oder mehrere Szenarien hinzu, um Alternativen zu vergleichen.

Agents zu einem Szenario hinzufügen

Einsteiger

Erwecke Knoten zum Leben, indem du sie aus der Simulation-Toolbox auf ein Simulationsdiagramm ziehst. Ein Knoten, viele Agents — das Skalierungsmuster.

Zeitreihen-Daten eingeben

Einsteiger

Nutze die Zeitreihen-Tabelle im Agent-Eigenschaften-Panel, um Werte über Zeitschritte zu erfassen — die Tabellenkalkulation, die in deinem Modell lebt.

Simulationsdiagramme

Einsteiger

Ein Simulationsdiagramm ist eine Canvas, die mit einem Szenario verknüpft ist — Agents, Links, Charts und Steuerelemente aktualisieren sich live, während du durch die Zeit scrollst.

Charts, Slider und Checkboxes hinzufügen

Fortgeschritten

Ziehe Charts, Slider und Checkboxes auf ein Simulationsdiagramm, um es in ein interaktives Dashboard zu verwandeln, mit dem deine Stakeholder spielen können.

Eigenschaftsformeln schreiben

Fortgeschritten

Berechne Eigenschaftswerte automatisch mit kurzen Rhai-Ausdrücken — Tabellenformeln, die deinen Graph kennen.

Act-Methoden schreiben

Experte

Wenn Eigenschaftsformeln nicht ausreichen — schreib ein Rhai-Skript, das einmal pro Agent pro Zeitschritt läuft und mehrere Eigenschaften gemeinsam aktualisiert.

Verbundene Agents in Rhai lesen

Fortgeschritten

Nutze get_connected, sum_prop und count_prop, um Agents den Zustand voneinander über den Graphen lesen zu lassen — so koordinieren sich Metapad-Agents.

Simulationsfehler und -warnungen diagnostizieren

Fortgeschritten

Der Szenario-Diagnose-Tab zeigt dir, ob ein Szenario gesund ist — Zyklen, unaufgelöste Referenzen, Laufzeitwarnungen, Skript-Fehler an einem Ort.

agent.get_propRhaiboth

Liest den Wert einer Eigenschaft auf dem aktuellen Agent. Die einfache Form gibt den Wert am aktuellen Zeitschritt zurück. Mit einem negativen Offset blickst du in die Vergangenheit — nützlich für selbst-referentielle Formeln, in denen der neue Wert vom alten abhängt. Der Rückgabetyp folgt dem Datentyp der Eigenschaft: eine Zahl für Number-Eigenschaften, true/false für Boolean, ein String für alles andere.

agent.set_propRhaiact_method

Schreibt einen Wert in eine Eigenschaft des Agents am aktuellen Zeitschritt. Nur innerhalb einer Act-Methode verfügbar — Eigenschaftsformeln verwenden set_prop nicht, sie geben ihr Ergebnis stattdessen zurück. set_prop kann Werte überschreiben, die Eigenschaftsformeln gerade für denselben Zeitschritt berechnet haben — nutze es, wenn Verhalten mehrere Eigenschaften betrifft oder einer Zustandsmaschine ähnelt.

agent.has_propRhaiboth

Prüft, ob eine Eigenschaft auf dem Agent existiert. Gibt true zurück, wenn die Eigenschaft auf dem Knotentyp des Agents definiert ist, sonst false. Nützlich bei optionalen Eigenschaften oder wenn Formeln sich an unterschiedliche Agent-Typen im selben Modell anpassen sollen.

sum_propRhaiboth

Summiert eine numerische Eigenschaft über ein Array von Agents. Wird häufig zusammen mit get_connected verwendet, um Werte verbundener Agents aufzurollen — Gesamtgehalt, Gesamtbestand, Gesamtumsatz. Nicht-numerische oder fehlende Eigenschaften ergeben 0, sodass eine teilweise gefüllte Menge trotzdem eine saubere Zahl liefert.

count_propRhaiboth

Zählt, wie viele Agents in einem Array einen bestimmten Wert für eine gegebene Eigenschaft haben. Häufiges Muster: verbundene Agents in einem bestimmten Zustand zählen (z. B. aktive Mitglieder eines Teams, abgeschlossene Schritte eines Prozesses). Der Vergleich ist exakt — Zeichenkettenvergleich für Text-Eigenschaften, numerischer Vergleich für Zahlen.

__timestepRhaiboth

Der Index des aktuellen Zeitschritts — 0 am Anfang des Szenarios, 1 am nächsten Schritt und so weiter. Als Scope-Variable in jeder Formel und Act-Methode verfügbar. Nützlich für periodische Logik („einmal pro Jahr"), Startbedingungen oder jede Regel, die von der absoluten Zeit innerhalb des Szenarios abhängt.

__dtRhaiboth

Die Schrittweite des Szenarios — z. B. 1.0, wenn Start- und Endzeit in Monaten sind und dt 1 ist, oder 1/12, wenn Start und Ende in Jahren sind und du monatlich rechnest. Verwende es, um Raten zu skalieren, die pro Einheit echter Zeit ausgedrückt sind — so bleibt eine Formel auch dann korrekt, wenn die Granularität des Szenarios später geändert wird.

get_connectedRhaiboth

Gibt die Agents zurück, die mit dem angegebenen Agent über einen Beziehungstyp verbunden sind. Läuft den Link in beide Richtungen, sodass derselbe Aufruf funktioniert, egal ob dein Agent Quelle oder Ziel der Beziehung ist. Die 3-Argument-Form fügt einen negativen Offset hinzu und liefert die verbundenen Agents so, wie sie einen oder mehrere Zeitschritte zuvor aussahen — nützlich für Liefer-Verzögerungen, Ausbreitungs-Lags und alle zeitversetzten Beobachtungen. Die 3-Argument-Form steht aktuell nur in Eigenschaftsformeln zur Verfügung; in Act-Methoden verwende die 2-Argument-Form und lies die Historie über agent.get_prop auf den einzelnen Mitgliedern.