删除netlogo中列表中链接的对立面
我有一个链接列表,但有时列表中会出现两个相对的链接。所有链接都有值,列表从最高值到最低值进行组织。我想做的是使具有较低值的反向链接失效。 有人有什么想法吗? 并不是说这会有很大帮助,但我从这行代码中得到了我的列表:删除netlogo中列表中链接的对立面,netlogo,Netlogo,我有一个链接列表,但有时列表中会出现两个相对的链接。所有链接都有值,列表从最高值到最低值进行组织。我想做的是使具有较低值的反向链接失效。 有人有什么想法吗? 并不是说这会有很大帮助,但我从这行代码中得到了我的列表: set max-links sort-on [(- label)] link-set [max-one-of my-in-links [label]] of turtles 我假设这些是定向链接,因为在任何两个海龟之间不可能有两个无向链接。下面的代码并不优雅,但我认为它可以满足您的
set max-links sort-on [(- label)] link-set [max-one-of my-in-links [label]] of turtles
我假设这些是定向链接,因为在任何两个海龟之间不可能有两个无向链接。下面的代码并不优雅,但我认为它可以满足您的需要。我已经将其嵌入到一个工作模型中
to test
clear-all
create-turtles 10 [fd random 10]
ask turtles [ create-links-to n-of 8 other turtles ]
ask links [set label random 100 ]
let link-list sort links
let to-die []
let remaining link-set link-list
foreach link-list [[m] ->
let opposite (link [who] of [end2] of m [who] of [end1] of m)
if opposite != nobody and member? opposite remaining [
ifelse ([label] of opposite < [label] of m) [
set to-die lput opposite to-die
]
[
set to-die lput m to-die
]
set remaining remaining with [self != m]
]
]
foreach to-die [m ->
set link-list remove m link-list
]
ask link-set to-die [die]
end
测试
清除所有
创造海龟10[fd random 10]
询问海龟[创建链接到其他8只海龟中的n只]
询问链接[设置标签随机100]
让链接列表对链接进行排序
让我们去死吧
让剩余链接设置链接列表
foreach链接列表[[m]>
让对方(m的[end2]的[who]与m的[end1]的[who]相连)
如果相反!=没有人和成员?剩余相反[
ifelse([标签]的对立面<[标签]的m)[
设置为与模具相反的模具lput
]
[
设置为模具lput m为模具
]
用[self!=m]设置剩余值
]
]
foreach to die[m->
设置链接列表删除m链接列表
]
请求链接设置为死亡[死亡]
结束
对于列表中的每个链接,它会查看链接集中是否存在剩余的反向链接,该链接集最初由列表中的链接组成。如果是这样,它会标记要删除的正确链接,然后将自己从剩余的中取出,以便在测试另一个链接时不会找到它。一旦找到所有要删除的链接,它们将从列表中删除并被要求删除
希望这有帮助,
查尔斯我假设这些是定向链接,因为任何两只海龟之间都不可能有两个无向链接。下面的代码并不优雅,但我认为它可以满足您的需要。我已经将其嵌入到一个工作模型中
to test
clear-all
create-turtles 10 [fd random 10]
ask turtles [ create-links-to n-of 8 other turtles ]
ask links [set label random 100 ]
let link-list sort links
let to-die []
let remaining link-set link-list
foreach link-list [[m] ->
let opposite (link [who] of [end2] of m [who] of [end1] of m)
if opposite != nobody and member? opposite remaining [
ifelse ([label] of opposite < [label] of m) [
set to-die lput opposite to-die
]
[
set to-die lput m to-die
]
set remaining remaining with [self != m]
]
]
foreach to-die [m ->
set link-list remove m link-list
]
ask link-set to-die [die]
end
测试
清除所有
创造海龟10[fd random 10]
询问海龟[创建链接到其他8只海龟中的n只]
询问链接[设置标签随机100]
让链接列表对链接进行排序
让我们去死吧
让剩余链接设置链接列表
foreach链接列表[[m]>
让对方(m的[end2]的[who]与m的[end1]的[who]相连)
如果相反!=没有人和成员?剩余相反[
ifelse([标签]的对立面<[标签]的m)[
设置为与模具相反的模具lput
]
[
设置为模具lput m为模具
]
用[self!=m]设置剩余值
]
]
foreach to die[m->
设置链接列表删除m链接列表
]
请求链接设置为死亡[死亡]
结束
对于列表中的每个链接,它会查看链接集中是否存在剩余的反向链接,该链接集最初由列表中的链接组成。如果是这样,它会标记要删除的正确链接,然后将自己从剩余的中取出,以便在测试另一个链接时不会找到它。一旦找到所有要删除的链接,它们将从列表中删除并被要求删除
希望这有帮助,
查尔斯