进化算法

进化算法概念:以达尔文的进化思想为基础,通过模拟生物进化过程与机制的求解问题的自组织、自适应的人工智能技术。生物进化是通过繁殖、变异、竞争和选择实现的;而进化算法则主要通过选择、重组和变异这三种操作实现优化问题的求解。代码: http://wenku.baidu.com/view/dadb76601ed9ad51f01df2f1.html

1. pop=initpop(popsize,chromlength);
  随机生成一个 popsize*chromlength 的矩阵。
2.  [objvalue]=calobjvalue(pop);  
  对于给出的目标函数,计算目标函数值:
  a. 将矩阵pop从第k列分成2个矩阵,将每个矩阵转换为十进制数。最终成为一个popsize*1的矩阵。 
  b. 将popsize*1矩阵中的数转换为满足要求的取值范围,两个矩阵即对应变量。
  c. 带入目标函数求出目标函数值(popsize*1的矩阵)。
3.  fitvalue=calfitvalue(objvalue);
  计算每个个体的适应度
4. [bestindividual,bestfit]=best(pop,fitvalue);
  求出群体中适应度最大的个体及其适应度值  
  a. pop矩阵中的一行对应一个个体,fitvalue对应该个体的适应度值。
  b. 找出适应度最大所对应的个体,即pop矩阵中的某一行。
5. 针对4步骤找到的最优个体,根据步骤2算出最佳个体的目标函数值。
6. [newpop1]=selection(pop,fitvalue);   %选择算子 
  根据步骤3求得的每个个体的适应度,筛选出适应度较高的个体。    
7. [newpop2]=crossover(newpop1,pc);   %交叉算子      
8. [newpop3]=mutation(newpop2,pm);   %变异算子
  第7-8步根据第6步产生的新pop矩阵,进行交叉和一定概率的变异。
9. 产生新种群。

循环2-9步500次,找到最优解。得到如下图的曲线,

进化算法


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值