2017-06-15 1 views
0

Wenn Sie auf einen Agenten in AnyLogic doppelklicken, navigiert er zu den Interna dieses Agenten, so dass Sie seine Zustände, Variablen usw. sehen können. Gibt es eine Möglichkeit, dies programmatisch mit einem Funktionsaufruf ohne eineViewArea zu tun? Meine aktuelle Lösung ist ein ViewArea hinzuzufügen und dann viewArea.navigateTo() verwenden, wenn ich an den Agenten navigieren müssen, aber das scheint übermäßig mehrfach und in mehreren Agententypen zu tun.Navigieren Sie zur Standardansicht des Agenten/Agenten in AnyLogic?

Antwort

1

Jeder Agent verfügt über ein standardmäßiges Sichtbereichsobjekt, sein Name lautet _origin_VA. So können Sie so etwas wie agent._origin_VA.navigateTo(); nennen diesen Bereich nicht sichtbar im grafischen Editor, aber Sie es mit Code-Vervollständigung finden.

2

Es wird verwendet, das zu sein, wenn Sie auf einem Agenten in AnyLogic geklickt doppelt es zu diesem Agenten Interna navigieren würde, so dass Sie ihre Zustände sehen können, Variablen usw.

Was Sie hier bedeuten? Sie können weiterhin auf eingebettete Agenten doppelklicken, um direkt zu ihnen zu navigieren.

Meine aktuelle Lösung ist ein ViewArea hinzufügen und dann verwenden viewArea.navigateTo(), wenn ich an den Agenten navigieren müssen, aber das scheint übermäßig mehrfach und in mehreren Agententypen zu tun.

Das ist wie programmgesteuert. Anstatt sie duplizieren in jedem Agenten müssen Sie es in, verwenden Sie einen übergeordneten Klasse-Agent, der die ViewArea und Navigation hat in so können Sie es über Agents wieder verwenden (zum Beispiel Agenten ViewAreaAgent mit Ihren Agenten AgentA und AgentB erstreckt ViewAreaAgent).

Ich hatte gehofft, Unterklassen zu vermeiden: Es verursachte uns alle Arten von Problemen beim Erstellen von hierarchischen Modellen mit kontinuierlichen 2D-und GIS-Umgebungen. Vielleicht ist das in 8.1 nicht mehr der Fall (vor kurzem aktualisiert von 7.3.7).

Welche Art von Problemen (aus allgemeinem Interesse)? Ich glaube nicht, dass es eine einfache Möglichkeit gibt, die Funktionalität des Ansichtsbereichs ohne Unterklassen zu teilen. (Allgemeiner in Java können Sie Dinge wie Schnittstellen und Objekt Zusammensetzung anstelle von Erbe, das Gleiche zu tun --- siehe Bloch's Effective Java (vor allem Punkt 16 in der 2. Auflage) --- aber ich glaube nicht, dass sinnvoll arbeiten kann Hier werden die Sichtbereiche angezeigt, die sich in dem Agenten befinden müssen, zu dem Sie navigieren.)

+0

leid. Ich habe geklärt. Ich hatte gehofft, Subclassing zu vermeiden: Es verursachte uns alle Probleme beim Erstellen von hierarchischen Modellen, die sowohl kontinuierliche 2D- als auch GIS-Umgebungen enthielten. Vielleicht ist das in 8.1 nicht mehr der Fall (vor kurzem aktualisiert von 7.3.7). –

Verwandte Themen