我正在设计一款游戏,其中AI需要确定哪种盔甲组合将为角色提供最佳的整体状态加值.每个角色将有大约10个属性,其中只有3-4个是重要的,而那些重要的属性,其中一些将比其他角色更重要.
护甲也将提升1或所有属性.例如,一件衬衫可能会给角色的int和+2耐力提供+4,同时,一条裤子可能有+7力量而没有别的.
所以,让我们说一个角色有一个健康的盔甲选择(5双裤子,5双手套等)我们已经指定Int和Perception是这个角色最重要的统计数据.我怎么能编写一个算法来确定哪个盔甲和物品组合会导致任何给定属性中的最高值(比如在这个例子中Int和Perception)?
这非常简单.首先,一些假设:
你没有提到这一点,但据推测,一个人最多只能佩戴一种特殊位置的盔甲.也就是说,你不能穿两条裤子或两件衬衫.
据推测,一件装备的选择也不会影响或与其他装置发生冲突(除了在同一槽中没有多件衣服的限制).也就是说,如果你穿裤子,这绝不会妨碍你穿衬衫.但是,更加巧妙地注意,我们假设你没有通过佩戴两个相关项目获得某种协同效应.
假设您要定位统计X.然后算法如下:
证明:获得更高X统计数据的唯一方法是,如果有一个项目A提供的X比其他组中的其他项目更多.但是我们已经按降序对每组中的所有项目进行了排序,因此不会有这样的A.
如果违反假设会怎样?
如果假设一个不正确 - 也就是说,你可以在每个插槽中佩戴多个项目 - 然后不是从每个组中挑选第一个项目,而是从每个组中挑选第一个Q(s)项目,其中Q(s)是可以在插槽中去的项目数小号.
如果假设2不成立 - 也就是说,项目确实相互影响 - 那么我们就没有足够的信息来解决问题.我们需要具体了解物品如何相互影响,或者被迫通过蛮力尝试每种可能的物品组合,并查看哪些物品具有最佳的整体效果.
如果你想一次定位多个统计数据,你需要一种方法来判断"有多好".这被称为健身功能.您需要确定N个统计信息相对于彼此的重要程度.例如,你可能会认为每个+1 to Perception值得10分,而每个+1 to Intelligence只值6分.您现在有办法评估项目相对于彼此的"好".
一旦你有了这个,而不是优化X,你改为优化F,即适应度函数.对于一个统计,该过程与上述过程相同.