首页 > 解决方案 > 如何在 netlogo 的多个程序中使用 to-report

问题描述

我正在编写一个 NetLogo 程序,但遇到了一个问题。

我必须“报告”该程序并报告一个值。在这份报告中,我听取了用户的意见。但我想在多个其他过程中使用报告的值(输出)。

to-report initial-goat
    let goats-number read-from-string user-input "How many goats are there ?"
    while [goats-number > 100] [set goats-number read-from-string user-input "Please enter a value below or equal to 100 "] 
    report goats-number
end

to goat-create
   create-turtles initial-goat
end

to calculate
  let x initial-goat
  let alive count turtles
  let dead (x - alive)
end

在这里,当我使用程序进行计算和山羊创建时,程序要求用户两次输入。如何避免这种情况?谢谢。最好的祝福,

标签: netlogo

解决方案


事实上,假设计算过程在每个时间步运行,您的代码将多次询问初始山羊。由于此信息永远不会更改,因此您应该将其存储在变量中。有两种选择。

如果要使用问题格式,则:

globals [initial-goat]

to get-initial-goat
    set goats-number read-from-string user-input "How many goats are there ?"
    while [goats-number > 100] [set goats-number read-from-string user-input "Please enter a value below or equal to 100 "] 
end

to goat-create
   create-turtles initial-goat
end

to calculate
  let alive count turtles
  let dead (initial-goat - alive)
end

但更常用的方法是在界面上简单地设置一个滑块,而不是提出问题。您将有一个滑块(上限为 100),然后您只需要:

to goat-create
   create-turtles initial-goat
end

to calculate
  let alive count turtles
  let dead (initial-goat - alive)
end

推荐阅读