遗传算法求解高维函数(含MATLAB代码)

  • 文前推广

《遗传算法求解高维函数》
—— (若文首CSDN链接失效)本文所用MATLAB代码已整理至公众号中。
需要的关注公众号“猫和真人”,回复“2”即可获得资源包,有条件的支持一下哈!

  • 正文

本文代码出自网络上一位大神,年久失源,若代码原作者申明版权,请联系我进行删除!

高维函数属于NP问题,目前无标准方程可解。
用于求解“非劣解”逼近“最优解”的办法有很多,现在介绍“群智能算法”求解“高维函数”:

  • 示例算法:遗传算法
  • 待优化函数:f(x)=10sin(5x)+7*abs(x-5)+10)

【暂时先放MATLAB主程序代码,具体的算法分析会慢慢补充。
【需要MATLAB完整代码的去文章顶部的链接里面拿。

function genetic_algorithm_main()
clear;
clc;
popsize=100;%种群大小
chromlength=10;%(染色体长度)二进制编码长度
pc = 0.6;%交叉概率
pm = 0.001;%变异概率
pop = initpop(popsize,chromlength);%初始化种群

for i = 1:100
    %计算适应度值(函数值)
    %函数“cal_objvalue里面就存着需要解的高维函数:objvalue=10*sin(5*x)+7*abs(x-5)+10;”
    objvalue = cal_objvalue(pop);%得到目标函数值objvalue
    fitvalue = objvalue;
    
    newpop = selection(pop,fitvalue);%选择操作
    newpop = crossover(newpop,pc);%交叉操作
    newpop = mutation(newpop,pm);%变异操作
    pop = newpop;%更新种群
    
    %寻找最优解,找到适应度最大的个体->
    [bestindividual,bestfit] = best(pop,fitvalue);
    x2 = binary2decimal(bestindividual);%最佳个体
    y2 = cal_objvalue(bestindividual);%最佳个体目标函数值
    x1 = binary2decimal(newpop);%种群
    y1 = cal_objvalue(newpop);%种群的目标函数值
    if mod(i,10) == 0 %mod函数求i除以10的余数
    
    	%if i/10==1 %测试用,测试迭代次数为10时的值
        figure;%创建一个图形窗口
        %在指定范围内绘制函数图像->
        %fplot('10.*sin(5*x)+7.*abs(x-5)+10',[0 <
  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值