2017-02-04 2 views
0

Meine Quelle hat den folgenden Code im Feld "On at exit": TRUCK.ID_number = Parameter; Parameter = Parameter + 1;Anylogic weist allen Entitäten den Wert zu, anstatt nur einer.

Dann wird jeder LKW erhält eine ID: 1, 2, 3, ...

Das Problem ist, dass alle Lkw zur gleichen Zeit im Umlauf sind und es sieht aus wie jedes Mal ein neuer LKW erzeugt wird und der Code läuft es setzt die ID für alle LKWs zurück.

Zum Beispiel: Wenn LKW 4 (ID = 4) an der Quelle erstellt wird, erhalten alle anderen LKW ID 4, daher kann ich nicht die korrekte ID jedes LKWs erkennen.

Was mache ich falsch?

+0

Wo Sie Ihre 'parameter' Feld halten und welche Art ist es? Wenn es sich um eine Ganzzahl und nicht um eine Ganzzahl handelt, werden die von Ihnen erwähnten Symptome angezeigt, weil die ID-Nummer dann eine Objektreferenz ist. Wenn so etwas der Fall ist, kann ich mehr in einer Antwort erklären ... –

+0

Parameter wird im Hauptfenster gehalten, geben Sie "int" ein. Ich bin wirklich hier verloren. Es sollte etwas sehr einfaches sein ... Record IDs und andere Eigenschaften der einzelnen Entität während des Prozesses sammeln Sie dann die Informationen am Ende (sinken) – Leo

Antwort

1

ein paar Dinge. Zuerst müssen Sie das Schlüsselwort agent in der OnExit-Code-Box verwenden. Also in Ihrem Fall, agent.ID_number=parameter. Bitte lesen Sie sich diese spezifischen Schlüsselwörter durch, die überall in AnyLogic-Code-Boxen auftauchen. Ich nenne es die „magische Glühbirne“, auch zu diesem Thema meines Blog sehen:

The magic lightbulb

Zweitens neu automatisch erstellt Agenten einen eindeutigen Index (wenn sie zur selben Population gehören). Sie können darauf zugreifen, indem Sie die Methode getIndex() in Ihrem LKW-Agenten verwenden.

+0

Vielen Dank! Aber ich denke immer noch, dass ich hier etwas falsch mache. Wenn ich den Code hinzufügen, den Sie sagten, erhalte ich Fehlermeldungen. agent.ID_number = Parameter ===> Mittel kann nicht auf eine variable Agent.ID_number = Parameter aufgelöst werden ===> ID_NUMBER nicht Resolver oder ein Feld sein kann nicht Entity.ID_number = Parameter ===> Entity kann nicht in eine Variable aufgelöst werden entity.ID_number = Parameter ===> ID_number kann kein Resolver sein oder ist kein Feld – Leo

+0

. Sie müssen den Kleinbuchstaben "agent" verwenden, nicht "Agent". Sie müssen diese Schlüsselwörter und die Java-Programmierung im Allgemeinen lesen. Es ist sehr Groß-und Kleinschreibung. Stellen Sie außerdem sicher, dass Sie es in ein Code-Feld eingegeben haben, das tatsächlich das Schlüsselwort "agent" unterstützt (lesen Sie dazu mein Blog). hoffe, das hilft – Benjamin

-1

Die Antwort lautet: Verwenden entity.ID_number = Parameter

+0

Leo, es ist "Entität" in AnyLogic 6 (und die veraltete Enterprise-Bibliothek in AnyLogic 7). Es ist jedoch "Agent" in AnyLogic 7. Bitte geben Sie an, welche Version Sie verwenden, wenn Sie ältere Versionen einer Software verwenden. Prost – Benjamin

Verwandte Themen