改变自己的颜色

时间:2017-12-18 17:12:04

标签: netlogo

我有以下代码,我要求一些代理人死:

breed [ readers reader ]
breed [ pallets pallet ]
breed [ trucks truck ]

readers-own [ 
  truck-being-served 
  pallet-being-served ]

to complete-service [ ?reader ]
  ask ?reader [
      ask pallet-being-served [ die ]
      set pallet-being-served nobody
      ask truck-being-served [
        if not any? pallets-in-truck [ 
          ask self [ die ]
          ask myself [
            set truck-being-served nobody
            set color green
            set next-completion-time 0
          ]
        ]
      ]
  ] 
end

pallet-being-servedtruck-being-served是托盘和卡车代理商。 问题是内部ask myself [...似乎不起作用,因为?reader代理的颜色不会变为绿色。在这里,我不确定我是指我刚刚杀死的?reader还是truck-being-served代理人。我想将颜色改为绿色。 ask myself [ ...是指读者代理吗?

问候。

1 个答案:

答案 0 :(得分:2)

要求死龟做某事无效。另外,请提供一个说明问题的最小可运行示例。

globals [next-completion-time]
breed [ readers reader ]
breed [ pallets pallet ]
breed [ trucks truck ]

readers-own [ 
  truck-being-served 
  pallet-being-served ]

trucks-own [pallets-in-truck]

to setup
  ca
  create-readers 1
  create-trucks 1
  create-pallets 1
  ask reader 0 [set truck-being-served truck 1]
  ask truck 1 [set pallets-in-truck pallets]
  ask reader 0 [set pallet-being-served one-of [pallets-in-truck] of truck 1]
end

to complete-service ;reader proc
  ask pallet-being-served [ die ]
  ask truck-being-served [
    if not any? pallets-in-truck [  
      ask myself [
        set color green
        set next-completion-time 0
      ]
      die
    ]
  ]
end

to test
  setup
  ask reader 0 [complete-service]
end