- UID
- 26986
- 帖子
- 7993
- 积分
- 52733
- 阅读权限
- 90
- 注册时间
- 2006-8-21
- 最后登录
- 2015-6-20
- 在线时间
- 11906 小时
|
首先请允许哥深深的装上1b,哥是专业人士。
看了那个伯克利的帖子有感,我很久以前就在想怎样才能写出一个合格的星际AI(lv15?)。
星际分两部分,大局观和微操。
关于大局观,由于星际是一个不完全博弈(双方无法得知对方的全部情况,如下棋是完全博弈,打牌则是非完全博弈),所以电脑很难做的比人脑更好。
关于微操,大家普遍表示电脑做的会更好,不过如果考察到细节的话,则不会那么简单。像甩飞龙这种机械重复的操作,电脑肯定做的比人好,操作运输机和金甲虫,电脑也肯定更好。
应该考虑更常见的操作,如神族混合兵种大部队交战时,如何放电?人脑在一瞬间就会做出决定:“先电对方的电兵;如果电兵不容易电到,则电龙骑;要电对方兵多的地方;不要电叉子提速叉子跑的很快;不要电到自己的兵,等等。“电脑是根本不会这么思考的,电脑只能根据一个状态函数,把当前地图上某个范围输入进这个函数,则输出一个浮点数表示电这个位置能够得到的收益,然后根据收益排序,选择要放电的位置……
考虑更简单的纯龙骑对射,规则是”1 拉阵型让每个龙骑都有火力输出 2 射杀射程内血最少的敌方龙骑 3 如果血少的地方龙骑跑出射程不要追,集中力量射杀射程内的龙骑……“
我举这些例子是为了说明,星际中更常见的情况是操作也需要策略,像甩飞龙那种几乎不需要什么策略的操作并不多见,而这里的每一个策略,都需要上文所提的一个状态函数,这些状态函数必须由人提供,可以想象这个工作量……
下面说说大局观。对于完全博弈而言,由于信息完全可见,所以可以用一个状态函数来给当前或者以后的局面打分,电脑选择最优策略(若干步后状态函数得分最高),这样真是简单明了。但是非完全博弈完全不同……
打个比方,对于PVP开局,电脑需要知道什么时候进行火力侦察,根据侦查的结果判断对方是3bg龙骑,还是2bg金甲,还是2bg ob,等等,这些推理,都需要人来提供规则,可以想象工作量……
比较可行的方案是让电脑用T(T的变化最少),然后根据教主的比赛,抽象出若干种战术,如无脑暴兵,指挥机器人打飞机等等,不过由于电脑的选择是非常有限的,所以就非常容易被针对……
最后跟大家说一句,电脑没有学习能力,所谓的机器学习,永远都是在人的指导下,没有人电脑什么都不是,电脑如果做出了超越程序员逻辑之外的行动,那就是bug,而不是人工智能…… |
|