【发布时间】:2021-02-19 07:22:13
【问题描述】:
问题是我发现很难理解 DFBB 是如何工作的,这种情况下参数和输出应该是什么。
我正在为《星际争霸 2》游戏创建一个 AI,它将处理游戏中的构建顺序(用于人族团队)。我计划遵循链接中描述的方法(见下文),该方法遵循了我想要的非常相似的方法。总结一下我打算做什么:
将给我一份需要建造的不同类型建筑物的清单。建筑需要消耗矿物和天然气(这是游戏中的货币),一些建筑有先决条件(这意味着在建造它之前需要建造其他建筑)并且它们需要一定的时间来建造。
在文章中,他们使用深度优先分支和绑定来确定最佳构建顺序,这意味着构建该列表中建筑物的最快方式。这是他们的伪代码:
其中状态 S 由 S =(当前游戏时间、可用资源、正在进行但未完成的操作、工人收入数据)表示。 S´ 是如何派生的,在文章中有描述,它是通过三个函数完成的,所以我明白了。
如前所述,我正在努力理解起始状态 S、目标 G、时间限制 t 和界限 b 应该在他们描述的伪代码中表示。
我只知道三件事:需要建造的建筑清单、我目前拥有的消耗品(矿产和天然气)、资源(即我在游戏中已经拥有的建筑)。然后应该以某种方式将其应用于算法,但不清楚该函数的输入应该是什么。输出应该是一个按正确顺序排序的列表,所以如果我按照它们进入的顺序在哪里建造建筑物,那么它应该会全部解决,并且应该是可以完成的最佳时间。
例如,我是否应该遍历列表建筑物并在每个元素上运行 DFBB,目标是查看建筑物是否可以建造。但是,时间限制也应该设置什么,在这种情况下,bound 意味着什么?仅仅是成本吗?
请解释这个函数应该如何在列表中运行,以便找到构建它的最佳路径。这篇文章相当容易阅读,但我需要一些帮助来理解它的工作原理以及如何将它应用到我的问题中。
文章链接:https://ai.dmi.unibas.ch/research/reading_group/churchill-buro-aiide2011.pdf
【问题讨论】:
标签: python algorithm search artificial-intelligence depth-first-search