2015-02-06 3 views
1

У меня проблема netlogo, для которой я не могу найти решение, но все же он чувствует себя очень основательно. У меня есть два типа пород:Netlogo отношение один к одному

breed [individuals individual] 
breed [cars car] 

Я хочу, чтобы создать ссылку от одного человека к одной машине. Итак, это одно-одно отношение. Я использую этот код, чтобы сделать это:

to setup-individuals 
    create-individuals individuals-number [ 
    set ID 2 
    set shape "person" 
    set color yellow 
    setxy random-xcor random-ycor 
    set activity "" 
    set activity_time 0 
    let rand random 2 
    ifelse rand = 0 
    [ 
     set owns-car false 
     ] 
    [ 
     set owns-car true 
     create-link-to one-of cars ;; here is the issue 
     ] 
    ] 
end 

Проблема заключается в том, что если я использую «create-link-to one-of cars» есть более одного лица, связанное с одной машины, но я хочу, чтобы каждый человек должен обладать отличным автомобилем. При попытке выполнить следующую команду: «create-link-to one-of cars with [my-in-links = 0]», это дает мне следующую ОШИБКУ: «CREATE-LINK-TO ожидаемый вход будет черепахой, но вместо этого получил NOBODY». Я пробовал много вариантов этой команды, но не работал.

ответ

3

Ваше попыснее решение из create-link-to one-of cars with [my-in-links = 0] идет правильным образом. Однако, если вы посмотрите на словарь NetLogo, вы увидите, что my-in-links возвращает агент, а не целое число, указывающее количество членов этого агента. Поэтому вам нужно сравнить с пустым, а не сравнить с числом 0.

Это код, который синтаксически близок к тому, что у вас есть: create-link-to one-of cars with [count my-in-links = 0].

То, что вы действительно хотите, хотя это нечто большее, как create-link-to one-of cars with [not any? my-in-links]

+0

создания подключаемых к одной из машин с [не есть? my-in-links] сделал работу thnx mate – arianit

+1

'my-in-links = nobody' не работал -' nobody' не равен пустым агентам. решение 'no any? ... '- это то, что я бы предложил. –