NetLogo: проблема расчета или логика работы NetLogo

#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
    ]
  ]
]