对于函数 f=x*sin(x)*cos(2*x)-2*x*sin(3*x),求其在区间[0,20]上
该函数的最大值。
�
初始化种群
已知位置限制[0,20],由于一维问题较为简单,因此可以取初始种
群 N 为 50,迭代次数为 100,当然空间维数 d 也就是 1。
位置和速度的初始化即在位置和速度限制内随机生成一个 N×d
的矩阵,对于此题,位置初始化也就是在 0~20 内随机生成一个 50×1
的数据矩阵,而对于速度则不用考虑约束,一般直接在 0~1 内随机生
成一个 50×1 的数据矩阵。
此处的位置约束也可以理解为位置限制,而速度限制是保证粒子
步长不超限制的,一般设置速度限制为[-1,1]。
粒子群的另一个特点就是记录每个个体的历史最优和种群的历
史最优,因此而二者对应的最优位置和最优值也需要初始化。其中每
个个体的历史最优位置可以先初始化为当前位置,而种群的历史最优
位置则可初始化为原点。对于最优值,如果求最大值则初始化为负无
穷,相反地初始化为正无穷。
每次搜寻都需要将当前的适应度和最优解同历史的记录值进行
对比,如果超过历史最优值,则更新个体和种群的历史最优位置和最
优解。