我可以自由支配我在学校的期末作业中所做的事情,关于修改一个简单的 Direct-x 游戏,该游戏目前只是让相机跟随一些过山车轨道。我对遗传算法产生了兴趣,并想借此机会应用并学习一些有关它们的知识。但是,在这种情况下,我想不出任何可能应用的方法。我有哪些选择?
2 回答
根据您的查询,您似乎想使用遗传算法来获得优化的过山车轨道。对于任何优化问题:
- 您首先需要将所需的解决方案分解为其组件或设计变量。
- 一旦你有了“变量”,你就需要考虑用它们来制定目标函数。通常,您会以所需的解决方案将其最小化的方式对其进行编码。
- 然后你需要决定在你的遗传算法中使用的编码方案。实编码遗传算法在您有连续搜索空间的情况下更有用。
这些是第一件事。拥有它们后,您需要决定交叉和突变策略。然后最后你必须决定,是想在你的问题中使用现有的 GA 代码,使用一些库还是自己编写代码。
一个更具描述性的问题将帮助我添加更多内容。您希望使用哪种语言工作?
编辑:我自己没有使用它,PARDISEO 是一个基于 C++ 模板的库,其中包括遗传算法。此外,您可以在http://www.iitk.ac.in/kangal/codes.shtml上查看 Real Coded GA 的 C 版本
从您的(OP)评论中:
从字面上看,它所做的只是加载一个带有一些轨道坐标的 xml 文件,构建轨道,并让相机跟随这些轨道,就像你在过山车上一样。所有这些都在大约 10 万行代码中
我认为您希望将轨道坐标视为可能的设计变量,看看它们的哪些组合可以为您带来优化(在成本、更好的视野、舒适度等方面),然后看看您可以获得什么数学关系最好的一套。然后,您就可以将 GA 应用于它了。:)
过山车成功的标准是什么?一旦你可以定量地描述它,你就有了适应度函数。那么你需要考虑过山车的组成部分是什么?它甚至可以分解成碎片吗?如果是这样,那么你就有了你的“基因”,一个单独的过山车是一种可以针对适应度函数进行测试、突变或交叉的解决方案。然后你制作一个过山车种群,对种群的样本量进行交叉和变异,并将适应度函数应用于个体。然后,您为下一代保留最适合的个体,并再次重复该过程。