我有一个游戏应用程序,其中包含必须跨越迷宫的角色.游戏可以生成数千个不同的迷宫,角色可以根据用户的选择移动并手动穿过迷宫.我们需要增加显示每个迷宫的正确方法的可能性.因此,我们添加了根据xml文件移动字符的可能性.
这个XML文件非常复杂,通常大约有三十五万行.让我们说它在以下结构中(但更复杂):
heavy 1250> 23.43 0.44 run 1 none light 4223> 233.43 0.32 walk 1 none heavy 1231> 84.134 0.454 run 2 none heavy 932> 34.43 0.50 duck 1 none heavy 1250> 23.43 0.44 run 1 none light 4223> 233.43 0.44 walk 1 none heavy 1231> 84.134 0.454 run 2 none heavy 932> 23.43 0.44 duck 1 none
目前,我们有能力使用CNN算法对每个迷宫进行分类,并生成一个表示离开迷宫的方式的xml - 这意味着如果字符将根据该文件移动,它们将穿过迷宫.该算法已经过测试,无法通过任何方式进行更改.
问题是,生成的文件大多数时候不是最好的(并且通常非常明显).穿越迷宫有不同的,更快的,更好的方法.
我们还有数千个(我们可以根据需要获得尽可能多的)文件,这些文件是为保存的迷宫手动创建的,因此它们代表了一种优雅而快速的迷宫.理想的目标是,有一天,我们的程序将学习如何生成这样的文件而无需人们手动创建它们.
总之,与硬编码的XML文件相比,我们有大量的程序生成的XML文件.有成千上万对 - 程序生成的文件,以及一个人创建的"理想"文件版本.(并且我们可以得到无数个这样的对)有没有办法,使用成千上万的对,制作第二步算法,将"学习"应该在生成的XML文件中进行哪些调整,使它们更像硬编码的?
我不是在寻找一个特定的解决方案,而是一个让我走的总体思路.我希望自己清楚,但如果我错过了一些信息,请告诉我,我会加上它.
我想你正在咆哮错误的树.将"不可变"算法的输出转换为基于用户提供的解决方案的更好解决方案的机器学习算法似乎比它的价值更麻烦.
对我来说,这听起来像Dijkstra算法的应用,因为你试图找到迷宫中的最短路径,这就是这个算法的设计目标.当然,您心中所需的任何最短路径算法也足够,但Dijkstra是更常用的方法之一.根据您在帖子中提供的评论:
最短持续时间的解决方案并不总是最好的,有许多不同的因素,在此过程中丢失的生命数量,浪费的能量(当然是游戏中的生命和能量),以及难度等等.手写的解决方案是有时候持续时间较长但风险较小,资源使用和浪费较少
图表上的边缘权重不仅仅是距离,还应考虑与导航迷宫相关的所有这些成本.由于这非常复杂,使用不同的边缘权重计算提供多个"最佳"解决方案也可能是有用或有趣的,这可以最大限度地减少每个资源(时间,生命,能源......)的使用以及一个或更多,以最小化一些组合分数.
另一件事:如果这是真的:
比较并不那么容易
您如何确定用户解决方案更好?
最后,你在原帖(强调我的)中说了以下内容:
目前,我们有使用CNN算法的图像分类analayze每个迷宫,并产生一个代表走出迷宫的XML的能力-这意味着如果字符将根据该文件被移动,他们将穿越迷宫.该算法已经过测试,无法通过任何方式进行更改.
但为什么呢?这种措辞的方式使它听起来像你编写的算法,所以为什么不能改变它?