|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
最近在做一个模型的优化,用到了matlab7.0中的遗传算法
我设计的算法是.1、选定初始参数,求解微分方程组
2、将方程的解与实验值比较,有一个目标函数
3、目标函数符合要求输出结果,不符合调整参数回到1。
下面是我编的解微分方程和目标函数的程序。
解微分方程:
%fangchengzu.m
%模型的方程组
function dydt=fangchengzu(t,y,a,b,c,d,e,f)
%function dydt=fangchengzu(t,y)
dydt=zeros(5,1);
%Xf、Xd、V、S、P分别对应矩阵dydt中5个元素
%a,b,c,d,e,f分别代表参数λ、kd、Z、ki、a、b
dydt(2)=a*y(4)*y(3)*y(2)-b*y(2);
dydt(1)=y(1)*(a*y(4)*(1-y(3))-(y(1)/(y(3)*y(2)))^2)+c*y(3)*y(2);
dydt(3)=y(3)*(a*y(4)*(1-y(3))-d*(y(1)/(y(3)*y(2)))^2);
dydt(4)=(b-a*y(4)*y(3))*y(2)/0.4842;
dydt(5)=y(3)*y(2)*(e*a(1)*y(4)*y(3)-e*b+f)+y(5)*(a*y(4)*(1-y(3))-d*(y(1)/(y(3)*y(2)))^2);
目标函数程序:
%jiefangcheng.m
%解模型的常微分方程组
function mubiao=jiefangchengzu(x)
a=x(1);
b=x(2);
c=x(3);
d=x(4);
e=x(5);
f=x(6);
[t,y]=ode45(@fangchengzu,[0,2,4,6,8,10,12,14],[92.727;3.920;0.8;29.366;6.954],[],a,b,c,d,e,f);
%调用ode45函数求解微分方程
z=[92.727,3.920,0.8,29.366,6.954;97.800,4.459,0.95,29.224,7.479;120.262,6.104,0.96,26.507,12.413;200.423,12.159,0.91,19.048,29.254;245.727,15.646,0.86,8.848,26.401;302.264,15.883,0.76,3.402,25.461;319.327,15.808,0.59,0.149,23.452;306.907,14.524,0.40,0.151,17.193];
%z为t=[0,2,4,6,8,10,12,14]时刻,Xf、Xd、V、S、P对应的实验值
mubiao=sum(sum((z-y).^2));
%目标函数,使其求得最小值
之后使用matlab7.0中的gatool优化参数就出问题了。
求高手帮忙看看,之后应该怎么做
我有matlab7.0安装盘,《遗传算法工具箱及应用》等遗传算法的书籍。
这里上传只能200K,有需要的我可以发到你们邮箱,大家一起学习交流 |
-
|