Focusheart's World new era is now

10Aug/100

遗传编程 Round-Robin Tournament

循环赛说起来很简单,就是让种群里每两个进行比赛,然后将胜者弄出来继续

Del.icio.us :

10Aug/100

遗传编程 Grid War

嗯,有了进化的程序之后,可以用一个小游戏来进行测试

书里给的是一个叫做Grid War的东西

说起来很简单,就是在一个矩阵里有两个玩家,当A跑到B的所在位置时,就可以赢得比赛。每人一局只能移动一步,不能超出边界,也不能与上一次移动方向相同,否则判定输。竞赛的程序很简单:

def gridgame(p):
# Area
area=(3,3)
maxmove = 50
# Last Move
lastmove=[-1,-1]
# Location of player 1
location=[[randint(0,area[0]),randint(0,area[1])]]
# Location of player 2
location.append([(location[0][0]+area[0]-1) % area[0]+1,
(location[0][1]+area[1]-1) % area[1]+1])
# Begin game
for o in range(maxmove):
for i in range(2):
locs = location[i][:] + location[1-i][:]
locs.append(lastmove[i])
thismove = p[i].evaluate(locs)%4

# the rule
if thismove==lastmove[i]: return 1-i
lastmove[i] = thismove
# 0:left,1:right,2:up,3:down
if thismove==0:
location[i][0]-=1
# limit in the border by hard code
if location[i][0]<0: location[i][0]=0
elif thismove==1:
location[i][0]+=1
if location[i][0]>area[0]: location[i][0]=area[0]
elif thismove==2:
location[i][1]-=1
if location[i][1]<0: location[i][1]=area[1]
elif thismove==3:
location[i][1]+=1
if location[i][1]>area[1]: location[i][1]=area[1]
if location[i]==location[1-i]: return i
return -1

如果A赢了,返回0,B赢了,返回1,平局的话,返回-1

运行了一下:

p1 = gp.randomtree(5)

p2 = gp.randomtree(5)

gp.gridgame([p1,p2])

基本上很弱……

看p1和p2的函数就知道,没什么道理嘛……

>>> p1.display()
p1
>>> p2.display()
subtract
isgreater
p4
3
p1

不过接下来的才是重点,要使用循环赛来进行竞赛了

Del.icio.us :

10Aug/100

遗传编程

《集体智慧编程》挺好玩的,特别是第11章的智能进化,代码很有趣

不需要额外安装太多东西,只要有个python环境,比如在windows上用idle就行了,然后按照书上的代码一点点的来构建这个小程序,就能看到一点点进化的东西出现。

基本的树和表现构成之后,可以开始构建初始的种群,用python来实现的方法确实很简单,只要几步就可以,不过也是写书的人很厉害,把不需要的东西都剥离出去,余下的都是最核心的功能。代码很简洁

变异的函数很有趣,不过变化的过程还真的很随意。

还有杂交和变异的过程,也都很有趣

没想到竟然真的可以把这个模拟出来:

x^2+3x+2y+5

不过很复杂……:

add
add
add
add
isgreater
7
isgreater
multiply
isgreater
6
p0
multiply
3
p0
subtract
multiply
10
p1
isgreater
4
p1
p0
p0
4
if
8
add
multiply
p0
p0
add
add
p0
p1
p1
if
isgreater
subtract
7
if
p0
if
subtract
p0
subtract
8
6
p1
p0
multiply
3
multiply
subtract
p0
p1
add
3
p0
7
p0
p1

嗯……我自己也搞不懂,不过据说通过剪枝,可以让这个函数很简单的非常接近原函数。不剪了……太长,应该是要依靠剪枝算法来完成这个工作,手工的受不了。

Del.icio.us :

6Aug/100

告一段落

总是没完没了的……拖啊拖的,心情也跟着一起低落

不过总算是有个结局了,而且不算很糟糕,虽然来得很晚

还有很多的事情要做,心里有些放不下,但是还能怎么样呢

以前总觉得自己能做这个做那个的,到现在才发现自己其实能做的东西不多

设计了一个又一个的项目,却没有一个能够从设计走向实现

自己越来越急躁了,却在不断地告诉自己要放下一些,慢一些

不止是给别人这么说,对自己也是如此

别着急,但也别荒废,抓紧时间

遇到的新问题都会被解决,只是自己的内心,一定要清楚

已经付出了那么多,不知道下来会怎么样……

祝福自己。

Del.icio.us :

Tagged as: No Comments
5Aug/100

BMY Astrology LEO

嗯,想到曾轶可的一个歌曲了...

20100722_astrology_leo2.jpg

Del.icio.us : ,

Tagged as: , No Comments
5Aug/100

自然语言处理的一个blog

嗯,逛呀逛,逛到一个blog

Del.icio.us : , ,
Technorati : , ,
Zooomr : , ,
Flickr : , ,

5Aug/100

Zoundry Raven Test

话说……这个东西还是很方便的嘛

能想到的东西都有人写好了,真方便~

嗯,比起ScribeFire,这个更像是个Thunderbird客户端……nb~

Tagged as: , No Comments
5Aug/100

ScribeFire Test

不知道这个东西能不能支持离线?不过实际上……一般有这个需求么?

测试一下

Tagged as: No Comments
5Aug/100

太长时间没写了……

都不知道整天在忙啥呢……

Tagged as: No Comments
4Aug/100

Life

好好活着
总想探究,但是不一定是自己真的希望的。这个社会和自己曾经以为的那个社会差别很大……不管怎么样,既然已经来到了这里,就做好自己的准备,来接受各种。
一直以为自己的内心已经成长了很多,但是现在看来还是不够吧。我还需要更多的历练和磨练,否则只能在现实面前损失自己和自己关心的人吧。
没什么好,也没什么坏,面对事情只要能做出自己的选择,坚守自己内心的原则,不后悔就好了吧。踏出的每一步,请好好继续走下去。

Tagged as: No Comments