В Netlogo, как вы перемещаете черепаху на другой конец ее ссылки? - PullRequest
0 голосов
/ 27 сентября 2018

В своей симуляции я создал две породы черепах: одна - обычная черепаха, а другая - ореол, предназначенный для перекрытия каждой черепахи.Всякий раз, когда заштрихована черепаха (либо созданная как часть процедуры установки, либо созданная с помощью функции штриховки netlogo), гало также заштриховывается и связывается путем вызова отдельной функции make-halo.

create turtles turtle-initial-number
;;(all the turtle genes are set here)
if halos-enabled [make-halo] 

to make-halo
  hatch-halos 1
  [ set size sight-radius * 2 + 1
    set shape "square"
    set color lput 64 extract-rgb color 
    __set-line-thickness 0.5
    create-link-from myself
    [ tie
      hide-link ] ]
end

Из-за некоторыхВзаимодействия, которые я реализовал, иногда черепахи и гало отрываются друг от друга, поэтому я хотел бы добавить шаг в конце каждого тика, чтобы все гало возвращались к своим черепахам, где они принадлежат.Есть ли способ переместить ореол или установить его координаты для черепахи на другом конце линии?

Другой вариант - решить, что происходит, когда происходит отключение.У меня есть другая порода черепах (людей), которые могут «отталкивать» других с помощью этой функции отталкивания ниже.Черепахи (и их ореолы), занимающие 9 квадратов перед человеком, выталкиваются вперед в том же направлении, в котором человек стоит.Когда их толкают, по какой-то причине черепаха больше не находится в центре гало.

to push-away  
  ask people [
    let push-dir heading
    ask patch-ahead 2 
    [ask turtles-here 
      [set heading push-dir
       fd 2]
    ask neighbors
      [ask turtles-here 
        [set heading push-dir
        fd 2]
        ] 
    ] 
  ]
end

1 Ответ

0 голосов
/ 27 сентября 2018

Теоретически, tie должен связывать движения.Но чтобы привязать гало к его черепахе, вы можете ask гало к move-to черепахе.Единственная хитрость будет в том, чтобы определить правильную черепаху, и вы не указали достаточно своего кода, чтобы я мог разобрать идентификацию для вас.

Я предлагаю вам на самом деле добавить переменную в гало, которая скорее записывает их черепаху.чем с помощью ссылки.Если ссылка не имеет другой цели, нет необходимости создавать все эти дополнительные объекты модели.Вы бы использовали это так:

halos-own [my-owner]

to make-halo
  hatch-halos 1
  [ set size sight-radius * 2 + 1
    set shape "square"
    set color lput 64 extract-rgb color 
    __set-line-thickness 0.5
    set my-owner myself      ; this is the new line
 ]
end

to push-away
  <all the code you have already>
  ask halos
  [ move-to my-owner
  ]
end
...