自从看到松鼠会的文章之后,对遗传算法总算脱离了“十窍已通九窍”的状态
真是好文呀!以贝壳的故事开头,讲得很生动透彻
于是立刻就起了动手的打算,结果因为OpenCV方面的不顺利,又额外拖了好久
在五月病中终觉实在太不像话,总算有一天把OpenCV的HelloWorld搞定了(说来还想写篇日志讲OpenCV的HelloWorld来着,结果感觉不值得一写就永久草稿箱了),之后发现OpenCV的基本图形API竟然不支持透明度!
于是换为对像素的直接操作,程序倒是意外地很快写完了;毕竟以前上课无聊的时候,还曾写过伪代码,自然会快一些了
一开始速度非常非常龟,因为自己在画三角形时是用的点穷举看在不在三角形内的算法,所以慢的不行;
后来网上搜了个和bresenham有点像的算法,效率大大提升(大概是10倍以上吧),还真是要感谢数字媒体课上的李同学,不是她那个演讲介绍带路的话,估计又要卡一阵了
但是最后跑的效果……非常非常差
1.效率极其差劲
目标是用100个透明三角形拼成一个100x100像素的火狐ico,种群大小100的情况下一代要0.3秒(当然越多速度越慢)
真是慢死了!跑个2w代要1小时!让人无法忍受啊
但是又不知道效率是慢在哪里。评估函数太慢?我只能想到遍历啊;把每次的销毁->重新生成改为直接在原基础上复用内存,速度也只从100代的30秒缩减到27秒而已,还要付出代码可读性的下降。
2.效果极其差劲
怎么说呢,一句话概括,跑了几万代也不见有个像的模样!细节就不要求了,好歹大体轮廓给我出来一个啊求你了TAT
产生算法由完全随机改为直接从原图像取中间点像素,虽然有轮廓但是还是几万代不见有改善的啊喂
难道是评估算法不对头?我是挨个像素判断RGB绝对值,想不到更容易想的了……
难道是种群数量太小?100的种群大小,那就是1w个三角形,现在已经够慢的了……
难道是约减和交配有问题?我承认这边写的很粗糙,就是一个排序然后把后面几位全砍了;交配无论用随机还是1位优先,看上去区别都不大啊
看来得慢慢debug了……养贝壳之路任重道远啊
在记坑的笔记本上,还写了蚂蚁寻路,觉得那个也挺好玩的;但是不知道这两个算法我究竟应该投入多少时间才好,毕竟方向还没选定……
====================================================================
真是好久没写流水账了;前一阵还和研习密码学的女生就孙同学的上课水平进行了讨论,对面的结论却是“讲得不怎么样”。
说来能谈论这个话题,还是因为自己的日志有幸被人看到了——总算写博客有点动力了啊!每天寂寞地翻着连接log的我是多么凄惨
我觉得双方有着不同的结论,可能与我之前的经历有关:
作为一个关注同人圈的人,也一直被同人圈内鼓励创作、相互欣赏的气氛所感染(实际上正是这种气氛使得我无比向往这个小圈子),经常会注意到这种现象:
当自己熟识的人发表作品时,往往着眼点并不是内容究竟有多精彩,而是作者花了多少心血、有多辛苦;即使抱着客观之心去体验内涵,也往往因为现实关系而得到比常人更深刻的理解,评价标准也会适度放宽。
一旦从这个角度去体验、评判作品,褒奖之词就再也说不完了……
不过我还要坚持我的观点,孙同学的确讲得很不错呀
昨晚上还和未闻姓名的女同学(其实是3班的,心里也有谱,但是毕竟开学都好几个月了我也不好意思去确认……)进行了聊天,对面真是目标好明确每日努力,令我倍感压力……
在入学时就被批评说“找不到方向可不行”,没想到开学三月后依然如此
在别人都找到目标,并带着动力奋力拼搏前进时,我却仿佛跌入了方向不可知的漩涡,漫无边际地原地打转,盘旋下沉
真是太糟糕了!五月病赶快好起来吧