一百个三角形进化成Firefox

本文遵守首页上的Common Creative 署名-非商业性用途-禁止演绎 2.5 中国大陆。非商业性网站转载请注明作者以及出处,谢谢。

最近写了个遗传算法的程序~~~这是我第一次练习写这个~~~以前想用这个方法很久了但是一直没有碰上合适的问题~~~

我的程序的作用就是用100个三角形来画某个给定的图片,在测试里边我用了Firefox的图标和我自己的照片。毫无疑问这是受上次那个用多边形画蒙娜丽莎的人启发的,虽然严格来说他的程序不能算是遗传算法。遗传算法需要有一个种群,然后是竞争、杂交、变异。我的程序种群有30个,杂交是交换三角形,变异率是每个参数1/2048(一个个体有100*(3*2+3)=900个参数)。其实遗传算法写起来也不难,就是不容易找到合适的问题。

绘画方法是多种颜色三角形重叠的点求这些颜色与背景颜色的平均值,背景颜色是252 252 252。

下面这个例子经过了大概三十万代的迭代,用时不到一个小时。

不说废话了,上图:

原图:

firefox

100个三角形:

result_2

组合过程(不是进化过程!!):

conclusion

数据是:(格式为x1 y1 x2 y2 x3 y3 r g b)

62 88 39 91 8 24 209 1 1
89 61 74 83 55 85 255 254 0
41 59 9 8 10 9 248 162 148
34 35 50 32 58 61 193 255 255
35 63 48 70 74 54 1 0 0
37 79 17 58 76 80 255 222 5
94 43 78 16 77 67 253 117 1
81 76 92 42 73 13 255 250 0
53 30 5 57 9 24 229 96 1
7 22 12 12 17 14 252 227 196
73 52 35 65 61 68 1 0 1
73 51 56 70 59 31 0 1 18
65 64 52 35 67 37 0 5 130
5 35 19 15 44 33 159 23 4
63 8 64 30 88 23 196 114 1
90 56 53 82 88 29 255 230 1
11 14 3 52 68 65 224 67 0
77 82 76 62 45 74 255 199 0
12 70 16 54 74 85 255 199 2
37 30 28 8 66 9 85 226 240
35 77 79 61 66 89 253 85 0
93 53 83 78 89 27 123 80 15
50 70 72 59 62 30 0 1 7
3 53 26 88 31 43 167 4 1
5 36 40 17 12 74 202 116 0
41 37 10 17 7 59 252 243 0
74 85 45 94 10 70 67 0 0
33 18 6 61 25 85 214 3 0
59 9 63 27 35 58 160 220 221
26 25 6 64 4 46 191 17 0
27 88 19 42 67 88 232 0 0
30 51 42 55 46 31 1 62 254
44 71 78 32 71 60 0 0 247
62 13 39 24 56 43 0 62 68
67 50 81 48 34 27 0 1 0
80 77 63 62 29 32 136 87 11
4 37 41 14 9 69 228 149 1
74 39 42 70 72 64 0 1 18
42 10 56 50 54 60 143 231 255
10 70 5 56 23 84 18 0 0
29 43 36 16 28 21 253 150 0
51 35 11 17 23 79 253 183 0
39 69 79 38 60 69 0 1 65
73 46 55 37 59 69 0 1 4
71 56 52 73 63 31 0 0 5
65 65 74 42 41 67 0 1 1
54 91 17 17 28 89 157 0 0
44 6 49 39 68 14 187 254 255
60 49 38 55 29 45 0 86 254
12 75 37 19 39 94 147 0 0
17 49 80 28 66 81 6 0 0
9 37 56 93 83 78 155 30 1
66 43 71 54 19 14 1 47 96
77 83 15 72 8 53 254 231 0
74 43 38 66 61 68 0 0 1
52 58 57 40 32 70 255 86 1
9 64 62 91 85 74 225 119 1
52 15 32 58 79 31 0 156 239
33 7 57 53 59 53 134 218 252
19 80 59 49 2 93 253 252 253
62 43 78 53 3 6 251 252 253
24 86 3 51 75 84 210 0 0
39 25 42 7 86 39 196 191 210
52 33 58 69 73 46 0 0 6
28 66 91 5 77 18 253 253 253
89 31 58 89 83 74 255 254 0
10 18 48 32 10 70 218 14 0
40 67 49 62 58 70 1 0 255
74 56 60 26 56 71 1 0 108
77 66 57 67 55 90 237 2 1
79 48 64 25 37 9 168 237 238
49 73 66 9 71 60 1 0 39
45 55 12 21 63 73 216 110 3
89 26 70 87 77 17 229 177 0
60 29 77 47 75 27 0 255 255
79 46 73 22 34 56 0 45 129
20 53 74 49 48 31 0 1 85
55 12 33 55 81 36 3 179 250
65 30 74 27 75 62 254 255 255
40 35 60 51 31 52 0 213 255
42 67 73 60 73 41 1 1 18
70 63 68 19 80 30 0 0 25
8 82 14 76 35 55 249 238 228
43 76 9 19 16 80 227 88 1
66 66 48 71 31 59 0 0 1
31 48 56 25 40 55 0 218 254
24 87 7 66 6 55 146 0 1
11 75 42 93 9 61 146 1 0
40 10 57 51 43 52 115 210 235
69 89 10 45 11 67 232 231 1
45 5 35 27 73 34 95 213 247
17 81 77 67 48 92 199 1 1
85 22 56 84 83 74 255 152 0
54 4 84 36 39 6 1 5 117
57 6 71 12 65 27 1 1 1
56 58 14 73 3 41 255 72 1
42 4 41 27 19 14 1 63 147
55 56 35 37 78 38 1 111 248
84 57 27 21 84 57 57 6 1
28 52 27 61 60 57 255 242 1

Advertisements

5 thoughts on “一百个三角形进化成Firefox

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s