背景:遗传学和计算机的相交学科.
平行或关联算法:退火算法.神经网络模型
适用范围:.人工智能计算.已知
工程中全局最优解和局部最优解计算寻求最优解.已知
如果模拟可以尝试最优解值.未验证
说明:此文献给<疯狂程序员>作者boss绝和将来的我.
步骤0.编码和初始群体生成
定长二进制编码
步骤1.对当前群体的所有个体适应度计算
选中的数的函数值中除以平均数 一般不优化.就是这个值
步骤2.选择(内含复制和删除操作)
选中适应度(匹配度)最高的.删除最低的.把匹配最高的复制到删除里面.(占它的位置)
(删除几个文章并没有说.这个我后面讨论)
步骤3.杂交(交换)
几个算符的几个位进行交换这个取决于概率. 0.5~0.8
步骤4.变异
还是概率 0.1~0.01
步骤5.判定是否终止.终止输出结果.否则转步骤1.
举例
计算0~31内f(x)=x*x的最大值.
/**
*这个只是例子.并不注重结果.高数甚至初等数学很快就能算出来...
*/
第零步:编码
0~31全部转化为2进制. //准确来说这个不是二进制.而是二制.因为在这里不产生进位运算.
结果:0~31 00000~11111
选取x1=13=01101 x2=24=11000 x3=8=01000 x4=19=10011
第一步:适应度计算
f1=576 f2=361 f3=169 f4=64
p1=0.49 p2=0.31 p3=0.14 p4=0.05
第二步:选择
删除最低的. 8 复制最高的24
并且降序排列
x1=24 x2=24 x3=19 x4=13
第三步:杂交
不妨每次取x1和x4 x2和x3 //降序了嘛~~
随机算得x1 x4的K等于3.低三位交换.x2 x4K等于1交换末位.
结果{29,25,18,8}
第四步:变异
随机值太大.不变异.
循环5次后结果为{31,31,31,28}
第六次为{31,31,31,31}算法终止.
此过程为随机过程.后面加以讨论.
123是为什么系列
1.为啥是定长二(进)制编码?
用于简单开关判断.
1.5如何选取初始群体?
在(0,1)^n中平均选取.有利于多样性
2.为啥计算适应度?
有利于保留优良解.去掉劣解.但有的劣解容易得到最优解.
3.为啥选择包含删除和复制?
同上.复制有利于向最优解收敛.
4.为啥杂交?
有利于新物种的生成且保留优良属性.
5.为啥要变异?
有的杂交不出来.同时有利于保留样本多样性.甚至劣解有可能变异后产生优良解.
6.何时终止?
出现一致性.
下面的优化部分将分别对上面七个问题展开讨论.
优化部分和补充部分
一.算符定义的几个要点
1.单数字
对于直接可以二进制表示的.直接二进制表示的直接表示.
2.多变元开关
多编码.但是重要变元位数要少.防止杂交或者变异改变性质
3.非完备性编码
比如刚才是1~30
假设是M个.取**(2^n,m)=m yk=k*△=k*(2^n)/M
4.最小值不为0
移动到0. 比如1~32
5.混合的.
以上策略混合使用.
6.选取元素的个数.
1.0如果适应度计算简单则多选.如果计算复杂就少选.
2.0字符长则多选.否则少选
3.0变元多.多选.变元少.少选.
二.适应度
为了防止过早近亲繁殖.对于高的可以减少一些适应度.对于低的可以适当提高适应度.
三.选择
1)删除
选取0.1~0.2不宜太少.优良个体不突出.不宜太多.破坏种群多样性.
2)复制
一种是随机选取复制.一种是最高解复制.
cookie:几种复制策略
1.0 pi的选中用轮转法.比如x1的概率是0.1 x2是0.2 x3是0.7则0~0.10是X1 0.11~0.3是X2 0.31~1.00是X3
2.0 贪婪复制.对于高的0.8概率.对于低的0.2概率.
3.0级差选取. 贪婪复制的改进.多个级差.
4.0期望法:用期望代替概率.重新定义轮转.用分布律来.
四.杂交(交换)
杂交又叫交换
每个都是取随机数.0.5到0.8概率高了破坏优良.低了影响速度.
分为1位交换.2位交换和多位交换.
1位就是1位换.2位是直从i到j中间都换多位就是多个字段交换.
五.变异
每次取随机数.小于规定概率就突变一种策略是取反.一种策略是随机0或者1.后者是前者速度的0.5
变异有利于恢复种群多样性.有利于在解附近找更优解.(解的试探)
六.终止
终止条件根据情况选
条件1:对解有预测.出现就终止
条件2:对解有估计.逼近就终止.
条件3:对解有期望.超过期望就终止.
条件4:对计算次数有限制.达到就终止
条件5:解统一就终止 见例子
条件6:多样性变化不大就终止.
第六个特别适用于对解未知的计算
多样性计算 //这个貌似要搞矩阵.其实矩阵也就那么一点东西.
D(x)=(i=1,n)∑d(Ai,Ⅹ)=(i=1,n)∑((k=1,n) min [ |aik-ak(的平均值)|] )
这个Ⅹ就是ai的平均值...这个aij是欧几里得距离的最小值.. //可以用我的算法算最短路径了
//用dijkstra算法也可以更推荐我的. 因为我的那个是并行计算.更快
最后两点
1.0这个计算是完备性计算吗?
数学指明这个虽然是避免了局部最优解还是没法完全消除.这个很可能是局部最优解
1.5怎么办?
要么划分子群出来.种群分类局部搜索.要么调整适应度.
2.0对于限制条件下的规定
f(x)=g(x)-α(i=1,n)∑Φ[ hi (x) ]
其中α是惩罚系数 Φ[ hi (x) ]=[hi(x)]^2 是惩罚函数
文献:信息科学中的软计算方法 郭嗣琮 东北大学出版社 2001年版
人工智能方法与应用 尹朝庆 华中科技大学出版社 2007年版