#netlogo
Вопрос:
У меня есть одна проблема с моим кодом, которая связана с вычислениями, или, может быть, я неправильно понимаю логику NetLogo. На самом деле, это поведение орошения, участки представляют собой один резервуар и три поля (поле 1, поле 2 и поле 3), их свойство — » текущее хранилище’. Для водохранилища «текущее хранилище» означает, что в нем хранился «объем воды»; для полей ‘текущее хранилище «означает» объем воды » на нем при орошении. Я надеюсь использовать воду в резервуаре для орошения этих трех полей, и порядок орошения сначала удовлетворяет полю 1, затем полю 2 и, наконец, полю 3, если запасенная вода в резервуаре не может удовлетворить общую потребность в воде этих трех полей. Более того, три поля орошались одновременно. Проблема в том, что код не может следовать порядку орошения, которого я ожидал, я не знаю, что не так. Надеюсь, кто-нибудь из вас сможет дать мне несколько советов, заранее большое спасибо! Код приведен ниже:
patches-own
[
CurrentStorage
Field-IrrigationVolume1 ;; the amount of water that needs to be supplied by irrigation in field1
Field-IrrigationVolume2 ;; the amount of water that needs to be supplied by irrigation in field2
Field-IrrigationVolume3 ;; the amount of water that needs to be supplied by irrigation in field3
IrrigationDemand1 ;; irrigation demand of field1
IrrigationDemand2 ;; irrigation demand of field2
IrrigationDemand3 ;; irrigation demand of field3
]
ask patches with [landtype = field]
[
if landtype = field1
[
set currentstorage ([currentstorage] of reservior)
ifelse currentstorage >= irrigationdemand1
[
set field-irrigationvolume1 irrigationDemand1
]
[
set field-irrigationvolume1 currentStorage
]
let use-field-irrigationVolumes1 field-irrigationVolume1
ask reservior
[
set currentstorage (currentstorage - use-field-irrigationvolumes1)
ask n-of use-field-irrigationVolumes1 storagevolumes-here [die]
]
sprout-IrrigationVolumes Field-IrrigationVolume1
[
set color turquoise
set size 0.5
set heading 0
]
]
if landtype = field2
[
set currentstorage ([CurrentStorage] of reservior - field-irrigationvolume1)
ifelse currentstorage >= irrigationdemand2
[
set field-irrigationvolume2 irrigationDemand2
]
[
set field-irrigationvolume2 currentStorage
]
let use-field-irrigationVolumes2 field-irrigationVolume2
ask reservior
[
set currentstorage (currentstorage - field-irrigationvolume1 - use-field-irrigationVolumes2)
ask n-of (field-irrigationvolume1 use-field-irrigationVolumes2) storagevolumes-here [die]
]
sprout-IrrigationVolumes Field-IrrigationVolume2
[
set color turquoise
set size 0.5
set heading 0
]
]
if landtype = field3
[
set currentstorage ([CurrentStorage] of reservior - field-irrigationvolume1 - field- irrigationvolume2)
ifelse currentstorage >= irrigationdemand3
[
set field-irrigationvolume3 irrigationDemand3
]
[
set field-irrigationvolume3 currentStorage
]
let use-field-irrigationVolumes3 field-irrigationVolume3
ask reservior
[
set currentstorage (currentstorage - field-irrigationvolume1 - field-irrigationvolume2 - use-field-irrigationVolumes3)
ask n-of (field-irrigationvolume1 field-irrigationvolume2 use-field-irrigationVolumes3) storagevolumes-here [die]
]
sprout-IrrigationVolumes Field-IrrigationVolume3
[
set color turquoise
set size 0.5
set heading 0
]
]
]