24小时热门版块排行榜    

查看: 2507  |  回复: 8

For_study

金虫 (小有名气)

木虫

[求助] 遗传算法优化微分方程中的参数 已有1人参与

%拟合微分方程参数
%直接拟合反应的活化能和指前因子
function mynewtry4
clear;
clc;

%遗传算法
lb1=5*ones(1,22); lb2=-100000*ones(1,22); lb=[lb1,lb2];  ub1=100*ones(1,22); ub2=-1000*ones(1,22); ub=[ub1,ub2];
options = gaoptimset('Generations',1000,'StallGenLimit',50,...
     'StallTimeLimit',50,'TolFun',1e-12,'TolCon',1e-12,'MutationFcn',@mutationadaptfeasible);
[h0,fval,exitflag,reason,output,final_pop]=ga(@my_funtest1,44,options);

%输出参数
fprintf('\n\n遗传算法的估计数值:\n');
disp(h0);


%构造适应度函数my_funtest
function yfit=my_funtest1(h)
    tspan1=0:0.05:0.5;
    y01=[0.561,0.298,0.141,0 0 0 0 0];
[t,ycal1]=ode45(@myfun1,tspan1,y01,[],h);

y02=ycal1(11,;
tspan2=0.5:0.05:1;
[t,ycal2]=ode45(@myfun2,tspan2,y02,[],h);
ycalculate=ycal2(11,
yreal2=[0.0587 0 0 0.1988 0.3889 0.2309 0.0397 0.083];
for i=4:8
   ff(i)=(ycalculate(i)-yreal2(i))^2;
end
yfit=sum(ff)
end

function dy = myfun1(t,y,h)

% 动力学微分方程
% 共分为8集总,原料(饱和分SS为1,芳香分SA为2,胶质沥青质SR为3),柴油(D)为4,汽油(G)为5,液化气(LPG)为6,干气(Gas)为7,焦炭(C)为8,
% 由于遗传算法只能返回向量,所以反应常数不能是矩阵,只能是向量,第一个数表示反应物,第二个数表示生成物
%反应常数k(1,4)=k(1),k(1,5)=k(2),k(1,6)=k(3),k(1,7)=k(4),k(1,8)=k(5),k(2,4)=k(6),
%  k(2,5)=k(7),k(2,6)=k(8),k(2,7)=k(9),k(2,8)=k(10),k(3,4)=k(11),k(3,5)=k(12),
%  k(3,6)=k(13),k(3,7)=k(14),k(3,8)=k(15),k(4,5)=k(16),k(4,6)=k(17),k(4,7)=k(18),
%  k(4,8)=k(19),k(5,6)=k(20),k(5,7)=k(21),k(5,8)=k(22)
%
%
A=1;N=1;
deact=1;
dens=13.357;  %单位是kg/m^3
Swh=90;   %单位s
Tem=788; R=8.314;

k=zeros(1,22);
k(1)=h(1)*exp(-h(23)/(R*Tem));  % R常数,8.314,Tem温度,h表示活化能23-44,J/mol   指前因子1-22   kg/(m^3.s)
k(2)=h(2)*exp(-h(24)/(R*Tem));
k(3)=h(3)*exp(-h(25)/(R*Tem));
k(4)=h(4)*exp(-h(26)/(R*Tem));
k(5)=h(5)*exp(-h(27)/(R*Tem));
k(6)=h(6)*exp(-h(28)/(R*Tem));
k(7)=h(7)*exp(-h(29)/(R*Tem));
k(8)=h(8)*exp(-h(30)/(R*Tem));
k(9)=h(9)*exp(-h(31)/(R*Tem));
k(10)=h(10)*exp(-h(32)/(R*Tem));
k(11)=h(11)*exp(-h(33)/(R*Tem));
k(12)=h(12)*exp(-h(34)/(R*Tem));
k(13)=h(13)*exp(-h(35)/(R*Tem));

k(14)=h(14)*exp(-h(36)/(R*Tem));
k(15)=h(15)*exp(-h(37)/(R*Tem));
k(16)=h(16)*exp(-h(38)/(R*Tem));
k(17)=h(17)*exp(-h(39)/(R*Tem));
k(18)=h(18)*exp(-h(40)/(R*Tem));
k(19)=h(19)*exp(-h(41)/(R*Tem));

k(20)=h(20)*exp(-h(42)/(R*Tem));
k(21)=h(21)*exp(-h(43)/(R*Tem));
k(22)=h(22)*exp(-h(44)/(R*Tem));

dy(1)=-(k(1)+k(2)+k(3)+k(4)+k(5))*y(1)*A*N*deact*dens/Swh;  % A重芳烃失活系数,N碱氮吸附失活系数,deact催化剂结焦失活系数,dens密度,Swh真实重时空速
dy(2)=-(k(6)+k(7)+k(8)+k(9)+k(10))*y(2)*A*N*deact*dens/Swh;
dy(3)=-(k(11)+k(12)+k(13)+k(14)+k(15))*y(3)*A*N*deact*dens/Swh;
dy(4)=(k(1)*y(1)+k(6)*y(2)+k(11)*y(3)-(k(16)+k(17)+k(18)+k(19))*y(4))*A*N*deact*dens/Swh;
dy(5)=(k(2)*y(1)+k(7)*y(2)+k(12)*y(3)+k(16)*y(4)-(k(20)+k(21)+k(22))*y(5))*A*N*deact*dens/Swh;
dy(6)=(k(3)*y(1)+k(8)*y(2)+k(13)*y(3)+k(17)*y(4)+k(20)*y(5))*A*N*deact*dens/Swh;
dy(7)=(k(4)*y(1)+k(9)*y(2)+k(14)*y(3)+k(18)*y(4)+k(21)*y(5))*A*N*deact*dens/Swh;
dy(8)=(k(5)*y(1)+k(10)*y(2)+k(15)*y(3)+k(19)*y(4)+k(22)*y(5))*A*N*deact*dens/Swh;
dy=dy';

end




function dy = myfun2(t,y,h)

% 动力学微分方程
% 共分为8集总,原料(饱和分SS为1,芳香分SA为2,胶质沥青质SR为3),柴油(D)为4,汽油(G)为5,液化气(LPG)为6,干气(Gas)为7,焦炭(C)为8,
% 由于遗传算法只能返回向量,所以反应常数不能是矩阵,只能是向量,第一个数表示反应物,第二个数表示生成物
%反应常数k(1,4)=k(1),k(1,5)=k(2),k(1,6)=k(3),k(1,7)=k(4),k(1,8)=k(5),k(2,4)=k(6),
%  k(2,5)=k(7),k(2,6)=k(8),k(2,7)=k(9),k(2,8)=k(10),k(3,4)=k(11),k(3,5)=k(12),
%  k(3,6)=k(13),k(3,7)=k(14),k(3,8)=k(15),k(4,5)=k(16),k(4,6)=k(17),k(4,7)=k(18),
%  k(4,8)=k(19),k(5,6)=k(20),k(5,7)=k(21),k(5,8)=k(22)
%
%
A=1;N=1;
deact=1;
dens=13.357;Swh=90;
Tem=761; R=8.314;

k=zeros(1,22);
k(1)=h(1)*exp(-h(23)/(R*Tem));  % R常数,8.314,Tem温度,h表示活化能1-22,之前因子23-44
k(2)=h(2)*exp(-h(24)/(R*Tem));
k(3)=h(3)*exp(-h(25)/(R*Tem));
k(4)=h(4)*exp(-h(26)/(R*Tem));
k(5)=h(5)*exp(-h(27)/(R*Tem));
k(6)=h(6)*exp(-h(28)/(R*Tem));
k(7)=h(7)*exp(-h(29)/(R*Tem));
k(8)=h(8)*exp(-h(30)/(R*Tem));
k(9)=h(9)*exp(-h(31)/(R*Tem));
k(10)=h(10)*exp(-h(32)/(R*Tem));
k(11)=h(11)*exp(-h(33)/(R*Tem));
k(12)=h(12)*exp(-h(34)/(R*Tem));
k(13)=h(13)*exp(-h(35)/(R*Tem));

k(14)=h(14)*exp(-h(36)/(R*Tem));
k(15)=h(15)*exp(-h(37)/(R*Tem));
k(16)=h(16)*exp(-h(38)/(R*Tem));
k(17)=h(17)*exp(-h(39)/(R*Tem));
k(18)=h(18)*exp(-h(40)/(R*Tem));
k(19)=h(19)*exp(-h(41)/(R*Tem));

k(20)=h(20)*exp(-h(42)/(R*Tem));
k(21)=h(21)*exp(-h(43)/(R*Tem));
k(22)=h(22)*exp(-h(44)/(R*Tem));

dy(1)=-(k(1)+k(2)+k(3)+k(4)+k(5))*y(1)*A*N*deact*dens/Swh;  % A重芳烃失活系数,N碱氮吸附失活系数,deact催化剂结焦失活系数,dens密度,Swh真实重时空速
dy(2)=-(k(6)+k(7)+k(8)+k(9)+k(10))*y(2)*A*N*deact*dens/Swh;
dy(3)=-(k(11)+k(12)+k(13)+k(14)+k(15))*y(3)*A*N*deact*dens/Swh;
dy(4)=(k(1)*y(1)+k(6)*y(2)+k(11)*y(3)-(k(16)+k(17)+k(18)+k(19))*y(4))*A*N*deact*dens/Swh;
dy(5)=(k(2)*y(1)+k(7)*y(2)+k(12)*y(3)+k(16)*y(4)-(k(20)+k(21)+k(22))*y(5))*A*N*deact*dens/Swh;
dy(6)=(k(3)*y(1)+k(8)*y(2)+k(13)*y(3)+k(17)*y(4)+k(20)*y(5))*A*N*deact*dens/Swh;
dy(7)=(k(4)*y(1)+k(9)*y(2)+k(14)*y(3)+k(18)*y(4)+k(21)*y(5))*A*N*deact*dens/Swh;
dy(8)=(k(5)*y(1)+k(10)*y(2)+k(15)*y(3)+k(19)*y(4)+k(22)*y(5))*A*N*deact*dens/Swh;
dy=dy';

end
end


问题叙述,遗传算法未设定lb和ub时,程序可以正常运行,获得结果,当设定lb和ub后,程序依然可以运行(不会报错),但是只能运算一次优化后的结果(设置断点时发现)。遗传算法好像没有继续优化下去,希望有大神可以帮忙解答一下问题。。。。谢谢。。。。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

第一颗纽扣扣错了。。。。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

For_study

金虫 (小有名气)

木虫

没人吗。。。。。。。。。。?
第一颗纽扣扣错了。。。。
2楼2015-12-09 14:14:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

For_study

金虫 (小有名气)

木虫

自己再顶一下。。。。。
第一颗纽扣扣错了。。。。
3楼2015-12-09 14:15:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
换1stOpt试试,微分方程拟合简单好用的多。
4楼2015-12-09 16:06:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yufeishu

银虫 (小有名气)

然而并看不懂
5楼2015-12-10 10:00:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ybkooo

至尊木虫 (著名写手)

^^

好多笑脸.
abcd
6楼2015-12-10 21:36:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

For_study

金虫 (小有名气)

木虫

引用回帖:
6楼: Originally posted by ybkooo at 2015-12-10 21:36:38
好多笑脸.

笑脸是因为笑脸的代码和我打出来的一样,所以在网页上显示为笑脸,其实笑脸的地方是:)。。。。。。。
第一颗纽扣扣错了。。。。
7楼2015-12-11 15:04:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

For_study

金虫 (小有名气)

木虫

引用回帖:
4楼: Originally posted by dingd at 2015-12-09 16:06:39
换1stOpt试试,微分方程拟合简单好用的多。

参数太多,估计只有付费版的才能解决问题。。。。
第一颗纽扣扣错了。。。。
8楼2015-12-11 15:05:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

For_study

金虫 (小有名气)

木虫

自己再给自己加把油。。。。
第一颗纽扣扣错了。。。。
9楼2015-12-11 15:06:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 For_study 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 听说今天filecode变了 +4 布布和一二 2026-08-06 7/350 2026-08-06 17:06 by wdc28
[基金申请] 基金中了 +3 laoda193707 2026-08-06 3/150 2026-08-06 16:52 by 且听虎啸
[基金申请] filecode +7 布布和一二 2026-08-06 10/500 2026-08-06 16:22 by janehuiminli
[基金申请] filecode +8 等待解的谜 2026-08-06 12/600 2026-08-06 16:11 by janehuiminli
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +4 Tide man 2026-08-06 5/250 2026-08-06 16:08 by janehuiminli
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
[基金申请] 你们的时间戳变了吗 +3 archvillain 2026-07-30 4/200 2026-07-30 18:53 by levinzhwen
信息提示
请填处理意见