matlab 常用算法大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)=*(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-*u(1))/(1+*u(1))*lamda %计算级比偏差值
%以深圳人口数据得到预测模型及预测误差相关数据
lamda =
Columns 1 through 8
Columns 9 through 16
Columns 17 through 24
Columns 25 through 31
range =
x1 =
+003 *
Columns 1 through 8
Columns 9 through 16
Columns 17 through 24
Columns 25 through 32
u =
y =
+*exp(.664533e-1*t)
yuce =
Columns 1 through 8
Columns 9 through 16
Columns 17 through 24
Columns 25 through 32
epsilon =
Columns 1 through 8
0 Columns 9 through 16
Columns 17 through 24
Columns 25 through 32
delta =
Columns 1 through 8
Columns 9 through 16
Columns 17 through 24
Columns 25 through 32
rho =
Columns 1 through 8
Columns 9 through 16
Columns 17 through 24
Columns 25 through 31
二、遗传算法程序代码
% Optimizing a function using Simple Genetic Algorithm with elitist preserved
%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; <=x1,x2<=
% Author: Wang Yonglin ()
clc;clear all;
format long;%设定数据显示格式
%初始化参数
T=100;%仿真代数
N=80;% 群体规模
pm=;pc=;%交叉变异概率
umax=;umin=;%参数取值范围
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);