2017-02-19 1 views
1

Ich habe 2 Agenten, Hub und einzelne.Netlogo: Auswahl eines Agenten basierend auf mehreren Bedingungen

Personen haben ihre eigene Variable Wert.

Ich möchte eine Methode schreiben, die es Hub ermöglicht, die Person mit dem höchsten Wert Wert auszuwählen und hat keine Verbindung mit dem Hub hergestellt, um eine Verbindung mit ihm herzustellen.

Bisher verwende ich max-one-of, was mir den höchsten Wert -d Individual die erste Runde gibt, aber auf der zweiten Runde wird immer noch die gleiche Person ausgewählt, obwohl ein Link bereits mit dem Hub etabliert wurde .

Ich möchte alle fragen, wie bekomme ich die Person, die noch nicht mit dem Hub verbunden wurde, mit dem höchsten Wert?

Vielen Dank!

Antwort

1

Sie benötigen Personen mit with und link-neighbor? filtern:

breed [ hubs hub ] 
breed [ individuals individual ] 
individuals-own [ value ] 

to setup 
    clear-all 
    create-hubs 1 
    create-individuals 10 [ 
    set value random 100 
    forward 5 
    ] 
    reset-ticks 
end 

to go 
    ask hubs [ 
    let candidates individuals with [ not link-neighbor? myself ] 
    if any? candidates [ 
     create-link-with max-one-of candidates [ value ] 
    ] 
    ] 
    tick 
end 
+0

Danke, es funktioniert! Lassen Sie mich eine andere Frage stellen: Jeder dieser Links hat eine Variable namens ** Stärke **, wie kann ich auf einen bestimmten Link zugreifen, basierend auf den einzelnen ich identifiziert, um seine Stärke zu erhöhen? Vielen Dank. –

+0

Ich denke, Sie sollten besser eine separate Frage dafür öffnen. Sie sollten auch versuchen, sich mit allen Links primitiv (http://ccl.northwestern.edu/netlogo/docs/dictionary.html#linkgroup) in NetLogo vertraut zu machen. Sehr oft ist das Arbeiten mit Links nur eine Frage des Findens des richtigen Primitiven, um das zu tun, was Sie tun möchten. –

Verwandte Themen