Netlogo: Как узнать вес ссылки - PullRequest
0 голосов
/ 17 мая 2018

Я получил набор черепах со связанными между собой ссылками.Я хотел получить вес ссылки между двумя узлами, я пытался найти, но не смог найти информацию о том, как это сделать.Я не использую NW, потому что я не хочу кратчайший путь.Есть идеи?Это часть моего кода:

to calculate-oldpath
let oldList [ 25 0 1 2 3 4 9 8 7 6 5 10 11 12 13 14 19 18 17 16 15 20 21 22 23 24]
let weighted-dist 0
( foreach ( but-last oldList ) ( but-first oldList ) [
[ a b ] ->
ask turtle a [
  let node-link link-with turtle b 
  ;Then retrieve weight link to do adding
]
] )
print weighted-dist
end

введите описание изображения здесь

S - моя отправная точка (25 в списке), а E - конец (24 в списке) Я хотел рассчитать вес этой «оранжевой дорожки»

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Ответ Джен о том, как получить вес ссылки, верен, но я бы предложил альтернативный способ вычисления суммы этих весов: используя примитив sum!

Это требует превращения вашего foreach в map, но, кроме этого, это довольно просто:

let weighted-dist sum (map [ [a b] ->
  [ [ weight ] of link-with turtle b ] of turtle a
] (but-last oldList) (but-first oldList))

Еще один небольшой комментарий: использование списка who чисел может быть не лучшим способомподходить к вещам, но я не знаю достаточно о вашей проблеме, чтобы предложить альтернативу ...

0 голосов
/ 17 мая 2018

Если вы назвали вес weight (в вашем links-own утверждении, которое вы не указали), то что-то вроде этого должно работать:

to calculate-oldpath
  let oldList [ 25 0 1 2 3 4 9 8 7 6 5 10 11 12 13 14 19 18 17 16 15 20 21 22 23 24]
  let weighted-dist 0
  ( foreach ( but-last oldList ) ( but-first oldList ) [
      [ a b ] ->
      ask turtle a [
        let node-link link-with turtle b 
        set weighted-dist weighted-dist + [weight] of node-link
      ]
  ] )
  print weighted-dist
end

Получение значения атрибута для ссылки точно так же, как получение значения атрибута для черепахи или патча, вы используете of

...