2016-04-24 11 views
0

Kann jemand mir helfen ?! Ich benutze Anylogic. Es gibt eine Population (= Bestand), die in 10 Differenzgruppen (abhängig vom Alter) unterteilt ist. Ich möchte das für meine Struktur verwenden. Ich habe bereits die Excel-Tabelle in meiner Struktur, aber ich weiß nicht, wie ich sie nutzen kann. Oder ist es besser, wenn ich die "Tablefuntion" benutze ?! Ich konnte dazu kein gutes Tutorial finden. Es gibt nur Beispiele, wo Sie nur eine Nummer haben. Zum Beispiel Lager: Startwert = 10000. Aber ich brauche Lager: Startwert = Group1: 50, Group2: 30, Group3: 20.Anylogic System Modellierung, mit Excel-Tabelle für die Datenbank

Kann jemand mir helfen ?! Vielen Dank!

+0

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

+0

@ Benjamin Ich nehme an, er verwendet Array-Aktien. Siehe meine Antwort. –

+0

BTW, Ihr Fragetitel ist ein wenig irreführend/vage. Vielleicht wäre etwas wie "Initialisieren eines AnyLogic Array-Bestands mit Excel-Daten" besser? –

Antwort

0

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.