2011-12-08 22 views
8

Tengo dos agentes. ¿Hay alguna función para la búsqueda:Operaciones de dos agentes de NetLogo

  1. Un agentset de agentes que están presentes en ambos (intersección)
  2. Un agentset de agentes que están presentes en uno y no el otro

estoy encontrando que sea muy difícil implementar esto a mano, especialmente cuando es necesario dentro de un triple ask

uso ideal sería similar a with sintaxis:

let cross set1 and-in set2 
let uniq set1 with [color = red] not-in set2 

Cosas simples como "¿Está el agente A en el agente X?" son problemáticos

Respuesta

11

Para la primera se utiliza la primitiva turtle-set. Para el segundo, necesita la primitiva member?, que también funciona en grupos de servidores. Como tal:

to setup 
    ca 
    create-turtles 10 [set color red] 
    create-turtles 10 [set color blue] 
    let red-ones turtles with [color = red] 
    let blue-ones turtles with [color = blue] 

    ;join 2 agent sets 
    let joinset (turtle-set red-ones blue-ones) 
    show joinset 

    let even-ones (turtles with [who mod 2 = 0]) 
    ;subtract even-ones from red-ones 
    let subtractset red-ones with [not member? self even-ones] 
    show subtractset 
end 
+1

No me di cuenta de que '[con]' puede recibir un "reportero". Mi primera pregunta fue encontrar una intersección, no una unión, pero viendo tu respuesta para la segunda pregunta, supongo que sería tan simple como 'rojos con [miembro? uno mismo-uno] '. ¡Gracias! – Mikhail

+0

Gracias. Tuve la misma pregunta y no me di cuenta de que uno podía usar 'self' en una construcción' con'. Al principio probé '?', Pero recibí un mensaje de error y luego no tenía otras ideas de cómo proceder. – RussAbbott

Cuestiones relacionadas