Я относительно новичок в NetLo go (и вообще кодирую) и столкнулся с проблемой, с которой я надеялся, что вы мне поможете - большое спасибо заранее! Здесь мы go:
Резюме
Я разрабатываю модель землепользования с лесным миром и черепахами, которые способны превращать лес в урожай земельные участки. Черепахи (в данном конкретном случае c компаний) могут перемещаться к месту назначения в пределах своего диапазона мобильности и очищать лес в радиусе вокруг себя (чтобы превратить его в пахотную землю). Цель состоит в том, чтобы компании выбирали свои патчи назначения на основе прогнозируемой прибыли от преобразования патчей вокруг них, то есть, принимая экономические решения относительно того, куда двигаться в ландшафте. Прибыль (или арендная плата за землю в моей модели) является функцией стоимости конверсии, затрат на обслуживание и потенциальных штрафов, вычитаемых из доходности патча. Таким образом, идеальный патч назначения - это патч, кластер патчей вокруг которого имеет наибольшую сумму прогнозируемой прибыли. Я сделал небольшую цифру, чтобы помочь визуализировать концепцию: концепция кластерной прибыли в радиусе
Что я делал до сих пор Пока у меня есть следующие процедуры, относящиеся к поиск максимального размера платы за аренду земли: 1) перемещение компаний к участку с максимальной прогнозируемой арендной платой за землю 2) представление отчета о максимальной прогнозируемой арендной плате за землю с использованием функции отчета. Я также попытался использовать функцию ask-patches, но безрезультатно. Патчи имеют штраф, связанный с ними, в зависимости от того, являются ли они частью защищенной области, и могут принадлежать определенному субъекту (в зависимости от того, где они находятся и кто их конвертирует).
Задача / цель Мне нужна структура, которая запрашивает каждый участок в пределах данного радиуса черепахи (компании) для расчета арендной платы за каждый участок в другом заданном радиусе. Другими словами, я хочу, чтобы черепаха могла сказать: если я go к этому патчу xy, который находится в моем радиусе движения, я получу максимальную арендную плату за конвертирование всех патчей вокруг этого патча xy. Приведенный ниже код не выдает никаких сообщений об ошибках, но из-за поведения черепах он тоже не работает правильно. Черепахи перемещаются по миру случайным образом и напрямую попадают в защищенные районы (налагают большие штрафы за вторжение), что приводит к их банкротству go.
Любые мысли и идеи очень ценятся!
patches-own
owned-by ;; "R" indicated it's unoccupied forest
protected-area ;; whether the patch is part of a protected area
encroachment-fine ;; the $-amount a turtle is fined for converting this patch of forest
GUI inputs
company-conversion-radius ;in what radius around themselves companies can convert land
to move-to-max-rent-C
ifelse any? patches in-radius (company-conversion-radius * 2 - 1) with [owned-by = "R"] [ ;here, companies 'scan' their environment for any patches that have forest (expressed through owned-by = "R"), if there are forested patches, companies move to the destination-patch that promises the highest profit (land-rent)
let destination-C max-rent-C
move-to destination-C
]
;; if no forest patch within their scanning-radius, they face the nearest forest patch anywhere and move towards it
[
face min-one-of patches with [owned-by = "R"] [distance myself]
move-to patch-ahead company-conversion-radius
]
end
to-report max-rent-C
ask patches in-radius (company-conversion-radius * 2 - 1) [
let available-conversion-patches count patches in-radius company-conversion-radius with [owned-by = "R"]
report max-one-of patches in-radius company-conversion-radius with [owned-by = "R"] [;;formula for calculating land rent]
]
end
Я нашел эту ветку , чтобы попросить черепаху выполнить вычисления из набора патчей , но это, похоже, не вполне решило мою проблему, поскольку он только запрашивал вычисления вокруг черепахи, а не вокруг патчи, которых может достичь черепаха.
Большое спасибо уже!
Ура, Мариус