matlab常用算法大全Word文档格式.docx

上传人:b****4 文档编号:17111075 上传时间:2022-11-28 格式:DOCX 页数:20 大小:22.39KB
下载 相关 举报
matlab常用算法大全Word文档格式.docx_第1页
第1页 / 共20页
matlab常用算法大全Word文档格式.docx_第2页
第2页 / 共20页
matlab常用算法大全Word文档格式.docx_第3页
第3页 / 共20页
matlab常用算法大全Word文档格式.docx_第4页
第4页 / 共20页
matlab常用算法大全Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

matlab常用算法大全Word文档格式.docx

《matlab常用算法大全Word文档格式.docx》由会员分享,可在线阅读,更多相关《matlab常用算法大全Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

matlab常用算法大全Word文档格式.docx

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=

Columns1through8

0.97410.96110.94190.87490.93110.90930.93020.9254

Columns9through16

0.92450.92780.94420.93760.91270.91480.93320.9477

Columns17through24

0.95920.94450.95510.95620.95940.94610.94690.9239

Columns25through31

0.91400.90770.92430.92680.93120.94460.9618

range=

0.87490.9741

x1=

1.0e+003*

0.03130.06340.09670.13220.17270.21620.26410.3155

0.37110.43130.49610.56470.63800.71820.80590.8999

0.99901.10241.21191.32651.44631.57121.70331.8427

Columns25through32

1.99362.15882.34072.53752.74992.97803.21943.4705

u=

-0.0665

31.3737

y=

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

yuce=

31.260034.587636.964139.504042.218345.119248.219451.5326

55.073458.857662.901767.223871.842876.779282.054887.6928

93.7183100.1578107.0397114.3945122.2547130.6550139.6324149.2267

159.4802170.4382182.1492194.6649208.0405222.3352237.6121253.9386

epsilon=

0-2.4976-3.5741-4.0540-1.6983-1.5992-0.3594-0.0826

0.52661.28241.91831.42621.37723.44085.63526.2772

5.44173.22222.42030.2055-2.4047-5.7350-7.5924-9.7767

-8.5502-5.3082-0.21922.16514.33955.73483.8379-2.9086

delta=

00.07780.10700.11440.04190.03670.00750.0016

0.00950.02130.02960.02080.01880.04290.06430.0668

0.05490.03120.02210.00180.02010.04590.05750.0701

0.05670.03210.00120.01100.02040.02510.01590.0116

rho=

-0.0411-0.0271-0.00660.06500.00490.02820.00580.0110

0.01190.0084-0.0091-0.00200.02450.02230.0027-0.0128

-0.0251-0.0094-0.0208-0.0219-0.0254-0.0111-0.01190.0126

0.02320.03000.01220.00950.0048-0.0095-0.0280

二、遗传算法程序代码

%Optimizingafunction 

usingSimpleGeneticAlgorithmwithelitistpreserved

%Maxf(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2;

-2.0480<

=x1,x2<

=2.0480

%Author:

WangYonglin(wylin77@)

clc;

clearall;

formatlong;

%设定数据显示格式

%初始化参数

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;

%最优适应度初值

%迭代开始

forii=1:

T

%解码,计算适应度

fori=1:

N

y1=0;

y2=0;

forj=1:

1:

L

y1=y1+bval(i,L-j+1)*2^(j-1);

x1=(umax-umin)*y1/(2^L-1)+umin;

y2=y2+bval(i,2*L-j+1)*2^(j-1);

x2=(umax-umin)*y2/(2^L-1)+umin;

obj(i)=100*(x1*x1-x2).^2+(1-x1).^2;

%目标函数

xx(i,:

)=[x1,x2];

func=obj;

%目标函数转换为适应度函数

p=func./sum(func);

q=cumsum(p);

%累加

[fmax,indmax]=max(func);

%求当代最佳个体

iffmax>

=bestv

bestv=fmax;

%到目前为止最优适应度值

bvalxx=bval(indmax,:

%到目前为止最佳位串

optxx=xx(indmax,:

%到目前为止最优参数

end 

 

Bfit1(ii)=bestv;

%存储每代的最优适应度

%%%%遗传操作开始

%轮盘赌选择

(N-1)

r=rand;

tmp=find(r<

=q);

newbval(i,:

)=bval(tmp

(1),:

end

newbval(N,:

)=bvalxx;

%最优保留

bval=newbval;

%单点交叉

2:

cc=rand;

ifcc<

pc

point=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:

bval(N,:

%位点变异

mm=rand(N,2*L)<

pm;

%N行

mm(N,:

)=zeros(1,2*L);

%最后一行不变异,强制赋0

bval(mm)=1-bval(mm);

%输出

plot(Bfit1);

%绘制最优适应度进化曲线

bestv 

%输出最优适应度值

optxx 

%输出最优参数

三、种子群算法程序代码

  %declaretheparametersoftheoptimization

  max_iterations=1000;

  no_of_particles=50;

  dimensions=1;

  delta_min=-0.003;

  delta_max=0.003;

  c1=1.3;

  c2=1.3;

  %initialisetheparticlesandteirvelocitycomponents

  forcount_x=1:

no_of_particles

  forcount_y=1:

dimensions

  particle_position(count_x,count_y)=rand*10;

  particle_velocity(count_x,count_y)=rand;

  p_best(count_x,count_y)=particle_position(count_x,count_y);

  end

  %initializethep_best_fitnessarray

  forcount=1:

  p_best_fitness(count)=-1000;

  %particle_position

  %particle_velocity

  %mainparticleswrmroutine

max_iterations

  %findthefitnessofeachparticle

  %changefitnessfunctionasperequationrequiresdanddimensions

  %x=particle_position(count_x,1);

  %y=particle_position(count_x,2);

  %z=particle_position(count_x,3);

  %soln=x^2-3*y*x+z;

  %x=particle_position(count_x);

  %soln=x^2-2*x+1;

  x=particle_position(count_x);

  soln=x-7;

  ifsoln~=0

  current_fitness(count_x)=1/abs(soln);

  else

  current_fitness=1000;

  %decideonp_bestetcforeachparticle

  ifcurrent_fitness(count_x)>

p_best_fitness(count_x)

  p_best_fitness(count_x)=current_fitness(count_x);

  %decideontheglobalbestamongalltheparticles

  [g_best_val,g_best_index]=max(current_fitness);

  %g_bestcontainsthepositionoftehglobalbest

  g_best(count_y)=particle_position(g_best_index,count_y);

  %updatethepositionandvelocitycompponents

  p_current(count_y)=particle_position(count_x,count_y);

  particle_velocity(count_y)=particle_velocity(count_y)+c1*rand*(p_best(count_y)-p_current(count_y))+c2*rand*(g_best(count_y)-p_current(count_y));

  particle_positon(count_x,count_y)=p_current(count_y)+particle_velocity(count_y);

  g_best

  current_fitness(g_best_index)

  clearall,clc%psoexample

  iter=1000;

%numberofalgorithmiterations

  np=2;

%numberofmodelparameters

  ns=10;

%numberofsetsofmodelparameters

  Wmax=0.9;

%maximuminertialweight

  Wmin=0.4;

%minimuminertialweight

  c1=2.0;

%parameterinPSOmethodology

  c2=2.0;

  Pmax=[1010];

%maximummodelparametervalue

  Pmin=[-10-10];

%minimummodelparametervalue

  Vmax=[11];

%maximumchangeinmodelparameter

  Vmin=[-1-1];

%minimumchangeinmodelparameter

  modelparameters(1:

np,1:

ns)=0;

%setallmodelparameterestimatesforallmodelparametersetstozero

  modelparameterchanges(1:

%setallchangeinmodelparameterestimatesforallmodelparametersetstozero

  bestmodelparameters(1:

%setbestmodelparameterestimatesforallmodelparametersetstozero

  setbestcostfunction(1:

ns)=1e6;

%setbestcostfunctionofeachmodelparametersettoalargenumber

  globalbestparameters(1:

np)=0;

%setbestmodelparametervaluesforallmodelparametersetstozero

  bestparameters=globalbestparameters'

%bestmodelparametervaluesforallmodelparametersets(toplot)

  globalbestcostfunction=1e6;

%setbestcostfunctionforallmodelparametersetstoalargenumber

  i=0;

%indicatesithalgorithmiteration

  j=0;

%indicatesjthsetofmodelparameters

  k=0;

%indicateskthmodelparameter

  fork=1:

np%initialization

  forj=1:

ns

  modelparameters(k,j)=(Pmax(k)-Pmin(k))*rand

(1)+Pmin(k);

%randomlydistributemodelparameters

  modelparameterchanges(k,j)=(Vmax(k)-Vmin(k))*rand

(1)+Vmin(k);

%randomlydistributechangeinmodelparameters

  fori=2:

iter

  x=modelparameters(:

j);

  %calculatecostfunction

  costfunction=105*(x

(2)-x

(1)^2)^2+(1-x

(1))^2;

  ifcostfunction<

setbestcostfunction(j)%bestcostfunctionforjthsetofmodelparameters

  bestmodelparameters(:

j)=modelparameters(:

  setbestcostfunction(j)=costfunction;

四、模拟退火算法

%ford=1:

50%循环10次发现最小路径为4.115,循环50次有3次出现4.115

T_max=80;

%input('

pleaseinputthestarttemprature'

T_min=0.001;

pleaseinputtheendtemprature'

iter_max=100;

%input('

pleaseinputthemostinterpstepsonthefittemp'

s_max=100;

pleaseinputthemoststeadystepsontthefittemp'

T=T_max;

load.\address.txt;

order1=randperm(size(address,1))'

%生成初始解。

figure

(1);

plot(address(order1,1),address(order1,2),'

*r-'

title('

随机产生的路径'

totaldis1=distance(address,order1);

forn=1:

size(address,1)

text(address(n,1)+0.01,address(n,2),num2str(n))%标号

end

text(0.9,0.9,num2str(totaldis1))

figure

(2);

whileT>

=T_min

iter_num=1;

s_num=1;

plot(T,totaldis1,'

r.'

holdon

whileiter_num<

iter_max&

s_num<

s_max;

order2=exhgpath(order1);

%随机交换两个城市位置

totaldis2=distance(address,order2);

R=rand;

DeltaDis=totaldis2-totaldis1;

%新的距离-原来的距离

ifDeltaDis<

0;

order1=order2;

totaldis1=totaldis2;

%新距离小,无条件接受

elseif(exp((totaldis1-totaldis2)/(T))>

R)%%%%本算法最核心的思想:

以一定概率接受坏的结果,防止局部最优

elses_num=s_num+1;

iter_num=iter_num+1;

T=T*0.99;

set(gca,'

xscale'

log'

%或者使用semilogx,有相同效果

xlabel('

退火温度'

ylabel('

总距离'

order1

totaldis1

figure(3)

plot(address(order1,1)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1