遗传算法作为一种智能算法,在求解目标数值时经常使用,而在MATLAB中的遗传算法工具箱只实现了输出最终参数和最优的适应度值,对于迭代过程中的迭代适应度值未给出,经过不断实验找到了最简单的一种迭代结果存储与输出。
首先打开ga函数
[x,fval,exitflag,output,population,score]=ga(@fun,nvars,Aineq,bineq,Aeq,beq,lb,ub,[],[],options)
从后面往前找,找到Call appropriate single objective optimization solver(调用适当的单目标优化求解器),有很多函数,这个全部修改也可以,加入间断点,步进找到调用的求解器也可以。
以gaunc为例子,打开gaunc,找到 Run the main loop until some termination condition becomes true(运行主循环,直到某个终止条件变为真),这段话在68行左右,在while循环后加入输出的适应度值存储矩阵。
因为state是一个存储迭代次数、最优值等等的结构体,因此首先调用该结构体中的迭代次数。
gen=state.Generation %迭代次数
然后调此时的最优值及写入存储矩阵。
bestfitness(gen,:)=state.Best(gen); %写入
最后在gaunc输出bestfiitaness,以及在ga中输出,