我可以使用变量修改NetLogo命令吗?

时间:2017-04-21 11:37:09

标签: netlogo

示例开始:

to make-new-car [freq x y head ] if (random-float 100 < freq) and not any? turtles-on patch x y [ create-cars 1 [ setxy x y set heading head set color one-of base-colors ] ] end

但是我希望有更多的汽车品种 - 而不仅仅是一个汽车品种。我还想保持简单,并坚持做这个(第一个功能与上面的相同):

to make-new-car [freq x y head ] if (random-float 100 < freq) and not any? turtles-on patch x y [ create-cars 1 [ setxy x y set heading head set color one-of base-colors ] ] end

to make-new-carSE [freq x y head ] if (random-float 100 < freq) and not any? turtles-on patch x y [ create-carsSE 1 [ setxy x y set heading head set color one-of base-colors ] ] end

并且冗余通过重复相同的程序只是使用不同的品种名称我想做一些像这个(将品种名称作为参数并使用它创建 - 命令):

to make-new-car [freq x y head breed-name] if (random-float 100 < freq) and not any? turtles-on patch x y [ create-breed-name 1 [ setxy x y set heading head set color one-of base-colors ] ] end

然而,Netlogo抱怨create-breed-name未定义。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

最简单的方法是create-turtles然后set breed breed-name。这是一个例子。

breed [ testers tester ]

to make-turtles [ breed-name ]
  create-turtles 1 [ set breed breed-name ]
end

to setup
  make-turtles testers
end

在构造适当的字符串后,您也可以使用run做一些事情,但我认为上面的内容更直接。

答案 1 :(得分:2)

和Jen的回答一起去。到目前为止,它是实现您所需要的最直接的方式。

然而,只是为了它,这是用 <TreeViewItem> <TreeViewItem.Style> <Style TargetType="TreeViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> </Style> </TreeViewItem.Style> <TreeViewItem.Header> <DockPanel LastChildFill="False" HorizontalAlignment="Stretch"> <TextBlock Text="Pizza" DockPanel.Dock="Left"/> <TextBlock Text="5,00 €" DockPanel.Dock="Left"/> </DockPanel> </TreeViewItem.Header> </TreeViewItem> 做到这一点的一种方法:

run

请注意,我将新创建的乌龟应该执行的命令放在匿名过程中(使用NetLogo 6.0.1语法),然后在传递给{{1}的字符串中运行 }。您也可以将所有内容放在一个大字符串中,但随后您将放弃编译器检查,语法突出显示,速度等。

但是,无论如何,不​​要做任何这样的事情。使用Jen的方法。