遗传算法求解八皇后问题C++实现
一. 实验问题简介
问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
本次实验利用遗传算法求解八皇后问题的一个可行解。
二. 实验语言及算法
- 实验语言: C++
- 实验算法: 遗传算法
三. 实验思路
- Random_formation函数
杂交:利用初始化的两个父辈通过进行杂交,将通过父辈从某随机一点进行割分,通过两个for循环交换各部分拼接起来,生成两个子辈。(一代繁殖共生成16个子辈)
变异:利用随机函数分别生成两个生成子辈的随机变异结点进行随机变异(单点变异)。 - Fit_func函数
该函数将一个子辈序列作为输入,利用二重循环依次判断每个序列结点的不相互攻击皇后对数目,即(abs(son[i]-son[j])==abs(i-j))||(son[i]==son[j])。 - Heredity函数
该函数生成两个随机父辈,通过对这两个父辈利用random_formation函数进行杂交和变异生成两个子辈结果,并对其进行适应度计算,总共一代16个子辈,重复该过程8次。
对这一代的结果进行适应度排序,选出最优的两个子辈作为父辈进行下一代杂交繁殖。
结束出口,当当前父辈的适应度为28时,即符合八皇后问题条件,进行循环结束,并将其输出。 - 选择函数
本次实验使用最佳保留选择,选出最佳的子辈作为父辈。
四. 实验结果及分析
- 实验结果()
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 5 6 6 4 3 1 2
母辈序列 5 3 2 1 5 1 6 6
<——————开始随机繁殖——————>
结束繁殖代数:13505
<——————最终繁殖结果序列——————>
3 5 2 8 1 7 4 6
<——————最终繁殖适应度——————>
28
第1次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 4 6 8 6 4 8 4 3
母辈序列 1 2 1 2 1 5 8 8
<——————开始随机繁殖——————>
结束繁殖代数:4180
<——————最终繁殖结果序列——————>
6 3 7 4 1 8 2 5
<——————最终繁殖适应度——————>
28
第2次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 7 6 3 7 4 4 7 3
母辈序列 6 2 8 2 4 1 2 2
<——————开始随机繁殖——————>
结束繁殖代数:9957
<——————最终繁殖结果序列——————>
1 6 8 3 7 4 2 5
<——————最终繁殖适应度——————>
28
第3次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 6 6 7 3 8 2 3
母辈序列 2 1 6 3 8 5 5 4
<——————开始随机繁殖——————>
结束繁殖代数:14896
<——————最终繁殖结果序列——————>
8 2 4 1 7 5 3 6
<——————最终繁殖适应度——————>
28
第4次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 6 3 8 2 8 8 3
母辈序列 3 7 4 4 8 5 1 8
<——————开始随机繁殖——————>
结束繁殖代数:5795
<——————最终繁殖结果序列——————>
6 3 7 2 4 8 1 5
<——————最终繁殖适应度——————>
28
第5次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 4 6 5 1 2 4 2 3
母辈序列 7 7 2 5 4 1 4 2
<——————开始随机繁殖——————>
结束繁殖代数:14357
<——————最终繁殖结果序列——————>
4 1 5 8 2 7 3 6
<——————最终繁殖适应度——————>
28
第6次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 7 7 8 1 2 8 5 4
母辈序列 4 6 1 6 8 5 6 5
<——————开始随机繁殖——————>
结束繁殖代数:4657
<——————最终繁殖结果序列——————>
2 5 7 1 3 8 6 4
<——————最终繁殖适应度——————>
28
第7次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 3 7 2 2 1 4 8 4
母辈序列 8 5 8 7 4 2 8 7
<——————开始随机繁殖——————>
结束繁殖代数:27492
<——————最终繁殖结果序列——————>
5 2 4 6 8 3 1 7
<——————最终繁殖适应度——————>
28
第8次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 6 7 5 2 1 8 3 4
母辈序列 5 5 7 7 8 6 3 1
<——————开始随机繁殖——————>
结束繁殖代数:8927
<——————最终繁殖结果序列——————>
6 8 2 4 1 7 5 3
<——————最终繁殖适应度——————>
28
第9次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 7 8 2 8 4 6 4
母辈序列 1 4 5 8 4 2 5 3
<——————开始随机繁殖——————>
结束繁殖代数:7984
<——————最终繁殖结果序列——————>
1 6 8 3 7 4 2 5
<——————最终繁殖适应度——————>
28
第10次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 7 5 3 8 5 4 4
母辈序列 2 3 3 2 4 2 2 7
<——————开始随机繁殖——————>
结束繁殖代数:870
<——————最终繁殖结果序列——————>
2 7 5 8 1 4 6 3
<——————最终繁殖适应度——————>
28
第11次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 3 8 7 4 7 1 7 5
母辈序列 6 2 2 2 8 6 4 1
<——————开始随机繁殖——————>
结束繁殖代数:5169
<——————最终繁殖结果序列——————>
3 6 8 1 4 7 5 2
<——————最终繁殖适应度——————>
28
第12次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 6 8 2 4 7 5 1 5
母辈序列 3 1 8 3 4 2 6 3
<——————开始随机繁殖——————>
结束繁殖代数:3568
<——————最终繁殖结果序列——————>
4 1 5 8 2 7 3 6
<——————最终繁殖适应度——————>
28
第13次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 8 4 5 6 1 4 5
母辈序列 7 1 7 4 8 6 1 5
<——————开始随机繁殖——————>
结束繁殖代数:25576
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第14次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 5 8 7 5 6 5 7 5
母辈序列 3 8 6 4 4 2 3 7
<——————开始随机繁殖——————>
结束繁殖代数:9063
<——————最终繁殖结果序列——————>
3 5 2 8 1 7 4 6
<——————最终繁殖适应度——————>
28
第15次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 8 2 6 6 1 2 5
母辈序列 8 7 4 5 7 6 5 1
<——————开始随机繁殖——————>
结束繁殖代数:5606
<——————最终繁殖结果序列——————>
5 7 2 6 3 1 8 4
<——————最终繁殖适应度——————>
28
第16次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 3 8 4 6 5 5 5 5
母辈序列 4 7 3 6 3 2 7 4
<——————开始随机繁殖——————>
结束繁殖代数:3268
<——————最终繁殖结果序列——————>
4 2 5 8 6 1 3 7
<——————最终繁殖适应度——————>
28
第17次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 1 1 7 4 5 3 6
母辈序列 5 5 1 7 3 2 4 8
<——————开始随机繁殖——————>
结束繁殖代数:11993
<——————最终繁殖结果序列——————>
2 7 5 8 1 4 6 3
<——————最终繁殖适应度——————>
28
第18次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 5 1 4 7 4 1 6 6
母辈序列 1 4 7 8 7 6 6 2
<——————开始随机繁殖——————>
结束繁殖代数:699
<——————最终繁殖结果序列——————>
4 2 7 3 6 8 1 5
<——————最终繁殖适应度——————>
28
第19次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 1 7 8 3 6 1 6
母辈序列 6 4 6 1 3 2 1 4
<——————开始随机繁殖——————>
结束繁殖代数:3698
<——————最终繁殖结果序列——————>
3 6 2 7 1 4 8 5
<——————最终繁殖适应度——————>
28
第20次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 4 1 1 8 3 2 3 6
母辈序列 2 3 5 2 7 6 3 6
<——————开始随机繁殖——————>
结束繁殖代数:4911
<——————最终繁殖结果序列——————>
2 5 7 1 3 8 6 4
<——————最终繁殖适应度——————>
28
第21次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 7 1 4 1 3 6 6 6
母辈序列 7 2 4 2 3 2 5 8
<——————开始随机繁殖——————>
结束繁殖代数:12138
<——————最终繁殖结果序列——————>
3 5 2 8 1 7 4 6
<——————最终繁殖适应度——————>
28
第22次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 2 6 1 2 2 1 7
母辈序列 3 2 2 3 7 6 8 2
<——————开始随机繁殖——————>
结束繁殖代数:2425
<——————最终繁殖结果序列——————>
6 3 7 4 1 8 2 5
<——————最终繁殖适应度——————>
28
第23次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 5 2 1 2 2 6 4 7
母辈序列 7 1 1 4 3 2 2 4
<——————开始随机繁殖——————>
结束繁殖代数:8015
<——————最终繁殖结果序列——————>
4 2 5 8 6 1 3 7
<——————最终繁殖适应度——————>
28
第24次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 2 3 2 1 2 7 7
母辈序列 4 8 8 4 7 6 4 6
<——————开始随机繁殖——————>
结束繁殖代数:28086
<——————最终繁殖结果序列——————>
7 4 2 8 6 1 3 5
<——————最终繁殖适应度——————>
28
第25次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 4 2 6 3 1 6 2 7
母辈序列 8 8 7 5 3 2 7 8
<——————开始随机繁殖——————>
结束繁殖代数:3297
<——————最终繁殖结果序列——————>
5 7 1 4 2 8 6 3
<——————最终繁殖适应度——————>
28
第26次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 7 2 1 3 1 2 5 7
母辈序列 5 7 5 6 7 6 1 3
<——————开始随机繁殖——————>
结束繁殖代数:1503
<——————最终繁殖结果序列——————>
3 6 8 1 4 7 5 2
<——————最终繁殖适应度——————>
28
第27次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 2 3 3 8 6 8 7
母辈序列 1 6 4 7 3 3 3 5
<——————开始随机繁殖——————>
结束繁殖代数:5789
<——————最终繁殖结果序列——————>
1 5 8 6 3 7 2 4
<——————最终繁殖适应度——————>
28
第28次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 6 3 6 4 8 2 2 8
母辈序列 6 6 3 7 6 7 6 7
<——————开始随机繁殖——————>
结束繁殖代数:10534
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第29次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 3 8 4 7 6 5 8
母辈序列 2 5 1 8 2 3 8 1
<——————开始随机繁殖——————>
结束繁殖代数:3
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第30次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 3 5 5 7 7 3 8
母辈序列 3 4 7 2 2 3 5 5
<——————开始随机繁殖——————>
结束繁殖代数:1210
<——————最终繁殖结果序列——————>
5 7 1 3 8 6 4 2
<——————最终繁殖适应度——————>
28
第31次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 3 3 8 6 6 3 6 8
母辈序列 7 3 6 2 6 7 7 7
<——————开始随机繁殖——————>
结束繁殖代数:19317
<——————最终繁殖结果序列——————>
7 4 2 8 6 1 3 5
<——————最终繁殖适应度——————>
28
第32次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 6 4 3 6 6 7 1 8
母辈序列 4 2 4 3 2 3 1 1
<——————开始随机繁殖——————>
结束繁殖代数:10289
<——————最终繁殖结果序列——————>
4 2 8 5 7 1 3 6
<——————最终繁殖适应度——————>
28
第33次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 4 5 7 5 3 4 8
母辈序列 8 1 3 4 6 7 4 3
<——————开始随机繁殖——————>
结束繁殖代数:6268
<——————最终繁殖结果序列——————>
4 7 1 8 5 2 6 3
<——————最终繁殖适应度——————>
28
第34次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 5 4 8 7 5 7 7 1
母辈序列 4 1 2 4 2 3 6 5
<——————开始随机繁殖——————>
结束繁殖代数:7596
<——————最终繁殖结果序列——————>
7 3 1 6 8 5 2 4
<——————最终繁殖适应度——————>
28
第35次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 4 2 8 4 3 1 1
母辈序列 1 8 1 5 6 7 8 7
<——————开始随机繁殖——————>
结束繁殖代数:12533
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第36次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 3 4 5 8 4 7 4 1
母辈序列 5 7 7 6 2 3 3 2
<——————开始随机繁殖——————>
结束繁殖代数:2
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第37次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 6 4 7 8 4 3 7 1
母辈序列 2 7 6 7 6 7 5 4
<——————开始随机繁殖——————>
结束繁殖代数:17019
<——————最终繁殖结果序列——————>
6 8 2 4 1 7 5 3
<——————最终繁殖适应度——————>
28
第38次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 5 2 1 3 7 2 1
母辈序列 6 6 5 7 2 3 7 6
<——————开始随机繁殖——————>
结束繁殖代数:12229
<——————最终繁殖结果序列——————>
4 2 5 8 6 1 3 7
<——————最终繁殖适应度——————>
28
第39次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 5 5 5 1 3 4 5 1
母辈序列 2 5 3 8 6 7 2 8
<——————开始随机繁殖——————>
结束繁殖代数:1099
<——————最终繁殖结果序列——————>
8 2 4 1 7 5 3 6
<——————最终繁殖适应度——————>
28
第40次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 8 5 7 2 2 8 8 2
母辈序列 7 5 2 1 2 3 4 2
<——————开始随机繁殖——————>
结束繁殖代数:2
<——————最终繁殖结果序列——————>
8 2 4 1 7 5 3 6
<——————最终繁殖适应度——————>
28
第41次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 3 5 2 2 2 4 3 2
母辈序列 3 4 1 2 6 7 6 4
<——————开始随机繁殖——————>
结束繁殖代数:34211
<——————最终繁殖结果序列——————>
4 7 1 8 5 2 6 3
<——————最终繁殖适应度——————>
28
第42次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 5 7 3 1 4 8 2
母辈序列 4 3 6 3 5 7 3 8
<——————开始随机繁殖——————>
结束繁殖代数:18148
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第43次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 5 6 1 4 1 8 3 2
母辈序列 8 2 5 4 1 3 5 2
<——————开始随机繁殖——————>
结束繁殖代数:2
<——————最终繁殖结果序列——————>
6 3 1 7 5 8 2 4
<——————最终繁殖适应度——————>
28
第44次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 6 4 4 8 4 6 2
母辈序列 5 1 4 4 5 7 8 4
<——————开始随机繁殖——————>
结束繁殖代数:6322
<——————最终繁殖结果序列——————>
6 8 2 4 1 7 5 3
<——————最终繁殖适应度——————>
28
第45次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 4 6 7 5 8 8 1 3
母辈序列 1 1 3 5 1 3 2 6
<——————开始随机繁殖——————>
结束繁殖代数:6371
<——————最终繁殖结果序列——————>
3 6 2 7 1 4 8 5
<——————最终繁殖适应度——————>
28
第46次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 7 6 1 5 8 4 4 3
母辈序列 6 8 1 6 5 8 4 1
<——————开始随机繁殖——————>
结束繁殖代数:21843
<——————最终繁殖结果序列——————>
7 4 2 8 6 1 3 5
<——————最终繁殖适应度——————>
28
第47次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 2 6 4 5 7 8 7 3
母辈序列 2 7 8 7 1 4 7 3
<——————开始随机繁殖——————>
结束繁殖代数:6391
<——————最终繁殖结果序列——————>
4 2 8 5 7 1 3 6
<——————最终繁殖适应度——————>
28
第48次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 6 6 6 6 7 4 2 3
母辈序列 6 7 7 7 5 8 1 5
<——————开始随机繁殖——————>
结束繁殖代数:1364
<——————最终繁殖结果序列——————>
3 6 8 1 4 7 5 2
<——————最终繁殖适应度——————>
28
第49次模拟结束
<——————初始化第一代繁殖种群结果——————>
父辈序列 1 7 1 6 6 1 5 3
母辈序列 3 6 5 8 1 4 3 7
<——————开始随机繁殖——————>
结束繁殖代数:16407
<——————最终繁殖结果序列——————>
4 1 5 8 2 7 3 6
<——————最终繁殖适应度——————>
28
第50次模拟结束
遗传算法运行平均时间:0.090240
- 性能分析
本次实验由于利用随机模拟来寻找最佳值,因此无法较难从理论分析其性能,因此利用重复循环运行Heredity函数统计多次运行的时间,求取平均时间,得到运行性能时间如图2所示。
五,实验代码
/*
2021/04/07
YNU-LSL code
*/
#include<bits/stdc++.h>
#include<unistd.h>
using namespace std;
#define N 8
#define M 3000
int son[N][N];
typedef struct
{int v;int in;
}node;bool cmp(const node x,const node y)
{return x.v>y.v;
}int fa[9];int ma[9];int result[55][10];
/*杂交变异过程函数*/
void random_formation(int k,int son[N][N])
{/*<————杂交————>*/int i = rand()%8+1;for(int j=1;j<=i;j++){son[k][j]=fa[j];son[k+1][j]=ma[j];}for(int j=i+1;j<=N;j++){son[k][j]=ma[j];son[k+1][j]=fa[j];}/*<————变异————>*/i = rand()%8+1;int j=rand()%8+1;son[k][i]=(rand()%8+1),son[k+1][j]=(rand()%8+1);
}
/*适应度函数*/
int fit_func(int son[9])
{int res=0;for(int i=1;i<=8;i++){for(int j=i+1;j<=8;j++){if((abs(son[i]-son[j])==abs(i-j))||(son[i]==son[j])){res++;}}}return 28-res;
}
/*遗传函数*/
ofstream file;
void heredity(int cts)
{srand(time(0));int f[9],m[9];node s[N*2];for(int i=1;i<=N*2;i++)s[i].in=0,s[i].v=0;for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)son[i][j]=j;for(int i=1;i<=N;i++){f[i]=rand()%8+1;m[i]=rand()%8+1;}int k=1;/*//random_formation(f,m,1);for(int i=1;i<=N;i++)cin>>son[1][i];int v = fit_func(son[1]);printf("s_V:%d",v);*/printf("<——————初始化第一代繁殖种群结果——————>\n");printf("父辈序列\t");for(int i=1;i<=N;i++)printf("%d ",f[i]);printf("\n");printf("母辈序列\t");for(int i=1;i<=N;i++)printf("%d ",m[i]);printf("\n");printf("<——————开始随机繁殖——————>\n");for(int i=1;i<=k*M;i++){//if(i%1000==0)// printf("<——————第%d代繁殖——————>\n",i);if(s[1].v==28) {printf("结束繁殖代数:%d\n",i);break;}else if(i==k*M) k++;for(int j=1;j<=2*N;j+=2){random_formation(j,son);s[j].v=fit_func(son[j]);s[j+1].v=fit_func(son[j+1]);s[j].in=j;s[j+1].in=j+1;}sort(s+1,s+N*2+1,cmp);for(int j=1;j<=N;j++)f[j]=son[s[1].in][j];for(int j=1;j<=N;j++)m[j]=son[s[2].in][j];}printf("<——————最终繁殖结果序列——————>\n");file<<'[';for(int i=1;i<=N;i++){file<<f[i];result[cts][i]=f[i];printf("%d ",result[cts][i]);}file<<']'<<endl<<endl;printf("\n");printf("<——————最终繁殖适应度——————>\n");printf("%d\n",s[1].v);printf("第%d次模拟结束\n",cts);
}
clock_t start,stop;
int main()
{//时间作随机种子double sumt=0;file.open("results.txt");for(int i=1;i<=50;i++){start = clock();heredity(i);stop = clock();sleep(1);sumt+=((double)(stop-start)*10);}file.close();printf("遗传算法运行平均时间:%lf\n",(double)((sumt)/500000));printf("<——————统计所有产生结果——————>\n");/*莫名错误???不明白为啥会输出数组保存结果不一样*//*for(int i=1;i<=50;i++){printf("[");for(int j=1;j<=N;j++)file<<;printf("]\n");}*/return 0;
}
遗传算法求解八皇后问题C++实现相关推荐
- 遗传算法求解八皇后问题—matlab
目录 题目要求 设计思路 1.染色体编码 2.适应度函数 3.选择算子 4.交叉算子 5.变异算子 6.精英替换 运行结果 源程序 题目要求 在8*8的国际象棋棋盘上放置了八个皇后,要求没有一个皇后能 ...
- 八皇后问题遗传算法c语言,遗传算法解决八皇后问题
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 八皇后问题描述 19 世纪著名的数学家 Gauss 在 1850 年提出八皇后问题后, 该问题成为各类语言程序设计的经典 ...
- C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题
C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...
- python遗传算法八皇后_遗传算法之:八皇后问题
八皇后问题: 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.正确的解有很多个,遗传算法并不直接计算一共有多少个解,而是寻找满 ...
- 爬山法求解八皇后问题的全部解法
爬山法求解八皇后问题的全部解法 程序的概要设计思想 初始状态 冲突函数 寻找邻居状态 寻找全部解集 程序主要函数的作用 运行结果截图 Python源代码 程序的概要设计思想 爬山算法是一种局部贪婪算法 ...
- 遗传算法解决八皇后问题
遗传算法解决八皇后问题 程序设计的概要思想 编码方案 适应度的计算 初始种群 选择算子 交叉算子 变异算子 终止策略 程序的主要函数及其作用 运行结果截图 Python源代码 程序设计的概要思想 遗传 ...
- 遗传算法解决八皇后问题(java源码)
本文源码下载链接:https://download.csdn.net/download/goulvjiang3176/11221063 另有贪心算法解决八皇后问题的源码下载链接:https://dow ...
- 用遗传算法解决八皇后问题
一.问题描述 八皇后问题的目标是在国际象棋棋盘中放置8个皇后,使得任何一个皇后都不会攻击到其他任一皇后.(皇后可以攻击和它在同一行,同一列或者同一对角线的任何棋子) 二.编程语言及算法 编程语言:py ...
- 八皇后问题python_python求解八皇后问题
今天突然有个行外的朋友扔了一张图给我,希望我能帮他用python做一下这个作业--八皇后问题. 八皇后问题是一种经典的数学求解问题,规则是在8×8的国际象棋棋盘上,要求在每一行(或者每一列)放置一个皇 ...
最新文章
- SiteView NNM安装
- 11.3/11.4/11.5 MySQL安装
- Android 蓝牙开发实例--蓝牙聊天程序的设计和实现
- python-opencv3 kmeans图像分类
- 编程之美求二进制数中1的个数扩展题
- Android知识点
- Log4j配置文件解读和模板页收藏
- redis面试精华指南pdf
- 第八节:数据库层次的锁机制详解和事务隔离级别
- python怎么命名未知数_python—命名规范
- HTML5学习总结(2)——header/nav/footer/article/section/aside
- 黑客帝国里的代码雨-java代码实现
- 深入浅出WPF(一)
- Halcon教程十四:训练自己的模型然后识别相似的图像
- 贴片电阻功率与尺寸对照表
- 挑筋(挑治)疗法——针挑治疗痔疮
- Android实现IOS轮效果(Android Studio)
- 三种数据交换技术的比较
- 人工智能是什么,机器学习就是人工智能吗?
- C#入门学习——飞行棋
热门文章
- 计算机帧号,计算机技术中说的“帧”是什么?
- 基于SSM框架的连锁超市购物零售后台管理系统
- Java线程同步(含详细解释/代码实例)
- linux调整zram大小,linux Kernel 添加 ZRAM 支持
- node egg企业付款到微信零钱
- oracle实例注册监听,Oracle 19C 监听无法动态注册实例
- java线程池的面试题_java线程池 面试题(精简)
- DS1302LCD1602显示
- 华为p30升级androID11,华为宣布:华为P30系列全面升级EMUI 11正式版!
- aspire鹦鹉螺_ASPIRE NAUTILUS AIO KIT | 再见鹦鹉螺……