matlab中用遗传算法拟合方程 10

如图,x1x2x3x4为四个变量构成矩阵X,Y为因变量,应用遗传算法对其拟合、结果如图2,求过程!!选择操作概率0.2,交叉操作概率0.7,则变异操作概率0.1,种群规模... 如图,x1 x2 x3 x4为四个变量构成矩阵X,Y为因变量,应用遗传算法对其拟合、结果如图2,求过程!!
选择操作概率0.2,交叉操作概率0.7,则变异操作概率0.1,种群规模取为50。遗传代数取为200。。。计算结果在80代取得最优
展开
 我来答
dgrassx
2016-08-04 · TA获得超过400个赞
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:153万
展开全部
例如:
已知数据队列 buf=【5410.】
x取值 1:n n是队列长度
函数 f(x)=a+b*sin(c*x+d) .
avg 是队列平均值
a b c d 为参数 a范围 (2/3,1)*avg
b范围 (0,1/3)*avg
c的范围 (0,24*pi)
d (0,2*pi)
1、首先定义目标函数
function y=ga_curfit(x)
global ydata n
t=1:n;
y=0;
for i=1:n
y=y+(ydata(i)-(x(:,1)+x(:,2).*sin(x(:,3).*t(i)+x(:,4)))).^2/n;
end
y=sqrt(y);
end
2、把数据b.txt放在工作空间目录中
然后再命令窗口中输入
clear
global ydata n
format long g
load b.txt
ydata=b';
n=length(ydata);
avg=sum(ydata)/n;
LB=[2/3*avg 0 0 0];
UB=[1*avg 1/3*avg 24*pi 2*pi];
nvars=4;
options=gaoptimset;
options=gaoptimset(options,'PopulationSize',300);
options=gaoptimset(options,'CrossoverFraction',0.8);
options=gaoptimset(options,'MigrationFraction',0.1);
options=gaoptimset(options,'Generations',500);
options = gaoptimset(options,'TolFun',1e-50);
%options = gaoptimset(options,'InitialPopulation',final_pop);
options = gaoptimset(options,'Display','final');
options = gaoptimset(options,'PopInitRange',[LB;UB]);
options = gaoptimset(options,'PlotFcns',@gaplotbestf);
options=gaoptimset(options,'Vectorize','on');%目标函数向量化
[x,fval,exitflag,output,final_pop,scores]=ga(@ga_curfit,nvars,[],[],[],[],LB,UB,[],options);
t=1:n;
plot(t,ydata,'r*');
hold on
plot(t,x(1)+x(2)*sin(x(3)*t+x(4)))
legend('数据','拟合')
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式