十滴水参考算法精编版.docx
- 文档编号:5767228
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:25
- 大小:138.26KB
十滴水参考算法精编版.docx
《十滴水参考算法精编版.docx》由会员分享,可在线阅读,更多相关《十滴水参考算法精编版.docx(25页珍藏版)》请在冰豆网上搜索。
十滴水参考算法精编版
浅谈《十滴水》——人工智能搜索
测试此搜索算法平均比网上能搜索到的同类算法答案每局优0~2滴水,未出现过答案劣于网上同类算法的情况,可能存在一些小漏洞导致的答案偏差,欢迎广大神犇指正。
核心思想:
先对确定劣质的搜索树进行剪枝,然后通过类人工智能的方法向分析出的能得到最优解的概率大的方向进行搜索,通过分析函数来构造搜索方向,通过状态树调控函数来调控状态树的平均规模,来统筹时间和准确度,通过智能构造答案序列函数来对搜索成果进行最大限度的优化,由于最优解的不唯一性和大量性,选择抛弃搜索全部状态而选用概率性全局剪枝的方法,在小概率选择期望值小的方向,绝对优势概率选择预估最优方向的基础上,通过剪去不理想的局面进行非确定性搜索,虽然不能保证搜索到的解全是最优的,但是由于人工智能的方法对搜索方向,搜索树,答案序列的处理,将随机搜索的错误概率降到了非常低的状态,此算法搜索时间和搜索精确地类似的成反比,通过多次实验调试后的人工智能参数,证明搜索到非最优解的概率与剪枝率成对数关系并稳定到千分之一,并且所得的答案与标准答案差超过1的概率小到百万分之一。
本算法的核心函数;
1、渗透《蚁群算法》《遗传算法》思想的概率性淘汰和创新函数
2、渗透《模糊图像识别》思想的获取水滴图像密集度参数函数
李笑来学习这里3、智能答案序列启发式优化函数
4、智能调控搜索树状态函数
5、智能交互式判断函数
6、《十滴水》模拟函数
教科版五年级下册科学连线题
主要流程:
输入数据->
{
获取当前局面的价值评价->
抽取状态样本->
搜索出一个解->
搜索树智能调控->
智能优化解到局部最优解->
}
输出数据
————————————————算·法·详·解————————————————————
下面我来详细讲解一下核心函数的思想方法和特殊的智能处理:
一、输入函数
本部分加入了大量的特判来对付极端数据对程序的危害,也是本程序最简单的部分,加入的特判有:
输入越界判断,输入非法字符判断
拾贝壳阅读答案
教学质量综合测评二、输出函数
本部分是所有函数中第二简单的函数,本部分先判断不需要操作的局面,之后是输出20组答案序列,在每个序列以坐标方式输出后,会对局面进行模拟来使得用于选择一种喜欢的顺序进行操作
三、启发函数一:
密集度模糊式启发函数
本函数为搜索的核心优化函数,通过反映一个坐标点周围所影响水滴的加权密集程度的量化参数,来统筹安排搜索顺序和概率性剪枝,程序能根据此函数返回的价值分数来向更有可能获得最优解的方向进行搜索。
本函数的核心思想是如何计算一个点所在坐标的密集度,定义一个坐标点所影响的范围为上下左右所接触到的第一个存在水且在地图边界之内的水滴坐标,按照二维几何正态分布函数图象加权的个体水滴数参数进行综合计算,本函数运用动态规划的方法,在O(n^2*step)的时间内统计结果,step为预测影响的步数,本函数设计step为3步,代表意义为统计每个水滴坐标点3步之内所影响范围的加权综合评估分数。
由于step=1时的个体影响坐标是离散的,故可以较为精确的统计图象的密集度。
定义:
价值评估值=Σ(区域权重*个体水滴量)
一次加权设定为
数学方案问题0
1
昆虫记阅读题及答案
李笑来学习这里0
李政化学口诀总结1
数学题目大全带答案教学工作情况2
1
0
1
0
中心权重为2,周边影响权重为1,进行3步动规后的密集度权重为(有重叠):
0
0
0
0
1
0
0
0
0
0
0
0
4
5
4
0
0
0
0
0
6
15
25
15
6
0
0
0
4
15
42
52
42
15
4
0
1
5
25
52
74
52
25
5
1
0
4
15
42
52
42
15
4
0
0
0
6
15
25
15
6
0
0
0
0
0
4
5
4
0
0
0
0
0
0
0
1
0
0
0
0
本方法所构成的函数加权树状图分布趋向可大概表示为(中心点权值最大,经过中继点个数越多权值越小):
(此图反映的是无穷大边界时的密集度影响范围趋向图,红色点表示有水滴的坐标点,蓝色线表示影响路径)
(通过上图可以清楚地看到此函数反应的密集度与中心点到周边点的曼哈顿距离无关,而是与直接影响有关,是比较准确的)
(附加两个附加型启发函数二、三,这两个函数在本算法中均未使用,因为经测试效果不如以一种启发函数理想,第二种为单纯的静态区域权值,不如动态计算密集度参数效果好,第三种启发函数为单纯的平均权值随机搜索模型)
三、旋转抽样函数
本函数体现《遗传算法》和《蚁群算法》的概率性选择和淘汰变异思想,采用的是经典的轮盘方法来构造答案序列和搜索方向序列,为人工智能搜索主函数提供指向性参考,核心思想为依照适应度的价值评估进行加权随机抽取。
四、答案智能优化处理函数
本算法为加强搜索的速度提供了强有力的保障,作用是当搜索出一组答案序列时,此算法会智能的对序列进行优化和变异,使传入此函数的答案序列进化到一个与基准序列元素相同结构顺序不同的优质答案传出,核心思想是先根据贪心思路进行合理的显性的构造,使得答案序列中先筛选出一组子序列满足最优性,之后对剩下的序列进行随机概率性淘汰进化,为了避免枚举所有可行序列而发生的局部卡死,本算法通过调用随机生成序列辅函数的方式对剩余序列进行随机智能构造和定向淘汰和进化,之后将得到的同元素不同结构的优质序列进行返回。
为了更大的满足用户的需求,同解答案保留尽量按照升序排列的序列。
五、搜索树动态调控函数
本函数的作用是根据预估的搜索树最大深度来扩大或缩小每个局面所需讨论状态总量,对搜索总状态数维持产生平稳的趋向,来宏观调控时间与精确地的矛盾,此处采用二分法将搜索状态总量趋向于平衡点,本算法设计每个深度状态的讨论总量与此状态的价值评估成近似正比,与此状态的已有花费成近似反比。
六、人工智能搜索主函数
这是搜索的主函数,调用到了上述的所有智能启发函数,加入了上节剪枝,分治不相干区域连通块剪枝的方法进行概率搜索,拥有统计最终答案序列的功能。
下面是源码:
#include
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
//智能核心参数
constintpopulation=30;//初始种群样本总量
constdoublescales[4]={3.0,2.0,1.2,1.0};//梯度权重参数
constintMax_Deep_Ceiling=99;
//constintvalue_number_mapping[Max_Deep_Ceiling]={36,36,36,36,36,36,36,36,36,36,36,36,36,36,36};//全局搜索AI离散映射基准表
doubleState_Tree[Max_Deep_Ceiling+1]={72.,60.,26.,22.,18.,15.,12.,9.,7.,6.,5.,5.,4.,4.,4.,3.,3.,3.,3.,2.,2.,2.,2.,2.,2.,2.,2.,2.,2.,2.,2.};//AI离散函数映射基准表
intAI_argument[5]={0,1,2,9,16};//本体估价参数
constintPrediction_step=3;//智能预测步数上限
constintAI_value[5]={0,1,2,9,16};//本体估价参数
constintGradient_Parameter[2]={2,1};//梯度估价参数
constintExpected_State=2147000000;//搜索状态总量上限
//定义结构体
structstatus{intx;inty;intderaction;intstate;intnumber;};
structcoordinate{intx;inty;};
structsheet{coordinatecoor[Max_Deep_Ceiling];inttotal;intadditional;};
structsituation{intmap[6][6];};
//定义变量
intMaxDeep=Max_Deep_Ceiling,i,j,k,l,map[Max_Deep_Ceiling][6][6],answer_tot=0,Answer_Number=Max_Deep_Ceiling+12,contest=0;
sheetanswer[population],test_list;
intmove[4][2]={0,1,1,0,0,-1,-1,0};
intmap_test[6][6],Sum_Number;
doublemap_value[6][6];
//声明函数
voidmap_value_build();//构建棋盘权值函数
voiddraw(intDeep);//调试打表函数
boolCheck_Deep_Finish(int);//检测终止局面函数
voiddraw(int);//打印地图函数
boolcheck(status);//检测可行性辅助函数
intfill(int,int,int);//填充水滴模拟函数
intValue_Calculator(int,int,int,int);//估价函数辅助计算器
voidAI_Control_Tree();//搜索树动态调控函数
situationInitail_Value_Map1(int,int&);//密集度模糊式启发函数
situationInitail_Value_Map2(int,int&);//个体样本&区域梯度式启发函数
situationInitail_Value_Map3(int,int&);//随机化搜索式启发函数
sheetRotation_Sample(int,int,int);//旋转抽样函数
sheetRandom_Answer(sheet&,int);//构建答案序列辅函数
sheetanswer_sort(sheet,int&);//答案智能优化处理函数
intArtificial_intelligent_search(int);//人工智能搜索主函数
voidmap_test_build();//构建备用图
voidGet_Sum_Number();//上界获取辅助函数
voidInitail_Value_Map_check();//图像模糊分析检测器
voidRotation_Sample_check();//Rotation_Sample检测器
voidPretreatment();//预处理函数
voidInput();//输入函数
voidOutput();//输出函数
intmain()
{
Pretreatment();
Input();
map_value_build();
map_test_build();
Get_Sum_Number();
Artificial_intelligent_search(0);
cout< : : "< Output(); return0; } voidmap_value_build()//构建棋盘权值函数 { inti,j,k; for(i=0;i<=5;i++) for(j=0;j<=5;j++) map_value[i][j]=3; for(k=0;k<=2;k++) for(i=0;i<=2;i++) for(j=2-i+k;j<=3+i-k;j++) { map_value[i][j]--; map_value[5-i][j]--; } for(i=0;i<=5;i++) for(j=0;j<=5;j++)map_value[i][j]=scales[(int)map_value[i][j]]; } voiddraw(intDeep)//打印地图函数 { inti,j; cout< for(i=0;i { cout<<'('< } cout< for(i=0;i<=5;i++) { for(j=0;j<=5;j++)cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 十滴水 参考 算法 精编