删除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链接列表
]
请求链接设置为死亡[死亡]
结束
对于列表中的每个链接,它会查看链接集中是否存在剩余的反向链接,该链接集最初由列表中的链接组成。如果是这样,它会标记要删除的正确链接,然后将自己从剩余的
中取出,以便在测试另一个链接时不会找到它。一旦找到所有要删除的链接,它们将从列表中删除并被要求删除

希望这有帮助, 查尔斯