matlab 常用算法大全

  • 格式:doc
  • 大小:101.50 KB
  • 文档页数:22

实用文档 标准 Matlab 高级算法程序代码汇总

一、灰色预测模型matlab程序 % renkou1=renkou(:,1);%年末常住人口数 % renkou2=renkou(:,2);%户籍人口 % renkou3=renkou(:,3);%非户籍人口 % shjian=1979:2010; %以上数据自己给 x0=renkou2'; n=length(x0); lamda=x0(1:n-1)./x0(2:n) range=minmax(lamda) x1=cumsum(x0) for i=2:n z(i)=0.5*(x1(i)+x1(i-1)); end B=[-z(2:n)',ones(n-1,1)]; Y=x0(2:n)'; u=B\Y x=dsolve('Dx+a*x=b','x(0)=x0'); x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)}); yuce1=subs(x,'t',[0:n-1]); digits(6),y=vpa(x) %为提高预测精度,先计算预测值,再显示微分方程的解 yuce=[x0(1),diff(yuce1)] epsilon=x0-yuce %计算残差 delta=abs(epsilon./x0) %计算相对误差 rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda %计算级比偏差值

%以深圳人口数据得到预测模型及预测误差相关数据

lamda = Columns 1 through 8 0.9741 0.9611 0.9419 0.8749 0.9311 0.9093 0.9302 0.9254 Columns 9 through 16 0.9245 0.9278 0.9442 0.9376 0.9127 0.9148 0.9332 0.9477 Columns 17 through 24 0.9592 0.9445 0.9551 0.9562 0.9594 0.9461 0.9469 0.9239 Columns 25 through 31 0.9140 0.9077 0.9243 0.9268 0.9312 0.9446 实用文档 标准 0.9618

range = 0.8749 0.9741

x1 = 1.0e+003 * Columns 1 through 8 0.0313 0.0634 0.0967 0.1322 0.1727 0.2162 0.2641 0.3155 Columns 9 through 16 0.3711 0.4313 0.4961 0.5647 0.6380 0.7182 0.8059 0.8999 Columns 17 through 24 0.9990 1.1024 1.2119 1.3265 1.4463 1.5712 1.7033 1.8427 Columns 25 through 32 1.9936 2.1588 2.3407 2.5375 2.7499 2.9780 3.2194 3.4705

u = -0.0665 31.3737

y =

-472.117+503.377*exp(.664533e-1*t)

yuce = Columns 1 through 8 31.2600 34.5876 36.9641 39.5040 42.2183 45.1192 48.2194 51.5326 Columns 9 through 16 55.0734 58.8576 62.9017 67.2238 71.8428 76.7792 82.0548 87.6928 Columns 17 through 24 93.7183 100.1578 107.0397 114.3945 122.2547 130.6550 139.6324 149.2267 Columns 25 through 32 159.4802 170.4382 182.1492 194.6649 208.0405 222.3352 237.6121 253.9386

epsilon = Columns 1 through 8 实用文档 标准 0 -2.4976 -3.5741 -4.0540 -1.6983 -1.5992 -0.3594 -0.0826 Columns 9 through 16 0.5266 1.2824 1.9183 1.4262 1.3772 3.4408 5.6352 6.2772 Columns 17 through 24 5.4417 3.2222 2.4203 0.2055 -2.4047 -5.7350 -7.5924 -9.7767 Columns 25 through 32 -8.5502 -5.3082 -0.2192 2.1651 4.3395 5.7348 3.8379 -2.9086

delta = Columns 1 through 8 0 0.0778 0.1070 0.1144 0.0419 0.0367 0.0075 0.0016 Columns 9 through 16 0.0095 0.0213 0.0296 0.0208 0.0188 0.0429 0.0643 0.0668 Columns 17 through 24 0.0549 0.0312 0.0221 0.0018 0.0201 0.0459 0.0575 0.0701 Columns 25 through 32 0.0567 0.0321 0.0012 0.0110 0.0204 0.0251 0.0159 0.0116

rho = Columns 1 through 8 -0.0411 -0.0271 -0.0066 0.0650 0.0049 0.0282 0.0058 0.0110 Columns 9 through 16 0.0119 0.0084 -0.0091 -0.0020 0.0245 0.0223 0.0027 -0.0128 Columns 17 through 24 -0.0251 -0.0094 -0.0208 -0.0219 -0.0254 -0.0111 -0.0119 0.0126 Columns 25 through 31 0.0232 0.0300 0.0122 0.0095 0.0048 -0.0095 -0.0280

二、遗传算法程序代码 % Optimizing a function using Simple Genetic Algorithm with elitist preserved 实用文档 标准 %Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480 % Author: Wang Yonglin (wylin77@126.com) clc;clear all; format long;%设定数据显示格式 %初始化参数 T=100;%仿真代数 N=80;% 群体规模 pm=0.05;pc=0.8;%交叉变异概率 umax=2.048;umin=-2.048;%参数取值范围 L=10;%单个参数字串长度,总编码长度2L bval=round(rand(N,2*L));%初始种群 bestv=-inf;%最优适应度初值 %迭代开始 for ii=1:T %解码,计算适应度 for i=1:N y1=0;y2=0; for j=1:1:L y1=y1+bval(i,L-j+1)*2^(j-1); end x1=(umax-umin)*y1/(2^L-1)+umin; for j=1:1:L y2=y2+bval(i,2*L-j+1)*2^(j-1); end x2=(umax-umin)*y2/(2^L-1)+umin; obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目标函数 xx(i,:)=[x1,x2]; end func=obj;%目标函数转换为适应度函数 p=func./sum(func); 实用文档 标准 q=cumsum(p);%累加 [fmax,indmax]=max(func);%求当代最佳个体 if fmax>=bestv bestv=fmax;%到目前为止最优适应度值 bvalxx=bval(indmax,:);%到目前为止最佳位串 optxx=xx(indmax,:);%到目前为止最优参数 end Bfit1(ii)=bestv; % 存储每代的最优适应度 %%%%遗传操作开始 %轮盘赌选择 for i=1:(N-1) r=rand; tmp=find(r<=q); newbval(i,:)=bval(tmp(1),:); end newbval(N,:)=bvalxx;%最优保留 bval=newbval; %单点交叉 for i=1:2:(N-1) cc=rand; if ccpoint=ceil(rand*(2*L-1));%取得一个1到2L-1的整数 ch=bval(i,:); bval(i,point+1:2*L)=bval(i+1,point+1:2*L); bval(i+1,point+1:2*L)=ch(1,point+1:2*L); end end bval(N,:)=bvalxx;%最优保留 %位点变异 mm=rand(N,2*L)