在netlogo中同时运行多个过程

时间:2015-02-25 02:13:59

标签: performance command netlogo procedures agents

您好我有以下代码:

        to go
            move
            play-papelvstije
            play-papelvsrock
            play-tijevsrock
            play-tijevspapel
            play-rockvspapel
            play-rockvstije
        end


        to play-rockvspapel
            ask turtles with [color = red]
                [
                let nearby other turtles in-radius 1
                if any? nearby with [color = green]
                [
                set color green 
                ]
                ]
        end

        to play-papelvstije 
            ask turtles with [color = green]
            [
            let nearby other turtles in-radius 1
            if any? nearby with [color = blue]
            [
            set color blue  
            ]
            ]
        end

       to play-tijevsrock
            ask turtles with [color = blue]
            [ 
            let nearby other turtles in-radius 1
            if any? nearby with [color = red]
            [
            set color red  
            ] 
            ]
        end

        to play-rockvstije
            ask turtles with [color = red]
            [
            let nearby other turtles in-radius 1
            if any? nearby with [color = blue]
            [
            set color red 
            ]
            ]
            end

        to play-papelvsrock
            ask turtles with [color = green]
            [
            let nearby other turtles in-radius 1
            if any? nearby with [color = red]
            [
            set color green 
            ]
            ]
        end

        to play-tijevspapel
            ask turtles with [color = blue]
            [
            let nearby other turtles in-radius 1
            if any? nearby with [color = green]
            [
            set color blue
            ]
            ]
        end

所以你可以看到,我按照这个顺序运行这个程序play-papelvstije play-papelvsrock play-tijevsrock,play-tijevspapel,play-rockvspapel,play-rockvstije,所以在运行模拟时我得到了一个斜面结果,因为第一个运行的命令是最后有一个增加的人口,所以我想要做的是找到一种方法来运行这个程序,但只有一个命令。我试过" foreach"和"地图"命令,但我还没有得到结果。 Anny的建议?

1 个答案:

答案 0 :(得分:1)

一个解决方案可以是不直接问蓝龟,但是对于所有的海龟......就像

to setup
  clear-all
  create-turtles 100 [
   set color red
   setxy random-pxcor random-pycor
  ]
  ask n-of 10 turtles [
   set color green 
  ]
  ask n-of 10 turtles with [color = red][
   set color blue 
  ]


  reset-ticks
end

to go
  move
  changeColor
  tick
end

to move
  ask turtles [
    rt random-float 90
    lt random-float 90
    fd 1
  ]
end

to changeColor
  ask turtles [
    let mycolor color
    let nearby other turtles in-radius 1
    if mycolor = blue [
       if any? nearby with [color = green]
        [
          set color blue
        ]
       if any? nearby with [color = red]
        [
          set color red  
        ]  
    ]
    if mycolor = green [
       if any? nearby with [color = red]
        [
          set color green 
        ]
       if any? nearby with [color = blue]
        [
          set color blue  
        ]
    ]
    if mycolor = red [
       if any? nearby with [color = red][
        if any? nearby with [color = blue]
        [
          set color red 
        ]
        if any? nearby with [color = green]
        [
          set color green 
        ]
       ]
    ]
  ]
end