我需要一个基于免疫遗传算法的matlab程序,关于函数寻优的,最好在附有讲解

我需要一个基于免疫遗传算法的matlab程序,关于函数寻优的,最好在附有讲解,第1张

% 主程序

%遗传算法主程序

%Name:genmain.m

%author:杨幂

clear

clf

%%初始化

popsize=50%群体大小

chromlength=30%字符串长度(个体长度)

pc=0.6%交叉概率

pm=0.1%变异概率

pop=initpop(popsize,chromlength)%随机产生初始群庆漏销体

%%开始迭代

for i=1:20 %20为迭代次数

[objvalue]=calobjvalue(pop)%计算目标函数

fitvalue=calfitvalue(objvalue)%计算群体中每个个体的适应度

[newpop]=selection(pop,fitvalue)%复制

[newpop]=crossover(pop,pc)%交叉

[newpop]=mutation(pop,pm)%变异

[bestindividual,bestfit]=best(pop,fitvalue)%求出群体中适应值最大的个搜态体及其适应值

y(i)=max(bestfit)%储存最优个体适应值

n(i)=i

pop5=bestindividual%储存最优个体

%解码

x1(i)=decodechrom(pop5,1,chromlength/2)*2/32767

x2(i)=10+decodechrom(pop5,chromlength/2+1,chromlength/2)*10/32767

pop=newpop%将新产生的种群作为当前种群

end

%%绘图

figure(1)%最优点变化趋势图

i=1:20

plot(y(i),'-r*')

xlabel('迭代次数')

ylabel('最优个体适应值')

title('最优点变化趋势')

legend('最优点'誉游)

grid on

figure(2)%最优点分布图

[X1,X2]=meshgrid(0:0.1:2,10:0.1:20)

Z=X1.^2+X2.^2

mesh(X1,X2,Z)

xlabel('自变量x1'),ylabel('自变量x2'),zlabel('函数值f(x1,x2)')

hold on

plot3(x1,x2,y,'ro','MarkerEdgeColor','r','MarkerFaceColor','r','MarkerSize',5)

title('最优点分布')

legend('最优点')

hold off

[z index]=max(y)%计算最大值及其位置

x5=[x1(index),x2(index)]%计算最大值对应的x值

z

首先,你需要学会c语言的基础语法,那么你就可以写一些简单的程序了。想要进阶就要进一步深入学习算法等。其次,学迅歼习编程语言必须要有兴趣,兴趣不够很容易半途而废。

格式的话,养成良好的缩进改庆习惯有助于别人和自己更容易看懂代码。

推荐一本书<<c primer plus>>写的很不错。

你还需要安装ide,推荐安装vs2012。

拓展资料:

C语言是一门通用计算机编核昌握程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12393205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存