1

I need to develop a system to select a team out of a database. Is it possible to use a Genetic algorithm to get the initial population (chromosomes) representing players as some identifier. Each identifier have its genes in a database which are used to apply various rules (such as requirements to be team leader, etc.).

Is GA helpful for such scenario?

4

1 回答 1

1

是的,可以

首先,进化算法直接作用于个体的基因型。说明您正在使用标识符来链接算法中的个人要么是实现细节(对问题无用),而且似乎完全是错误的(您应该将基因型加载到内存中以便更快地访问)。

你的问题是一个简单的组合问题。对于给定数量的可用球员 n,我们希望从中组成规模为 k 的团队,总共n! / (k! ⋅ (n - k)!)有可能的组合。这通常是当今计算资源无法处理的太多可能性。进化算法允许(除其他外)优化给定函数太大而无法解析解析或不存在解析分析。

您似乎对如何实施这种过程感到困惑。首先,选择一个好的数据表示对于获得好的结果很重要。您应该首先说明要优化的每个特征以及它们与性能的关系以及交叉关系是否会影响全局性能。

但是,您应该小心:遗传算法可能会陷入局部最大值,请确保通过不要惩罚相对较好的解决方案或使用陡峭的选择阶段来保持您的遗传多样性较高。

话虽如此,我给你的分析是纯粹的组合观点。从团队的角度来看,在上下文很重要的情况下,进化算法不会是有效的。例如,如果你需要 3 名前锋、2 名后卫和一名守门员,你应该简单地对你的球员名单进行 3 次排序,首先根据好前锋的特点,然后是后卫,最后是守门员,并取最佳元素(排序后的第一个元素) ) 组成你的团队。与使用进化算法相比,这将更快并为您提供最佳结果。如果您不了解所玩游戏的机制或最佳游戏的内部工作原理,那么进化算法(例如遗传算法)将是首选。

尽管如此,开始玩弄遗传算法以了解它们的可能性和局限性是一个好主意。一个好主意是从一个简单语言的简单框架开始,例如Python 中的deappyevolve来尝试你的想法。

于 2013-07-08T20:13:23.043 回答