GA遗传算法解决TSP问题
Matlab函数
-
随机数生成函数:
- rand(n,1):返回n个0到1随机数排列的列向量。
- randn(n,1):类似,服从标准正态分布。
- randperm(n):返回n以内随机数排列的n维行向量。
- unifrnd(a,b,n,1):生成(a,b)区间均匀分布的n个随机数列向量。
-
取整函数:
- fix():取小于n的整数。
- round(n):四舍五入。
- ceil(n):向正方向舍入,floor(n):向负方向舍入。
-
zeros(m,n):生成m*n全0阵。常用于提前分配数组大小,提升性能。
ones():类似,生成全1阵。
-
sort(A):对向量A升序排序后返回。
-
cumsum(A,1):矩阵A每行元素与对应上一行元素相加得到新一行。
-
矩阵间的**.*或./**表示对应位置的元素两两相乘除。
遗传算法认知
- 作用:解决遍历求解次数过多的问题,以生物进化优胜劣汰的思想有效减少遍历次数。
- 步骤:
- 设置种群规模,最大迭代次数,交叉率,变异率,代沟(选择概率)以及适应度函数。
- 建立或更新种群,染色体即为一个排好的序列。
- 记录最优值,适应度值。
- 自然选择,淘汰一部分个体。
- 留下的进行交叉、变异、进化逆转等操作。
- 插入父代优秀个体,构成子代。
- 代码及注释1:
参考自公众号基山督。 ↩︎