def main(self): popobj = [] self.ng_best = np.zeros((1, self.var_num))[0] for gen in range(self.NGEN): self.update_operator(self.pop_size) popobj.append(self.fitness(self.g_best)) print('############ Generation {} ############'.format(str(gen + 1))) if self.fitness(self.g_best) > self.fitness(self.ng_best): self.ng_best = self.g_best.copy() print('最好的位置:{}'.format(self.ng_best)) print('最大的函数值:{}'.format(self.fitness(self.ng_best))) print("---- End of (successful) Searching ----") plt.figure() fig = plt.gcf() fig.set_size_inches(18.5, 10.5) plt.title("Figure1") plt.xlabel("iterators", size=14) plt.ylabel("fitness", size=14) t = [t for t in range(self.NGEN)] plt.plot(t, popobj, color='b', linewidth=2) plt.show()
时间: 2024-04-28 19:22:31 浏览: 91
mseq.rar_matlab ms_mseq_mseq.m_m序列
这段代码是一个实现粒子群算法(PSO)的主函数。算法的输入包括种群大小pop_size、迭代次数NGEN、变量个数var_num、更新算子update_operator和适应度函数fitness。算法首先初始化全局最优解ng_best和种群中每个个体的位置和速度,然后进入迭代过程。在每次迭代中,算法使用update_operator更新种群中每个个体的位置和速度,并计算每个个体的适应度值。将每次迭代中全局最优解ng_best和每个个体的适应度值保存在popobj列表中,并输出当前迭代次数、最好的位置和最大的函数值。最后,将每次迭代中种群中所有个体的适应度值popobj绘制成折线图。
需要注意的是,这段代码中存在一些变量和函数的调用,需要结合完整的代码才能理解其含义。
阅读全文