处理需要GA的问题。我已经完成了所有这些工作,并花费了相当多的时间来修改fat并在优化代码之前优化编译器。由于GA是作为用户输入的结果运行的,因此它必须在合理的时间内找到解决方案,否则用户界面将失去作用,并且根本无法正常运行。我在iPhone 3GS上得到这个二进制遗传算法解决了约0.1秒的27个变量问题。遗传算法优化 - 使用-O3标志
为了达到这样的性能水平,整个遗传算法用C编码,而不是Objective-C编码。
为了进一步减少运行时间,我正在考虑将“-O3”优化开关仅用于求解器模块的想法。我试过了,它将运行时间缩短了近一半。
我应该通过将优化设置为“-O3”来关注任何问题吗?请记住,我在文件级而不是整个项目都是这样做的。
-O3通常还是比较安全的,只要你写的代码是“标准的”,并且不做任何非常具体的诡计。即便如此,由于iPhone的编译器只需为少数几个系统生成工作代码,它可能会好起来的。 – 2011-04-10 03:06:53
只需添加,如果您担心UI拖延,您可能需要考虑在并发线程上执行计算。 – David 2011-04-10 03:13:05
我想过要添加一个并发线程。问题在于现在编写代码的方式我没有数据来启动GA,直到用户与UI进行交互。为了启动一个单独的线程,我不得不扩展主状态机来做一些预见性的工作,并预测GA将需要什么。不是不可能的,但如果我可以通过让GA更快地避免它,我宁愿继续处理更紧迫的问题。我应该补充一点,GA的输出决定了下一次UI更新的样子。 – 2011-04-10 03:20:37