ZBLOG

Good Luck To You!

推进复杂项目的原则——以构建五子棋黑棋必胜程序为例

项目推进当中的原则

一、曳光弹原则

先把整个流程跑通,从解决简单的残局出发找出黑棋必胜的走法,理解达到目标需要改进的地方,不确定的内容,然后不停地调整优化以达到目标。这个过程类似于调整曳光弹,直到击中目标。更多关于曳光弹的内容,参照《程序员修炼之道 — 通向务实的最高境界(第2版)》。

《程序员修炼之道 — 通向务实的最高境界(第2版)》当中曳光弹的解释

为了使整个流程跑通,做了两点简化

  • 黑棋从某残局开始必胜:比如黑白棋各下了4步的某个残局

黑白棋各下了4步的残局
  • 人来充当AI和玩家的中介:最初程序没有人机交互的UI,由我充当中介帮助AI和玩家下棋,以此测试AI的功力,AI下一步,我在真实棋盘上面下一步,玩家下一步白棋,我把白棋的位置输入AI

没有交互功能的命令行程序

二、不要冲出前灯范围

小步前进,不停地测试,解决了一个残局的黑棋必胜走法就测试,比如黑白棋各下4步的一个残局有了黑棋必胜的走法,必须得到专家的测试通过,才进行黑白棋各下3步的工作。确保每一小步是正确的,再不断地前进。这也是来自于《程序员修炼之道 — 通向务实的最高境界(第2版)》的一个原则。

三、看到进度

给自己信心,给周围的人信心,自己要对进度要有把握,让和你一同工作的人看到进度,给大家看到到达目标的希望。一个例子是黑白各下4步的残局有了黑棋必胜的走法,再近一步是各下3步,一直到黑白各下1步。所有各下1步的开局,一共有多少个,已经解决了几个。所有各下1步的开局解决之后,就意味着到达了终点。

四、做当前最关键的工作

只做当前最关键的内容,做产出投入最高的的选择。下面是几个重要工作。

  • 初始代码和理论学习: PN Search Project⁴ 称实现了Allis, Louis Victor论文²当中的pn search算法,但是其只能在Windows运行,我不在Windows上面开发程序,但我并没有花时间把它改写成能在macOS运行的程序,而是创建一个window环境,运行PN Search Project,来快速帮助理解pn search算法的原理。

  • 使PN Search Project能在macOS上面运行:初步明确pn-search算法是正确的方向之后,为了开发更有效率,使PN Search Project的代码能在macOS下面工作是一个关键

  • 提供人机交互界面:人工测试确定软件没有大问题,但是以人为中介来中转AI的结果不是长久的方案,为了加快测试的过程,为此提供Web人机交互的界面

  • 单线程工作到多线程工作:为了加快黑棋必胜走法的解决过程,多线程方案可以增加CPU利用率加快解决过程

ChMkJ1fJUAGIGznQAAbZCZertIIAAU9VQCDRzEABtkh433[1].jpg

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索

Powered By Z-BlogPHP 1.7.2

Copyright Your WebSite.Some Rights Reserved.