首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netlogo -动态选择不同的全局变量

Netlogo -动态选择不同的全局变量
EN

Stack Overflow用户
提问于 2018-12-12 06:22:54
回答 2查看 158关注 0票数 1

我在模拟一个仓库排队系统。主要代理是包裹和分拣机。包裹是从特定的命名缓冲队列(例如q-1,q-2,Q-3.q)中被排序机器提取出来的。我不想将缓冲区队列建模为代理,而是将它们表示为全局列表变量。

问题是如何将分拣机设置为能够动态识别和操作不同的全局变量(q-1,q-2 .q)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-14 15:12:42

我不想将缓冲区队列建模为代理。

为什么?

我相信你有你的理由,但它们可能值得重新考虑。

每当我看到像q-1q-2.q-n这样的可变名字时,我都会恐惧地退缩。你正在试图建立一个模型,从概念上来说,这是一个事物的集合。单变量指的是单个事物。编程语言具有用于表示事物集合的数据结构,而这些通常是正确的工作工具。

在NetLogo中,这些数据结构(主要是)代理集和列表。

我的直觉告诉我,正确的方法是将队列建模为拥有列表变量的海龟,但如果您真的不想这样做,则可以使用全局列表来存储队列。下面是一个示例:

代码语言:javascript
复制
globals [ queues ]

to setup
  clear-all
  set queues n-values 3 [ (list) ] ; create three empty queues
  add-to-queue 0 "A"
  add-to-queue 0 "B"
  add-to-queue 1 "X"
  print queues
  print poll-from-queue 0
  print queues
end

to add-to-queue [ queue-index new-item ]
  let old-queue item queue-index queues
  let new-queue lput new-item old-queue
  set queues replace-item queue-index queues new-queue
end

to-report poll-from-queue [ queue-index ]
  let old-queue item queue-index queues
  let polled-item first item queue-index queues
  let new-queue but-first old-queue
  set queues replace-item queue-index queues new-queue
  report polled-item
end

当然,在您的模型中,队列将存储包而不是字符串。

票数 3
EN

Stack Overflow用户

发布于 2018-12-12 14:49:22

您可能会添加一个变量来创建该变量的字符串表示形式,然后在执行该字符串后将全局变量存储在局部变量中:

我没有测试它,但这应该有效:

代码语言:javascript
复制
let parcel-number 2
let parcel run-result (word "q-" parcel-number)

另一个选择

代码语言:javascript
复制
run (word "let parcel q-" 2)

有关更多信息,请参见此处:https://ccl.northwestern.edu/netlogo/docs/dictionary.html#run

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53737195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档