在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成Task(五) .NET 实现并行的几种方式(四) .NET 实现并行的几种方式(三) .NET 实现并行的几种方式(二) .NET 实现并行的几种方式(一) 话再说回来,这五篇随笔都属于<同步与异步>系列.同步与异步.这是一个很大.很笼统的话题,以笔者所学很难将其将其介绍清楚,不过.笔者还是会尽力…
经过差不多两年的业余时间学习和编写,最近把清月连珠的无禁手部分完善得差不多了.这中间进行了很多思考,也有很多错误认识,到现在有一些东西还没有全面掌握,所以想通过开源于大家共同交流. 最近一直发表一些五子棋AI技术相关的内容,其中也有很多错误,现在整理起来,并且进行详细介绍的同时把清月连珠的代码进行开源.一方面给五子棋AI技术的发展做一些力所能及的贡献,另一方面也是通过交流提高自己的水平.前几天也弄了一个小的平台,可以进行更条理的互动和交流. 希望通过逐步完善五子棋AI技术文章和软件开源,能够有一…
五子棋AI实现 五子棋游戏介绍 五子棋的定义 五子棋是全国智力运动会竞技项目之一,是具有完整信息的.确定性的.轮流行动的.两个游戏者的零和游戏.因此,五子棋是一个博弈问题. 五子棋的玩法 五子棋有两种玩法: 玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜. 玩法二:自己形成五子连线就替换对方任意一枚棋子.被替换的棋子可以和对方交换棋子.最后以先出完所有棋子的一方为胜. 本次实验的玩法是第一种. 五子棋的具体规则 对局双方各执一色棋子,棋盘一共15行15列,…
Gobang 五子棋AI大战,该项目主要用到MVC框架,用算法搭建AI实现进攻或防守 一.项目介绍 1.地址: github地址:Gobang 2.效果图: 二.思路介绍 大概说下思路,具体看代码实现. 1.画棋盘及落点 这个可以去慕课网看看这个视频:五子棋,里面有详细的讲解,我对里面的进行了部分优化.比如怎么判断两点之间到底触摸的哪个点. 2.重来 每个点都是一个对象,让后把对象放数组里面,进行删去,或者重置. 3.人机模式 这里的AI(人工智能)比较简单,这个算法可深可浅,此项目就是比较浅的…
https://github.com/Chuck-Ai/gobang 我写了非常详细的中文教程,教你如何一步步编写自己的五子棋AI: 五子棋AI设计教程第二版一:前言 五子棋AI设计教程第二版二:博弈算法的前世今生 五子棋AI设计教程第二版三:极小化极大值搜索 五子棋AI设计教程第二版四:Alpha Beta 剪枝算法 五子棋AI设计教程第二版五:启发式评估函数 五子棋AI设计教程第二版六:迭代加深 五子棋AI设计教程第二版七:Zobrist缓存 五子棋AI设计教程第二版八:算杀 五子棋AI设计…
在前一篇文章使用jMeter构造大量并发的随机HTTP请求里我通过jMeter构造了大量的HTTP GET并发请求,对服务器产生了大量读操作. 现在我有另一个需求场景:假设我开发了一个创建Service Request的微服务,需要使用HTTP post调用.为了防止Cross Site Request Forgery(跨站域请求伪造),这个微服务调用时需要传一个XSRF token,这个XSRF token需要另一个HTTP get请求从服务器请求. 因此,这里存在两个逻辑上相关的HTTP请求…
首先,对前面几篇当中未修复的BUG致歉,在使用代码时请万分小心…………尤其是前面关于VCF\VCT的一些代码和思考,有一些错误.虽然现在基本都修正了,但是我的程序还没有经过非常大量的对局,在这之前,不打算再发整体代码了.简要说一下现在的情况: 就棋力来说,不加开局库我也下不过它了,先别管它到底怎么样,至少说明它的水平比我的提高的多.不过记得有人有这样的论点:棋类AI的水平很大程度上决定于作者棋艺.应该主要指知识方面的代码吧.也不是很同意,个人觉得还是作者对AI工作原理和棋类特点的理解. 就使用的…
前端CSS CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 每个CSS样式由两个组成部分:选择器和声明.声明又包括属性和属性值.每个声明之后用分号结束. CSS注释 /*这是注释*/ CSS的几种引入方式 行内样式 行内式是在标记的style属性中设定CSS样式.不推荐大规模使用. <p style="c…
关于多线程搜索,有很多方法来实现,很多文章推荐基于MTD(F)的方式.好处不言而喻,不过我的程序中采用的是基于PVS的多线程搜索.实现起来主要是这几个方面问题需要解决: 1.置换表的互斥访问. 2.局面的复制. 3.线程同步. 逐个说一下这几方面的实现: 1.置换表的互斥访问. 置换表的作用时保存和读取搜索过的局面.所以使用读写锁即可.代码非常简单,声明一个ReaderWriterLock,在保存置换表时使用写锁,读取时使用读锁. 2.局面复制. 完整的复制position类,方法有很多,我的代…
前面几篇发布了一些有关五子棋的基本算法,其中有一些BUG也有很多值得再次思考的问题,在框架和效果上基本达到了一个简单的AI的水平,当然,我也是初学并没有掌握太多的高级技术.对于这个程序现在还在优化当中,主要是完善所使用的启发方式.编写多线程搜索代码.加入开局库等一些工作.开局库和多线程还没有实现,仅在棋盘表示.模板表示上修改较多,而启发方式上有一些改进,主要是修改了置换表为双置换表(深度和实时),内部迭代加深启发和我们接下来要说明的VCT和VCF代码.其中棋盘表示采用了一组15个32位表示,每一…