如何在嵌套的 ifelse 语句中做到这一点
How to make this in a nested ifelse statement
我目前正在做一个项目,需要以下内容:我希望端口(一个品种)询问存储位置(另一个品种)是否具有一定的价值。如果不是,则继续询问下一个存储位置等,直到他找到具有正确值的位置。如果是这样,那么它应该采取其他行动(比如建造一些东西)。我现在明白了,这似乎可行,但我认为它超长且过于复杂。
to check-pipeline-26
ask storage 26
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-27]
]
end
to check-pipeline-27
ask storage 27
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-28]
]
end
to check-pipeline-28
ask storage 28
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-29]
]
end
to check-pipeline-29
ask storage 29
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-30]
]
end
如果您有任何使这更容易或简化的技巧,请告诉我。提前致谢!
最大
这是一个递归解决方案,我将管道编号作为参数传入:
to check-pipeline [n]
if n <= max [who] of storages
ask storage n [ifelse pipeline < 1
[build-pipeline]
[check-pipeline n + 1]
]
end
注意:您可能会在变量中跟踪您的 max-who,而不是每次都计算。
或者,这可能是一个更好的解决方案,您可以只使用 for 循环并按代理人的顺序对代理进行排序:
to check-pipeline
foreach sort-on [who] storages
[astorage -> ask astorage[ if pipeline < 1 [build-pipeline stop]]]
]
end
我目前正在做一个项目,需要以下内容:我希望端口(一个品种)询问存储位置(另一个品种)是否具有一定的价值。如果不是,则继续询问下一个存储位置等,直到他找到具有正确值的位置。如果是这样,那么它应该采取其他行动(比如建造一些东西)。我现在明白了,这似乎可行,但我认为它超长且过于复杂。
to check-pipeline-26
ask storage 26
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-27]
]
end
to check-pipeline-27
ask storage 27
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-28]
]
end
to check-pipeline-28
ask storage 28
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-29]
]
end
to check-pipeline-29
ask storage 29
[ifelse pipeline < 1
[build-pipeline]
[check-pipeline-30]
]
end
如果您有任何使这更容易或简化的技巧,请告诉我。提前致谢!
最大
这是一个递归解决方案,我将管道编号作为参数传入:
to check-pipeline [n]
if n <= max [who] of storages
ask storage n [ifelse pipeline < 1
[build-pipeline]
[check-pipeline n + 1]
]
end
注意:您可能会在变量中跟踪您的 max-who,而不是每次都计算。
或者,这可能是一个更好的解决方案,您可以只使用 for 循环并按代理人的顺序对代理进行排序:
to check-pipeline
foreach sort-on [who] storages
[astorage -> ask astorage[ if pipeline < 1 [build-pipeline stop]]]
]
end