2017-06-23 50 views
0

我有200只代表生产者的海龟。每只乌龟都有2个变量(2个产品的销售量),并将它们进行比较,让产品知道哪种产品最受欢迎,因此乌龟的颜色会变成代表该产品的颜色。 我所限定的本回路:单独或与单独龟一起工作的海龟中的一只或一只不能正常工作

while [counter < 201][ 
     ask n-of 1 producers [ 
     if (product1sales > product2sales) 
     [ 
     set color green 
    ] 
if (product2sales > product1sales) 
     [ 
     set color red 
    ] 
; 
    set counter counter + 1] 

    ] 

我每次正被称为假定,一个龟被选择,但这一特定的龟将不会被再次选择。我还假设通过运行代码,所有的龟必须是绿色或红色,但有些既不是绿色也不是红色,因为n-of没有按我的设想工作。其中一个没有做我想要的。有任何想法吗?

感谢

+0

'一of'和'正of'选择1和n分别随机剂,但对未来的选择没有任何影响,只是数量代理人被问到。在NetLogo中,你永远不需要循环代理,因为这就是'ask'的功能。 'ask []'原语不是同时发生的,它通过被询问的代理进行迭代,并且每个(随机顺序)执行[]中的任何操作。 – JenB

+0

谢谢。我测试了这些代码,以了解n-of可以更好地决定如何处理访问csv文件。 200个生产者信息存储在一个我导入的csv中,并将它们放入一个矩阵中,每行包含与生产者相关的内容。我想要问的是,对于每个生产者来说,我们都需要做一些marix的选择。两个第一列的总和存储在一个变量中,其他三列也在另一个变量中求和。然后,完成比较。你认为我最好把它当成一个新问题吗? – user710

+0

如果你不能使它工作,肯定会问一个新的问题。但看看模型库,代码部分,有一个导入csv文件并将值分配给代理属性的示例 – JenB

回答

0

如果你只是ask producers它会要求所有的生产商以随机的顺序,但不repeating-如果你只是想所有这些,使两个选择,你甚至不会需要之间的选择柜台。

如果product1salesproduct2sales总是较高,则还可以使用ifelse进行微调。看看下面的例子会给你你需要的东西:

breed [ producers producer ] 

producers-own [ product1sales product2sales ] 

to setup 
    ca 
    reset-ticks 
    create-producers 200 [ 
    setxy random 30 - 15 random 30 - 15 
    set product1sales random-float 11 
    set product2sales random-float 11 
    set color white 
    ] 

end 

to choose 

    ask producers [ 
    ifelse product1sales > product2sales [ 
     set color green 
    ] 
    [ 
     set color red 
    ] 
    ]  

end