2017-11-09 6 views
0

Ich versuche, ein Standard-SIR-Agent-basiertes Modell auszuführen, bei dem Agenten von "Anfällig" zu "Infiziert" und von "Infiziert" zu "Wiederhergestellt" wechseln. Ich bin jetzt daran interessiert, das momentane Vorkommen zu berechnen, d. H. Die Anzahl von Agenten, die zu einer gegebenen Zeit t von dem Zustand "Anfällig" in den Zustand "Infiziert" übergehen.Zählt zu einem bestimmten Zeitschritt in AnyLogic

Zum Beispiel: Am Tag 1 (Modell Zeit), 2 Übergangsmittel von 'Susceptible' to 'Infected' Am Tag 2 (Modell Zeit), 5 Übergangsmittel von 'Susceptible' to 'Infected' Am Tag 3 (Modell Zeit), 7 Agenten Übergang von "Anfällig" zu "Infiziert" . . .

Ich bin in der Lage, die Gesamtzahl der "infizierten" Agenten zu erhalten, aber ich bin daran interessiert, diesen Wert jedes Zeitschritts zu kennen. Ich möchte eine Funktion schreiben, die kumulativ die Anzahl der Neuinfektionen für jeden Zeitschritt addiert.

Alle Ideen, wie man dies in AnyLogic tun könnte, wären sehr hilfreich. Vielen Dank.

Antwort

0

Hier ein Screenshot, müssen Sie „Andere“ für die Taste zur Auswahl manuell die Dimension „Date()“ geben: enter image description here

+0

Vielen Dank! – crabcanon

0

Ich schlage vor, Sie erstellen eine Sammlung auf Main des Typs, wo der Schlüssel der Tag ist und der Wert ist die Anzahl der Infektionen. Dann erstellen Sie ein wiederkehrendes Ereignis im Agenten mit dem Namen e_Counting, beginnend mit dem Modellstart und wiederkehrend alle 24 Stunden. In der Aktion schreiben:

main.col_Counter.add(date(), v_countsToday);

v_countsToday=0;

Auch die v_countsToday als Integer-Variable in dem Agenten erstellen. Fügen Sie +1 hinzu, wenn eine Infektion auftritt.

Es gibt viele andere Möglichkeiten, aber das wird funktionieren.

prost

+0

Dank für Ihren Kommentar danken. Es scheint, dass ich den richtigen Sammlertyp nicht auswählen kann. Die einzigen Erfassungstypen, die die Eingabe eines Schlüssels und Werts ermöglichen, sind TreeMap und LinkedHashMap. Keiner von ihnen scheint das Argument (Datum, Doppel) zu akzeptieren. Können Sie mir bitte sagen, wie ich das machen könnte? Vielen Dank. – crabcanon

+0

Verwenden Sie eine LinkedHashMap. Legen Sie den Schlüssel und den Werttyp in den Eigenschaften fest. Und ändern Sie den obigen Code zu "main.col_Counter.put (date(), v_countsToday);". – Benjamin

Verwandte Themen