我认为不同的机器对此有不同的答案,让我假设这个测试是在同一台机器上进行的。
实际上我在想是否值得对我的一个问题实施遗传算法,我认为它具有大约 20 的组合/排列!(!是factoria,它不是真正的20,它可能或多或少)。
如果数量在允许的范围内,我将使用遗传算法的蛮力(循环遍历所有可能)插入,因为设计 GA 和可能性因子(交叉,突变率)并不容易。
我将如何确定 GA 是否适合问题域?
我认为不同的机器对此有不同的答案,让我假设这个测试是在同一台机器上进行的。
实际上我在想是否值得对我的一个问题实施遗传算法,我认为它具有大约 20 的组合/排列!(!是factoria,它不是真正的20,它可能或多或少)。
如果数量在允许的范围内,我将使用遗传算法的蛮力(循环遍历所有可能)插入,因为设计 GA 和可能性因子(交叉,突变率)并不容易。
我将如何确定 GA 是否适合问题域?
好问题。没有准确的答案,这取决于一些“经验法则”和一些逻辑。
我的建议:
当然,很可能穷举搜索和 GA 都不适合您的问题。有些问题可以通过其他方法更好地解决,如果你能找到一个使用动态规划或分而治之的智能算法来解决你的特定问题,那么你可能会发现你 7700 万年的穷举搜索实际上可以在一毫秒。一旦问题变得足够大,更好的算法总是会击败原始计算能力。
我认为您应该调查 Hadooping 或并行化您的解决方案。GA 似乎非常适合这种方法。
像这个:
http://geneticalgorithms.ai-depot.com/Libraries.html
这对我来说比担心你原来的问题更有意义。答案是毫无意义的,因为对您而言唯一重要的衡量标准是循环可以多快处理包含您的代码的主体。
20!是一个很大的数字。
执行 1 次代码迭代需要多长时间?
您可以简单地使用这个整数增量来计算循环数(甚至使用像手表秒针这样的粗略计时器并在间隔结束时读取总数)。
x=1;do while x!=0 x=x+1 循环
但是您的代码不会这么简单,处理每个循环需要更长的时间,而且这不考虑硬件的处理器速度(这是您主要关心的问题)。像达菲莫所说的那样,有一些环境因素使这个问题变得毫无意义。
祝你好运找到你需要的东西。