微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解《星际争霸2》的深度优先分支和绑定实现

如何解决了解《星际争霸2》的深度优先分支和绑定实现

问题是我很难理解DFBB的工作原理,这种情况下的参数和输出

我正在为《星际争霸2》游戏创建AI,该AI将处理游戏中的构建顺序(针对Terran团队)。我打算遵循链接中所述的方法(见下文),该方法遵循了我所要的非常相似的方法。总结一下我打算做什么:

将向我提供需要建造的不同类型建筑物的清单。建筑物要花费矿物质和天然气(这是游戏中的货币),有些建筑物有先决条件(意味着需要建造其他建筑物才可以建造),并且它们花费了一定的时间。

文章中,他们使用了“深度优先分支”和“边界”来找出最佳的构建顺序,这意味着在该列表中构建建筑物的最快方法。这是他们的伪代码

Pseudocode for DFBB

状态S表示为S =(当前游戏时间,可用资源,进行中但未完成的动作,工人收入数据)。本文描述了S´的派生方式,它是通过三个功能完成的,这一点让我理解。

如前所述,我在努力理解起始状态S,目标G,时限t和界限b应该由它们描述的伪代码表示什么。

我只能肯定地知道三件事:需要建造的建筑物清单,我目前拥有的消耗品(矿物和天然气),资源(即我已经在游戏中拥有的建筑物)。然后应该以某种方式将其应用于算法,但尚不清楚该函数应输入什么。输出应该是按正确顺序排序的列表,因此,如果我按入楼顺序在哪里建造建筑物,则应该全部解决,并且应该是可以完成的最佳时间。

例如,我应该遍历列表中的建筑物并在每个元素上运行DFBB,目标是查看建筑物是否可以建造。但是,时间限制也应该设定什么?在这种情况下,界限是什么意思?仅仅是成本吗?

请解释如何在列表上运行此功能,以便找到构建该功能的最佳路径。这篇文章很容易阅读,但是我需要一些帮助来理解它的工作原理以及如何将其应用于问题。

文章链接https://ai.dmi.unibas.ch/research/reading_group/churchill-buro-aiide2011.pdf

解决方法

开始状态S是游戏开始时的初始状态。我相信您有100个地雷和指挥中心,还有12个? SCV,这就是您的开始。

目标是您要拥有的建筑物的列表。满足条件也是在目标中建立的。

时间限制是您愿意花费多长时间来获得结果。如果将其设置为5秒,则可能会为您提供次优的解决方案,但是它将在5秒内完成。如果算法完成搜索,它将更早返回。如果您不在乎,请不要使用它,但请确保为文件写解决方案,以防万一。

边界b是构建所有内容的游戏时间限制。您最初将其设置为无穷大或一些明显的值(例如10分钟?)。找到解决方案时,b会更新,因此您发现的每个新解决方案(游戏中)都必须比上一个更快。

一些注意事项。确保可能的操作(步骤9中的孩子)包括什么都不做(等待更多资源)和构建SCV。

可能缺少的另一件事是SCV移动速度的正确建模。这些单位需要搬到某个地方来建造东西,而且还需要时间才能恢复采矿。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。