如何删除netlogo中两个链接中较低的链接

如何删除netlogo中两个链接中较低的链接,netlogo,Netlogo,我有一个完整的有向加权图。我提取了所有海龟的最大输出链接,并将它们放在一个降序列表中。 尽管有时列表会出现这种情况: 最大链接数=[(链接42)(链接21)(链接05)(链接32)(链接12) (链接5和3)] 链接[2 1]和[1 2]出现在列表中,我希望具有较低值的链接消失,列表更新。 现在我已经写了这段代码,但什么也没发生 ask turtles [ set x max-one-of my-out-links [trust] set y one-of

我有一个完整的有向加权图。我提取了所有海龟的最大输出链接,并将它们放在一个降序列表中。 尽管有时列表会出现这种情况:

最大链接数=[(链接42)(链接21)(链接05)(链接32)(链接12) (链接5和3)]

链接[2 1]和[1 2]出现在列表中,我希望具有较低值的链接消失,列表更新。 现在我已经写了这段代码,但什么也没发生

      ask turtles
  [
    set x max-one-of my-out-links [trust]
      set y  one-of my-in-links
  ]
  set max-links sort-on [(- label)] link-set [max-one-of my-out-links [label]] of turtles
  ask item counter max-links
  [
    if [x] of end2 =  [y] of end1
    [
      ifelse [x] of end1 < [x] of end2
      [ask [x] of end1 [die]]
      [ask [x] of end2 [die]]
    ]
    set counter counter + 1
  ]
    set max-links-update sort-on [(- label)] link-set [max-one-of my-out-links [label]] of turtles
询问海龟
[
将x max设置为我的一个输出链接[信任]
在链接中设置y
]
在海龟的[(-label)]链接集[max-one-of-my-out-links[label]]上设置最大链接排序
询问物品计数器最大链接数
[
如果end2的[x]等于end1的[y]
[
如果end1的[x]项小于end2的[x]项
[向[x]询问end1[die]]
[向[x]询问end2[die]]
]
设置计数器+1
]
在海龟的[(-label)]链接集[max-one-of-my-out-links[label]]上设置最大链接更新排序
我的目标是询问每只海龟的end2,看看该end2的最大输出链接是否与其第一个端点的一个输入链接相同。如果是,这意味着在相同的两只海龟之间建立了两个链接。我认为问题在于,当我为x或y调用end2或end1时,代码不理解这个end2和end1属于列表中的项 有人能告诉我怎么解决这个问题吗?
感谢您的简单和快速回答,如果您能提供一个。在本例中,我使用这个玩具代码生成一个由4个节点组成的简单网络:

links-own [ value ]

to setup
  ca
  random-seed 1
  foreach ( range 0 360 90 ) [ angle ->
    create-turtles 1 [
      set heading angle 
      fd 8
    ]
  ]
  ask turtles [
    create-links-to n-of 2 other turtles [
      set value random-float 1
      set label precision value 3
    ]
  ]
  reset-ticks
end
这将创建一个具有四个“重复”链接的网络-链接值标记为:

接下来,一些代码:

  • 拉动所有端对
  • 过滤器,以便仅处理重复的端对
  • 在重复的唯一对上迭代并删除低值链接
运行此操作后,您可以看到较低值链接被删除:


您现在已经问了大约4次这个或类似的问题。请试着理解前面的答案,然后解释为什么这个答案不符合你的要求。这是否回答了你的问题?
to link-filter
  ; Get each link's end pairs
  let endPairs map [ i -> sort [ both-ends ] of i ] sort links

  ; Filter for end pairs that occur more than once
  let duplicatedEnds  ( map [ i -> filter [ j -> j = i ] endPairs ] endPairs )

  ; Keep only unique values
  let uniquePairs reduce sentence map remove-duplicates filter [ k -> length k > 1 ] duplicatedEnds

  ; Iterate over each unique pair
  foreach uniquePairs [ pair ->
    ; Filter for links with those ends, sorted by value
    let matchingLinks filter [ i -> sort [ both-ends ] of i = pair ] sort-on [value] links
    print matchingLinks

    ; Drop the first of the matching links as it is the lower value
    ; if its complement has not already been removed
    if length matchingLinks > 1 [
      ask first matchingLinks [ die ]
    ]
  ]
end