2014-09-22 4 views
0

Im пытается создать patch-set без необходимости определять каждый патч в списке индивидуально. Однако для этого мне нужно вычесть один из patch-set из другого. В моей модели patches own O2. У меня есть несколько выделенных патчей, в которых их значение для O2 не должно меняться. Я хотел бы создать patch-set для патчей с pxcor = max-pxcor, но исключить эти исправления, которые должны содержать постоянную O2. Я попытался вычесть патч-наборы, но получил сообщение об ошибке -expected this input to be a number, but got a patch agentset instead. Я также попытался установить патч-набор в виде списков, а затем с помощью команды remove изменить список. Тем не менее, тогда возникает проблема, когда I ask список для выполнения чего-то, я получаю ошибку ASK expected an agent or agentset, but got a list instead.NetLogo: Subtract One Patch-set From Another

Ниже приведен соответствующий код, где я пытаюсь построить патч-набор:

set NS1 (patch-set patch -8 -5 6 patch -8 -5 -5 patch -8 6 6 patch -8 6 -5 patch 8 -5 6 patch 8 -5 -5 patch 8 6 6 patch 8 6 -5) 
set NS2 (patch-set patch -8 0 6 patch -8 0 -5 patch 8 0 6 patch 8 0 -5 ) 
set NS3 (patch-set patch -4 -5 6 patch -4 -5 -5 patch 4 -5 6 patch 4 -5 -5 patch -4 6 6 patch -4 6 -5 patch 4 6 6 patch 4 6 -5) 
set NS4 (patch-set patch -4 0 6 patch -4 0 -5 patch 4 0 6 patch 4 0 -5) 
set NS5 (patch-set patch -8 0 0 patch 8 0 0)     
set NS6 (patch-set patch -8 -5 0 patch -8 6 0 patch 8 -5 0 patch 8 6 0)  
set NS7 (patch-set patch -4 -5 0 patch -4 6 0 patch 4 -5 0 patch 4 6 0 ) 
set NS8 (patch-set patch 0 0 6 patch 0 0 -5)    
set NS9 (patch-set patch 0 -5 6 patch 0 -5 -5 patch 0 6 6 patch 0 6 -5) 
set NS10 (patch-set patch 0 -5 0 patch 0 6 0)    
set NS11 patch 0 0 0       
set NS12 (patch-set patch -4 0 0 patch 4 0 0)    

set FEMnodes (sentence NS1 NS2 NS3 NS4 NS5 NS6 NS7 NS8 NS9 NS10 NS11 NS12) 
set Xmaxmin (list (patch-set patches with [ pxcor = min-pxcor] patches with [ pxcor = max-pxcor])) 
set lateral remove FEMnodes Xmaxmin 
set Ymaxmin (list (patch-set patches with [ pycor = min-pycor ] patches with [ pycor = max-pycor ])) 
set FB remove FEMnodes Ymaxmin 
set Zmaxmin (list (patch-set patches with [ pzcor = min-pzcor ] patches with [ pzcor = max-pzcor ])) 
set TP remove FEMnodes Zmaxmin 

ответ

1

Я предполагаю, что FEMnodes содержит участки с постоянной О2, правильно? Если да, то вы можете сделать следующее:

patches with [ pxcor = max-pxcor and not member? self FEMnodes ] 

, чтобы получить все патчи с pxcor = max-pxcor, которые не в FEMnodes.

Так что, я думаю, что вы хотите Xmaxmin на самом деле быть определена следующим образом:

set Xmaxmin patches with [ (pxcor = min-pxcor or pxcor = max-pxcor) and not member? self FEMnodes ] 

Для общего патч набора разницы, вы можете использовать:

to-report patch-set-difference [ set1 set2 ] 
    report set1 with [ not member? self set2 ] 
end 

, но я думаю, что определение Xmaxmin Я дал больше стратегии, которую вы захотите использовать.