如何选择特定的链接并使其消失

问题描述 投票:1回答:1

我正在尝试使运输工具从交货时收集钣金并将其放在切割机上。切割机会将金属板切割成两个主体之一,并将其​​输出以由载体收集。创建和销毁链接(例如下面的链接)是模拟承载,下放和收集物品的最佳方法的最佳方法吗?如果是这样,我该如何选择要死的特定链接?我已经用“ X X”标记了NetLogo期望2个输入的位置,因为我不确定在那里要写什么。干杯

globals[
  metal-sheets
  cutter-closest-free-carrier
  s-welder-closest-free-carrier
  p-welder-closest-free-carrier
  skeletons
  standard-skeletons
]

breed[carriers carrier]
breed[cars car]

cars-own [
body; standard, prestige
]
to cut
  let free-carriers carriers with [laden = false]   
  let cutter patches with [machine-type = "cutter"] 
  let delivery patches with [area = "delivery"]
  set cutter-closest-free-carrier nobody

  ask cutter [
  if status = "import" [
      set cutter-closest-free-carrier min-one-of free-carriers[distance myself]]   ]

  if cutter-closest-free-carrier != nobody[
      ask cutter-closest-free-carrier [
      set target delivery
      face one-of delivery 
      fd 0.01
      set metal-sheets cars-here
      if any? metal-sheets [
        create-link-to one-of metal-sheets [tie]
        set laden true
        set target cutter
        face one-of cutter
        fd 0.01
        ask cutter[
           set metal-sheets cars-here
      if any? metal-sheets [
            ask link  X X [die]
          set status "pending"
          create-link-to one-of metal-sheets [tie]]       
        ] 
      ]    
    ]
  ]
end
netlogo
1个回答
2
投票

这不会回答您的问题,因为我认为您在这里确实对时机产生了纠结。整个事情都需要重新组织,这将导致一个完全不同的问题。

此代码使切纸器可以在一个过程中找到并传送纸张等。这意味着所有这些都发生在相同的滴答中。但是,它仅向前移动0.1。您需要以完全不同的方式来考虑流程。

在一个时间步中会发生什么?一些切割工找到并切割了一张纸。其他已经有单页纸的切纸器移向输出点。其他裁切器将其纸张送出。这些都需要是不同的过程。传递其工作的裁纸器是链接死的地方,但是您不必识别它们(您的身份为X X),因为只有进行分娩的裁纸器才可以执行该过程。

[看一下NetLog0模型库模型Shepherds中的go过程。它的结构与您在此处所需的结构相似。

© www.soinside.com 2019 - 2024. All rights reserved.