如何在netlogo中的多个过程中使用报告

时间:2018-11-23 12:02:58

标签: netlogo

我正在编写一个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

在这里,当我使用程序计算和山羊创建程序时,请用户两次进行输入。如何避免呢?    谢谢。 最好的问候,

1 个答案:

答案 0 :(得分:1)

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

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

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