Es klingt also so, als ob Sie einen Array-Bestand verwenden, bei dem das Array eine AnyLogic-Dimension mit zehn Werten aufweist.
Wenn Sie die Edit...
Taste für den Anfangswert treffen, werden Sie sehen, dass sie in Java-Notation angegeben werden {v1, v2, ..., v10}
wo v1 der Anfangswert für die erste Dimension Alternative ist, usw. (Verwirrend ist die Java-Array-Notation der ist anders als ein Array Lager.)
Es gibt keine direkte Möglichkeit, diese aus Excel-Daten zu initialisieren. Mit AnyLogic 7.2+ können Sie recht einfach Excel-Werte in eine AnyLogic-Datenbanktabelle laden, aber im Gegensatz zu den grundlegenden AnyLogic-Variablen oder -Parametern gibt es keinen visuellen Assistenten zum Einrichten einer Abfrage zum Auffüllen des Anfangswerts einer Aktie.
Wahrscheinlich ist es das Beste, das Excel-Arbeitsblatt in eine AnyLogic-Datenbanktabelle zu importieren und dann im Startup-Code für Ihr Modell die 10 Werte über Abfragen explizit zu durchlaufen. Sie können die set
-Methode (Funktion) für den Bestand verwenden, um jeden Wert festzulegen (der zwei Argumente hat: den einzustellenden Wert und dann die Nummer der zu setzenden dimensionalen Alternative).
Beispiel
Siehe AnyLogic helfen Database --> Importing database tables
, wie Sie Ihre Excel-Arbeitsblatt als eine Tabelle importieren.
Angenommen, Ihre Tabelle stock_vals
mit Spalten genannt wird stock_name
(die Aktie zu identifizieren, die die Werte für), val1
, val2
usw. (die double
Werte für Dimension Eintrag geben 1, 2, etc.).
Dann lassen Sie uns sagen, dass Ihre Array Lager population
mit einer AgeRange
Dimension mit Alternativen YOUNG
, genannt MIDDLE_AGED
und OLD
(Alternativen 1, 2 und 3 - ich drei Alternativen nur verwendet, um es einfacher zu machen). Dann übernehmen in der Tabelle haben Sie Einträge
"population", 100.0, 200.0, 300.0
Dann können Sie den folgenden Code in Ihrer Startlogik verwenden:
stock.set(selectFrom(stock_vals).where(stock_vals.stock_name.eq("population")).uniqueResult(stock_vals.val1), 1);
stock.set(selectFrom(stock_vals).where(stock_vals.stock_name.eq("population")).uniqueResult(stock_vals.val2), 2);
stock.set(selectFrom(stock_vals).where(stock_vals.stock_name.eq("population")).uniqueResult(stock_vals.val3), 3);
Die AnyLogic Database --> Querying
Hilfe zeigt, wie diese Datenbankauswahl Java-Code funktioniert.
Der obige Code könnte aufgeräumt/eleganter gemacht werden, aber das ist das Wesentliche.
Können Sie bitte klarstellen, wie Ihr aktuelles Modell aussieht und was Sie erreichen möchten?Idealerweise mit einigen Screenshots ... Im Allgemeinen kann ein Systemdynamikbestand nur eine Art von "Fluid" (d. H. Population) aufnehmen, klingt so, als ob er 10 verarbeiten soll? – Benjamin
@ Benjamin Ich nehme an, er verwendet Array-Aktien. Siehe meine Antwort. –
BTW, Ihr Fragetitel ist ein wenig irreführend/vage. Vielleicht wäre etwas wie "Initialisieren eines AnyLogic Array-Bestands mit Excel-Daten" besser? –