个人对寻优算法的理解,就是存在一个系统F,我们想找一个最好的参数X,使F(X)运行起来处于最佳状态。
首先这个X可以有很多种可能,我们可以一个一个拿到系统里面去试,但是没有必要。这就像男人找老婆,男人都想找一个最合适自己的老婆X,目的是让家庭F运行得更好,这是一个寻优过程,全世界女人的集合就是寻优的域。但是你不可能把全世界的女人都娶回家试试,虽然试出来的结果绝对是全局最优但是没必要。所以男人们心里有杆秤,什么样的女人比较适合自己,这就是评价函数E,比如E=0.5*善良+0.5美丽,这样就可以快速排除掉一些不适合的参数X,例如某个女人的X=[肮脏,恶毒]。但E和F有本质区别,F作为系统,是客观存在的,E作为评价函数,是主观的。
遗传算法
(1)初始化M个X
(2)评价这些X,并排序,选择前N个较好的X作为备选集
(3)交换备选集中X的基因,生成新的一些X
(4)改变备选集中X的基因,生成新的一些X
(5)返回(2),以上一轮为一代,经历N代为终止条件,输出最好的X
模拟退火算法
(1)初始化一个X
(2)给X增加随机扰动,生成X'
(3)评价X'是不是比X更好,即ΔT=E(X')-E(X),如果是则替换X,否则根据一定概率替换X,概率计算公式为
exp(-ΔT/T)>Random(0,1)
(4)到达迭代次数,且找不到更优的X',则输出X,否则减小T继续迭代
粒子群优化算法
(1)初始化M个X
(2)评价这些X,计算个体极值pBest与全体极值gBest
(3)通过公式V=wV+C1*Random(0,1)*(pBest-X)+C2*Random(0,1)*(gBest-X)更新每个X
(4)最后所有X会趋向于同一个点
差分进化算法
(1)初始化M个X
(2)对应每个X,选择另三个X,进行变异,变异公式X'=X1+f(X2-X3)
(3)对应每个X和X',随机交叉生成新的Xnew
(4)评价X和Xnew,如果Xnew更好则替换X
(5)到达迭代次数,输出最好的X
(太多了,后面慢慢整理。讨论请留言,错误请指正。)