Netlogo: сумма по соседству

Мне нужна помощь. Моя проблема заключается в следующем

Я хочу решить следующую формулу

sum (Zi - Zj)^2, где Zi — константа для индивидуума i, а Zj — значение для общего индивидуума j, находящегося в пределах окрестности с радиусом = 1 индивидуума i. Поэтому мне нужна сумма квадрата расстояния между постоянным значением и значением Z для каждого человека в пределах этого радиуса.

Извините за отсутствие моего кода, но я понятия не имею, как подойти к этой проблеме.

Я напишу пример

Zi = 1 Окрестность индивидуума i состоит из 2 агентов, скажем, a и b, где Za = 3 и Zb = 5.

Я хочу следующий результат

(1-3)^2 + (1-5)^2 = 20

Спасибо


person Miki    schedule 06.02.2019    source источник


Ответы (1)


Я думаю, вы хотите сделать сумму квадратов разностей между константой и списком чисел, где список чисел — это значение Z для нескольких черепах. Если это правильно, то ниже приведена полная модель, которая делает то, что вы хотите.

turtles-own [ varZ ]

to setup
  clear-all
  create-turtles 40
  [ setxy random-xcor random-ycor
    set varZ random 10
    set color blue
  ]
  testme
end

to testme
  ask one-of turtles
  [ set color red
    let friends other turtles in-radius 4
    ask friends [ set color yellow ]
    type "my varZ is: " print varZ
    type "sum of squared differences is: " print sum-sq-diff varZ [varZ] of friends
  ]
end

to-report sum-sq-diff [#constant #listvals]
  report reduce + (map [ thisval -> (thisval - #constant) ^ 2 ] #listvals)
end

Процедура sum-sq-diff принимает два входа: константу и список значений. Он вычисляет квадрат суммы разностей между константой и каждым значением в списке. map выполняет квадрат разностей и создает список этих значений, затем reduce суммирует по списку. Вы можете проверить это, просто набрав sum-sq-diff 1 [ 2 3 4 ] в командном центре, и вы получите обратно 14 (то есть (2-1) ^ 2 + (3-1) ^ 2 + (4-1) ^ 2).

Остальная часть кода является примером того, как использовать эту процедуру в том контексте, который, я думаю, вам нужен, вытаскивая черепах в пределах некоторого радиуса и используя значения их переменных в качестве списка.

person JenB    schedule 08.02.2019
comment
Это замечательно! Спасибо - person Miki; 09.02.2019