网志。要求特定的乌龟做某事

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

我想用机器人模拟一个汽车工厂,叫做 carriers. 在我的走法中,我试图要求一个没有工作的载体找到一个。cutter 并去找它。

如何要求具体的运营商做什么?

这是我目前所做的。

metal-sheets
cut-sheets
standard-skeleton
finished-standard-skeleton
prestige-skeleton
finished-prestige-skeleton
]

breed[carriers carrier]

turtles-own [
on-job?
]

patches-own [
processing-time
  machine-type ;;cutter, standard-welder, prestige-welder, riveter
  status ;;import, export, pending
]

to setup
  set-default-shape carriers "circle"
  create-carriers number-of-carriers
  [set color grey
  set on-job? false]
  setup-patches
  reset-ticks
end

to setup-patches
  ask patches [
    if pxcor = 1 and pycor = 1 [set machine-type "cutter"]
    if pxcor = 1 and pycor = 5 [set machine-type "standard-welder"]
    if pxcor = 5 and pycor = 1 [set machine-type "prestige-welder"]
    if pxcor = 5 and pycor = 5 [set machine-type "riveter"]

    if machine-type = "cutter" 
    [set pcolor red
    set status "import"]
    if machine-type = "standard-welder" 
    [set pcolor green
    set status "import"]
    if machine-type = "prestige-welder" 
    [set pcolor blue
    set status "import"]
    if machine-type = "riveter" 
    [set pcolor yellow
    set status "import"]
  ]
end

to Go

  let cutter patches with [machine-type = "cutter"]
    let standard-welder patches with [machine-type = "standard-welder"]
    let prestige-welder patches with [machine-type = "prestige-welder"]
    let riveter patches with [machine-type = "riveter"]

  let free-carriers carriers with [in-job? false]

  ask free-carriers [
     ;;on-job is a carrier-owned variable
      ask cutter [
        if status = "import" [
          set status "pending"
          face cutter ;; I want the carrier to face the cutter and move towards it
          fd 1

      ]
    ]
  ]
end```
netlogo
1个回答
1
投票

我想你是想 free-carriers 找到一个状态为 "导入 "的切割器补丁,让该切割器改变状态,然后让载具向它移动。

ask free-carriers [
  ;;on-job is a carrier-owned variable
  let my-cutter one-of cutter with [status = "import"]
  if my-cutter != nobody [
    ask my-cutter [ set status "pending" ]
    face cutter ;; I want the carrier to face the cutter and move towards it
    fd 1
  ]
]

由于每个自由载具都是(随机)轮流这样做的,所以没有两个自由载具应该去找同一个切割器。这将随机选择一个合格的切割器。 如果你愿意,你可以让自由载具去最近的一个。

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