Предпосылки. Я моделирую выбор территории в NetLogo. Черепахи занимают ландшафт, разделенный дорогами. Каждая черепаха выбирает центр своей территории, а затем строит территорию. Черепаха выбирает участки для своей территории по стоимости владения, которая основывается на расходах на еду и дорожных расходах. Транспортные расходы включают расстояние, а также необходимость перехода дороги для достижения участка.
Цель: я хочу, чтобы каждая черепаха идентифицировала все участки, на которых необходимо перейти дорогу, чтобы добраться до участка из центра территории. Затем черепаха должна назначить этим заплатам более высокую стоимость. Каждая черепаха будет занимать отдельную часть ландшафта, поэтому эти затраты будут индивидуальными для каждой черепахи. Как это можно сделать?
Пример: это пейзаж с двумя черепахами:
Пример кода: я добавил несколько строк, чтобы понять, как можно приблизиться к способу удержания дорожных расходов для каждой черепахи, но не знаю, как они будут рассчитаны и есть ли лучший способ удерживать эту информацию при застройке территорий:
patches-own
[ owner ;; turtle who claims patch for territory
benefit ;; i.e., food
primary-feature ;; either "road" or null
;; Need a way to calculate and remember road-related patch costs for each turtle,
;; which are based on whether the turtle must cross a road to reach the patch.
;; Perhaps this could be a patch variable tied to each turtle as follows:
road-costs-to-turtle-1
road-costs-to-turtle-2
;; etc...? If so, these would be calculated after turtle chooses a territory center.
]
turtles-own
[ start-patch ;; my territory center
destination ;; my next patch to claim
territory ;; patches I own
]
to go
pick-center
pick-patch
end
to pick-center
setxy random-xcor random-ycor
set start-patch (patch-here)
;; Turtle selects a patch for its territory center. Turtle will next need
;; to calculate costs for patches based on whether a patch requires crossing
;; a road to reach it. I'm at a loss for how to identify all patches beyond
;; roads from the turtle's perspective, however.
end
to pick-patch
if patch-here = start-patch [ set destination highest-value ]
;; Turtle travels to and adds patches to its territory once reaches destination.
end
to-report highest-value
let available-destinations (patch-set [neighbors4] of territory) with [owner = nobody]
report max-one-of available-destinations ([benefit-to-me / cost-to-me])
end
to-report benefit-to-me
report benefit ;; i.e., food value of patch
end
to-report cost-to-me
let road-cost ;;<--???
;; Not sure how to identify if patches are past a road and thus costlier.
;; If this is a patches-own variable, then the coding may be something like:
if who = 1 [let road-cost road-cost-to-turtle-1] ;; etc.
report distance [start-patch] of myself + road-cost
end