Netlogo: сумма в пределах соседа - PullRequest
0 голосов
/ 06 февраля 2019

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

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

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

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

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

Zi = 1 Окрестности человекая состоит из 2 агентов, скажем, a и b, где Za = 3 и Zb = 5

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

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

Спасибо

1 Ответ

0 голосов
/ 08 февраля 2019

Я думаю, что вы хотите сделать сумму квадратов разностей между константой и списком чисел, где список чисел - это значение 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).

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

...