List 尝试替换嵌套列表中每个勾号的项

List 尝试替换嵌套列表中每个勾号的项,list,simulation,netlogo,nested-lists,List,Simulation,Netlogo,Nested Lists,我正在建立一个模拟病毒在全世界传播的模型。我目前有16个区域,每个区域有28个影响病毒传播的变量。由于变量/区域数量众多,我知道使用列表是最有效/最好的 这是我当前设置区域的代码: Set Name 0 Set Living-Pop 1 Set Infected-Pop 2 Set Dead-Pop 3 Set Vaccinated-Pop 4 Set Count-Patches 5 Set Density 6 Set Infected-Density 7 Set Development 8 S

我正在建立一个模拟病毒在全世界传播的模型。我目前有16个区域,每个区域有28个影响病毒传播的变量。由于变量/区域数量众多,我知道使用列表是最有效/最好的

这是我当前设置区域的代码:

Set Name 0
Set Living-Pop 1
Set Infected-Pop 2
Set Dead-Pop 3
Set Vaccinated-Pop 4
Set Count-Patches 5
Set Density 6
Set Infected-Density 7
Set Development 8
Set Healthcare 9
Set Research-Constant 10
Set Research-Rate 11
Set Water-Constant 12
Set Water-Rate 13
Set Airport-Security 14
Set Border-Security 15
Set Vaccine-Constant 16
Set Vaccine-Rate 17
Set Region-Number 18
Set Airports? 19
Set Hospitals? 20
Set ER? 21
Set Research? 22
Set Water? 23
Set Infected-water? 24
Set Infected? 25
Set Vaccine? 26
Set Borders? 27

set region-data [
[ "Hinterlands"  36138177  0  0  0  2702  13374.60289  0  10  0.975  7.5E-11  0.027103633  0.5  5  0.25  0.03  50000000000  0.007227635  1  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "USA"  318433268  0  0  0  1272  250340.6195  0  10  1  7.5E-11  0.238824951  0.5  5  0.25  0.075  50000000000  0.063686654  2  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Central America"  204157962  0  0  0  383  533049.5091  0  6  0.45  2.5E-11  0.030623694  0.6  3.6  0.4  0.01  50000000000  0.024498955  3  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Andes"  97253901  0  0  0  558  174290.1452  0  5  0.45  2.5E-11  0.012156738  0.2  1  0.3  0.05  50000000000  0.00972539  4  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Amazon"  186508253  0  0  0  1407  132557.3937  0  6  0.45  1.5E-11  0.016785743  0.35  2.1  0.33  0.03  50000000000  0.02238099  5  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Patagonia"  94307819  0  0  0  481  196066.1518  0  5  0.65  1.5E-11  0.007073086  0.4  2  0.3  0.05  50000000000  0.009430782  6  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Europe"  742538246  0  0  0  1175  631947.4434  0  10  0.85  2.5E-11  0.185634562  0.5  5  0.1  0.01  50000000000  0.148507649  7  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Middle East"  209455634  0  0  0  1197  174983.8212  0  5  0.3  1.5E-11  0.015709173  0.1  0.5  0.5  0.5  50000000000  0.020945563  8  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "North Africa"  459321750  0  0  0  2661  172612.4577  0  4  0.2  2.5E-11  0.045932175  0.1  0.4  0.3  0.2  50000000000  0.03674574  9  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "South Africa"  695349014  0  0  0  1535  452996.1003  0  4  0.1  2.5E-11  0.069534901  0.2  0.8  0.3  0.03  50000000000  0.055627921  10  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Russia"  143538971  0  0  0  4071  35258.89732  0  8  0.5  7.5E-11  0.086123383  0.5  4  0.25  0.03  50000000000  0.022966235  11  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "East Asia"  1510450616  0  0  0  1602  942853.0687  0  7  0.35  6.5E-11  0.68725503  0.7  4.9  0.25  0.075  50000000000  0.211463086  12  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "South Asia"  1674152344  0  0  0  1346  1243798.175  0  5  0.25  3.5E-11  0.29297666  0.8  4  0.3  0.01  50000000000  0.167415234  13  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Austalia"  23132574  0  0  0  1156  20010.87716  0  9  0.85  5E-11  0.010409658  0.3  2.7  0.25  0  50000000000  0.004163863  14  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Oceania"  43984482  0  0  0  121  363508.1157  0  2  0.3  5E-12  0.000439845  0.01  0.02  0.25  0  50000000000  0.001759379  15  TRUE  TRUE  TRUE  FALSE  TRUE  FALSE  FALSE  FALSE  TRUE]
[ "Ocean"  0  0  0  0  56542  0  0  0  0  0  0  0  0  0  0  0  0  16  FALSE  FALSE  FALSE  FALSE  TRUE  FALSE  FALSE  FALSE  FALSE]
在设置过程中,我想编写一个过程,从区域数据列表中选择一个区域(带有选择器),并替换受感染的?带有一个1-10的随机整数的true和Infected Pop。在我的go程序中,我计划编写程序,根据感染百分比、tbd感染率、医疗保健、发展、总密度和感染密度,为每个蜱虫的感染流行、存活流行和死亡流行设置新值

在将数据存储在修补程序中转换为将数据存储在列表中之前,我使用了以下代码:

to-infect
 ask patches with [infected?][
    if infected-pop < living-pop [
      set infected-pop ((infected-pop + (((((infected-pop / living-pop) * (infection-rate / healthcare)) / development) * ((density - infected-density))) * 10)))  ]
    if infected-pop > living-pop [ set infected-pop living-pop ]
end
感染 询问带有[已感染?]的修补程序[ 如果感染流行性感冒<活流行性感冒[ 设置受感染的pop((受感染的pop+((((受感染的pop/活的pop)*(感染率/医疗保健))/development)*((密度-受感染的密度))*10))] 如果感染流行歌曲>生活流行歌曲[设置感染流行歌曲生活流行歌曲] 结束 并且需要找到一种方法来重写代码以处理列表


有人能帮我写一个安装程序来完成我的目标吗?有人能帮我修改列表而不是补丁的go程序吗?

可能有更智能的解决方案,但你可以这样做:

to replace [region var-position new-value]
  let i 0
  foreach region-data
  [
     if item 0 ? = region
     [
       set region-data replace-item i region-data replace-item var-position ? new-value
     ]
    set i (i + 1)
  ]
end
replace region-chooser Infected? TRUE
replace region-chooser Infected-Pop random 10
replace "USA" Water-rate 50
if条件检查
区域数据的当前子列表的第一项是否等于指定的
区域。
if条件内部的命令是一个嵌套的
replace item
函数。内部的命令获取
区域数据的当前子列表
,并用指定的
新值
替换子列表的指定
变量位置
。外部的命令用此m替换
区域数据
中的旧子列表修改后的名单。 在您的情况下,假设您的界面上有一个名为“region chooser”的选择器,您可以通过如下方式调用replace函数:

to replace [region var-position new-value]
  let i 0
  foreach region-data
  [
     if item 0 ? = region
     [
       set region-data replace-item i region-data replace-item var-position ? new-value
     ]
    set i (i + 1)
  ]
end
replace region-chooser Infected? TRUE
replace region-chooser Infected-Pop random 10
replace "USA" Water-rate 50
您也可以将此功能用于以下任何区域:

to replace [region var-position new-value]
  let i 0
  foreach region-data
  [
     if item 0 ? = region
     [
       set region-data replace-item i region-data replace-item var-position ? new-value
     ]
    set i (i + 1)
  ]
end
replace region-chooser Infected? TRUE
replace region-chooser Infected-Pop random 10
replace "USA" Water-rate 50

看起来使用
map
ifelse值
会更容易些?