看到王诺岳真懂计算机,也会编程,王凯旋放心了。他把房间钥匙放在桌子上,说道:“你明天早上离开的时候,把钥匙交给门卫。热水瓶里还有水。厕所在走廊尽头。晚上太困了的话,可以在沙发上眯一会。如果有其他的事,就去问门卫,他是要通宵值班的。我明天还要上班,就不赔你熬夜了。”
王诺岳兴奋地答应了,然后又敷衍地和王凯旋说了声拜拜。王凯旋笑着摇呀摇头,带上门走了。
王诺岳把书籍和资料从包里拿出来,又给自己倒了杯水,他就沉侵在程序的世界里了。时间在键盘的敲击声中流逝,转眼就到了第二天清晨。
六点差一刻,窗外曙光初现,王诺岳保存好程序,收拾干净自己的东西,离开了机房。他把机房的钥匙交给了传达室的门卫,就骑着车回家了。
他昨晚状态很好,顺利地完成了输入输出的部分,就是一些命令行的输入,屏幕的输出,以及文本文件的读写,这是他为了棋谱的输入输出准备的。另外就是一部分数据结构和算法。
为了挤压计算机的性能,他没有选择c++,而是选择了c语言。虽然面向对象的c++比c好用,代码也简单一点。以后,执行效率也会随着编译器的代码优化,和c语言越来越接近。但现在,turboc++的代码优化还不够强大。同样的程序,c++运行速度要慢一点点,内存消耗也大一些。
当他回到家里的时候,早晨的广播还没响。不过,陈凤华已经准备好了早餐,在等着他了。今天是葱油花卷和甜酒冲鸡蛋。
“回来了。赶快洗个脸来吃饭。”陈凤华说道。
“好。”王诺岳答应着。他放下手中的大包,飞快地洗脸漱口,坐在了桌子上。因为王盛茂和王轩还在睡觉,现在只有王诺岳和陈凤华一起吃饭。
“昨天晚上过得怎么样?”陈凤华看着狼吞虎咽的吃东西的王诺岳,问道。
“都还好。就是面包和饼干不够吃,有点饿。今晚得多带点。”王诺岳低估了熬夜的能量消耗。
“那就多带点,别饿着了。”
“王凯旋昨晚打电话给我们了,他说你计算机很熟练。你爸很是吃惊。”过了一会,陈凤华又说道。其实,何止是吃惊,夫妻俩都讨论了半晚上,觉都没睡好。
“都说了我是吃这碗饭的人。你们等着看我的成果吧。”王诺岳只能坚持到底。
“计算机就那好玩,看你这么兴奋?”
“吃完饭就去睡觉,要好好休息。”
餐桌上,王诺岳一边吃着花卷,一边应付着陈凤华的唠唠叨叨。
吃完饭,王盛茂和陈凤华去上班了。王诺岳回到自己房间睡觉。“如果连续熬夜,就算年轻,一天也要睡上四五个小时,否则身体受不了。”这是有三班倒经验的老妈告诉他的。
就这样,王诺岳每天上午睡觉,下午书面设计,晚上写程序。
第二天,他完成了数据结构和博弈树的搜索算法。
第四天,他完成了核心的计算机走棋的逻辑。这时,一个懂基本规则的ai程序已经完成,虽然任何一个初学者都可以轻松击败它。
王诺岳想,如果加个漂亮点的界面,增加一些辅助功能,把这个ai象棋程序变成他的本科生毕业设计,多半也是能通过的。
接下来就是优化了。人工智能是典型的入门易,优化难的东西。现在,王诺岳就要依靠脑海中的记忆了。
一个卒子的价值为10的话,那马应该是50,还是60?车应该是80,还是90?过了河卒子价值又该是多少?如果从零开始,也许要成千上万次对局的,才能让ai程序得到优化后的数值。
可王诺岳在梦境中,做过多次中国象棋和人机博弈软件的深入分析。所以,他可以凭借记忆,把优化后的权重值(子力价值)加入了程序。并一点点的改进局面评估函数,总子力计算公式。
可光函数正确,没有效率的话,程序也跑不起来。没人可以忍受计算机一个小时走一边步棋。于是,各种启发式算法,对博弈树的α-β剪枝等等优化,也被他加入了程序。
今天七月二十日,王诺岳在机房奋战的第九个晚上。在限制搜索深度为4的情况下,也就是预看四步棋的情况下,王诺岳的程序在386机器上的运行速度终于可以接受了。
看着程序在计算机屏幕上打印出
“iwin!(^_^)”
王诺岳长出了一口气。这已经是他连续第十盘被ai击败了。虽然他的水平很烂,但还是可以看一两步棋的。可以找张大爷试试了,王诺岳心想。
张大爷就是今天值班的门卫。这些天,王诺岳困得不行的时候,就去找他聊聊天。意外的知道了他会下象棋,还在职工比赛中得过二等奖,号称是全厂前十的水平。
从包里摸出今天特意带来的一包白沙烟,王诺岳起身下楼。
“张大爷,帮个忙。”王诺岳一边说,一边把烟递了过去。
“有事你说就是,还拿什么烟啊。”张大爷高兴的接过烟。精品白沙,和他一天的工资都差不多了。
“我编了个会下棋的程序,想和大爷过过招。”王诺岳说道。
“计算机怎么和人下棋?”大爷非常困惑。
王诺岳不觉得自己能解释清楚人工智能是怎么回事,就直接说道:“大爷,你知道怎么记录棋谱吧?”
“我当然知道,不就是马八进九,车9平3。”江麓十大象棋高手之一的张大爷觉得自己被小看了。
“我们先把棋盘摆好。然后我到计算机室去,给你打电话。你把你下的每步棋都报给我。我呢,再把电脑的每步棋报给你。你帮电脑把棋挪动一下。”王诺岳说道。张大爷不能离开传达室,王诺岳不能离开电脑,两人只好通过电话下棋了。
“行。”看在白沙烟的分上,再加上自己也无事可做,张大爷答应了。
王诺岳笑嘻嘻的和张大爷摆好棋局,就回到了计算机室。启动了程序之后,他拨通了传达室的电话,开始了第一场人机对战。
二十分钟后,王诺岳看着屏幕上连续打印出来的三行信息:
“hong:che1激n1”
“激angjun”
“iwin!(^_^)”
于是他对着电话说道:
“红棋:车1进1”,
“将军”,
“我赢了”
电话里久久没有声音。过了一会,电话里传来张大爷的吼声:“再来一盘。这次我拿红棋先走。我就不信赢不了一台机器。”
王诺岳兴奋地答应了,然后又敷衍地和王凯旋说了声拜拜。王凯旋笑着摇呀摇头,带上门走了。
王诺岳把书籍和资料从包里拿出来,又给自己倒了杯水,他就沉侵在程序的世界里了。时间在键盘的敲击声中流逝,转眼就到了第二天清晨。
六点差一刻,窗外曙光初现,王诺岳保存好程序,收拾干净自己的东西,离开了机房。他把机房的钥匙交给了传达室的门卫,就骑着车回家了。
他昨晚状态很好,顺利地完成了输入输出的部分,就是一些命令行的输入,屏幕的输出,以及文本文件的读写,这是他为了棋谱的输入输出准备的。另外就是一部分数据结构和算法。
为了挤压计算机的性能,他没有选择c++,而是选择了c语言。虽然面向对象的c++比c好用,代码也简单一点。以后,执行效率也会随着编译器的代码优化,和c语言越来越接近。但现在,turboc++的代码优化还不够强大。同样的程序,c++运行速度要慢一点点,内存消耗也大一些。
当他回到家里的时候,早晨的广播还没响。不过,陈凤华已经准备好了早餐,在等着他了。今天是葱油花卷和甜酒冲鸡蛋。
“回来了。赶快洗个脸来吃饭。”陈凤华说道。
“好。”王诺岳答应着。他放下手中的大包,飞快地洗脸漱口,坐在了桌子上。因为王盛茂和王轩还在睡觉,现在只有王诺岳和陈凤华一起吃饭。
“昨天晚上过得怎么样?”陈凤华看着狼吞虎咽的吃东西的王诺岳,问道。
“都还好。就是面包和饼干不够吃,有点饿。今晚得多带点。”王诺岳低估了熬夜的能量消耗。
“那就多带点,别饿着了。”
“王凯旋昨晚打电话给我们了,他说你计算机很熟练。你爸很是吃惊。”过了一会,陈凤华又说道。其实,何止是吃惊,夫妻俩都讨论了半晚上,觉都没睡好。
“都说了我是吃这碗饭的人。你们等着看我的成果吧。”王诺岳只能坚持到底。
“计算机就那好玩,看你这么兴奋?”
“吃完饭就去睡觉,要好好休息。”
餐桌上,王诺岳一边吃着花卷,一边应付着陈凤华的唠唠叨叨。
吃完饭,王盛茂和陈凤华去上班了。王诺岳回到自己房间睡觉。“如果连续熬夜,就算年轻,一天也要睡上四五个小时,否则身体受不了。”这是有三班倒经验的老妈告诉他的。
就这样,王诺岳每天上午睡觉,下午书面设计,晚上写程序。
第二天,他完成了数据结构和博弈树的搜索算法。
第四天,他完成了核心的计算机走棋的逻辑。这时,一个懂基本规则的ai程序已经完成,虽然任何一个初学者都可以轻松击败它。
王诺岳想,如果加个漂亮点的界面,增加一些辅助功能,把这个ai象棋程序变成他的本科生毕业设计,多半也是能通过的。
接下来就是优化了。人工智能是典型的入门易,优化难的东西。现在,王诺岳就要依靠脑海中的记忆了。
一个卒子的价值为10的话,那马应该是50,还是60?车应该是80,还是90?过了河卒子价值又该是多少?如果从零开始,也许要成千上万次对局的,才能让ai程序得到优化后的数值。
可王诺岳在梦境中,做过多次中国象棋和人机博弈软件的深入分析。所以,他可以凭借记忆,把优化后的权重值(子力价值)加入了程序。并一点点的改进局面评估函数,总子力计算公式。
可光函数正确,没有效率的话,程序也跑不起来。没人可以忍受计算机一个小时走一边步棋。于是,各种启发式算法,对博弈树的α-β剪枝等等优化,也被他加入了程序。
今天七月二十日,王诺岳在机房奋战的第九个晚上。在限制搜索深度为4的情况下,也就是预看四步棋的情况下,王诺岳的程序在386机器上的运行速度终于可以接受了。
看着程序在计算机屏幕上打印出
“iwin!(^_^)”
王诺岳长出了一口气。这已经是他连续第十盘被ai击败了。虽然他的水平很烂,但还是可以看一两步棋的。可以找张大爷试试了,王诺岳心想。
张大爷就是今天值班的门卫。这些天,王诺岳困得不行的时候,就去找他聊聊天。意外的知道了他会下象棋,还在职工比赛中得过二等奖,号称是全厂前十的水平。
从包里摸出今天特意带来的一包白沙烟,王诺岳起身下楼。
“张大爷,帮个忙。”王诺岳一边说,一边把烟递了过去。
“有事你说就是,还拿什么烟啊。”张大爷高兴的接过烟。精品白沙,和他一天的工资都差不多了。
“我编了个会下棋的程序,想和大爷过过招。”王诺岳说道。
“计算机怎么和人下棋?”大爷非常困惑。
王诺岳不觉得自己能解释清楚人工智能是怎么回事,就直接说道:“大爷,你知道怎么记录棋谱吧?”
“我当然知道,不就是马八进九,车9平3。”江麓十大象棋高手之一的张大爷觉得自己被小看了。
“我们先把棋盘摆好。然后我到计算机室去,给你打电话。你把你下的每步棋都报给我。我呢,再把电脑的每步棋报给你。你帮电脑把棋挪动一下。”王诺岳说道。张大爷不能离开传达室,王诺岳不能离开电脑,两人只好通过电话下棋了。
“行。”看在白沙烟的分上,再加上自己也无事可做,张大爷答应了。
王诺岳笑嘻嘻的和张大爷摆好棋局,就回到了计算机室。启动了程序之后,他拨通了传达室的电话,开始了第一场人机对战。
二十分钟后,王诺岳看着屏幕上连续打印出来的三行信息:
“hong:che1激n1”
“激angjun”
“iwin!(^_^)”
于是他对着电话说道:
“红棋:车1进1”,
“将军”,
“我赢了”
电话里久久没有声音。过了一会,电话里传来张大爷的吼声:“再来一盘。这次我拿红棋先走。我就不信赢不了一台机器。”