编程前,关于时间的想法

来源:互联网 发布:流程图制作软件 编辑:程序博客网 时间:2024/06/15 13:29

一亿次加法运算,就能耗费我5秒钟的时间;那么到了十亿次,50秒,勉强可以接受;100亿次,辛苦;1000亿次——等一个多小时!人都疯掉了。
所以,我干脆宏观点,考虑程序执行的时间吧!
就拿多目标函数计算的问题来说,精确到小数点后5位,那么意味着从0.00001到0.99999需要十万次计算。两个决策变量,都从0~1,那么就需要10万的平方次的计算量,再考虑一下f(x)的复杂程度(至少比加法运算麻烦1000倍吧?),再加上实际问题中是“多个目标”。保守点估计,计算量是:10万*10万*1000*2(2个目标函数)。
和我们100亿次的“辛苦程度”比较一下,相差2000倍;也就是说,当我们辛辛苦苦等待了8分钟以后,需要完成的任务才刚刚进行了2000分之一!
可想而知,要在有效时间内得出可观的结果:就是要进行这样的探索:尽可能地将时间花费在“有效”的地方。如果需要2000次才能遍历完全的空间,最好能够一次就找到重点!

将这个比例放大:从0.00001到0.99999,我不可能以每次0.000001的步长进行累加,而是增加2000倍,每次步长0.02——这实在是很大的跨度了(这种考虑给我实际的编程操作留下了把握的余地呢......)。
对比一下tsp问题的难度:144个城市,问题的规模为5.55e+249,除以100亿,结果为5.55e+239——可想而知嘛!既然遗传算法能够将tsp问题求解出来,那么对于多目标这样的问题,能够贴近于理论解,已经是相当有可能的了。