随笔分类 - 人工智能相关
摘要:标准PSO算法的C语言实现。测试函数为y=x*sin(10*PI*x)+2,x取值范围[-1,2],求最大值。View Code 1 /* 2 用粒子群算法求函数最值测试 3 测试函数为 y=x*sin(10*pi*x)+2 4 x取值范围[-1, 2] 5 */ 6 #include <stdio.h> 7 #include <math.h> 8 #include <time.h> 9 #include <stdlib.h>10 11 #define MAX(a,b) ((a)>(b)?(a):(b))12 #define PI 3.14
阅读全文
摘要:最近在做人工智能的课设,碰到一个与TSP类似的问题,今天尝试了一下用遗传算法求解TSP,下面是我碰到的问题以及我的一些想法:1.如何对个体进行编码?TSP问题的实质是求一个最短的哈密顿回路,如果将城市标号为0,1,2...n-1,那么TSP的一个解就是一个圆排列,等价于一个规定了起点的排列,所以容易想到可以用顺序编码方式,即用一个数组保存旅游顺序。2.如何快速初始化种群?根据上述编码方式,种群初始化就是产生一系列随机排列,c++有一个函数rand_shuffle(V.begin(),V.end())可以打乱一个排列,用这个可以实现种群的快速初始化。3.如何交叉?这个问题可以说是遗传算法求TSP
阅读全文
摘要:之前用matlab写过遗传算法,但从没用c实现过,今天老师布置了人工智能的课设,为了温故下学过的遗传算法,于是有了下面的代码……下面的代码是求y=x*sin(10*pi*x)+2 (-1<=x<=2)的(近似)最大值,但稍作修改即可求其他函数的最值。View Code 1 /* 2 用遗传算法求y=x*sin(10*pi*x)+2的最大值 -1=<x<=2 3 精确到6位小数 4 pow(2,21)<3*1000000<pow(2,22) 5 编码的二进制长度为22 6 */ 7 #include <stdio.h> 8 #include <
阅读全文