24小时热门版块排行榜    

查看: 2454  |  回复: 15

vvaa

新虫 (初入文坛)

[求助] 最优化方法求教!!! 已有1人参与

我的课题要做一个动力学模型,目前打算用集总的方法,建立一个微分方程组,比如
dc1/dt=-k1c1+k2c2
dc2/dt=k1c1-(k2+k3)c2+k4c3
dc3/dt=k3c2-(k4+k5)c3+k6c4
dc4/dt=k5c3-(k6+k7)c4
dc5/dt=k7c4
因为方程之间耦联,不能得到解析解。用bfgs法优化求解参数时,导函数不知道怎么求解。本人小白,没有最优化基础,希望大神能指导一下,怎么求dc/k,或者有没有比较好的不用导函数的优化方法推荐?

发自小木虫Android客户端
回复此楼

» 收录本帖的淘帖专辑推荐

优化

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

huab1984666

新虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
vvaa: 金币+5, ★★★很有帮助 2017-06-28 09:27:15
function dy=myfunx(t,y,Parameters)

%%
k1=Parameters(1);
k2=Parameters(2);
k3=Parameters(3);
k4=Parameters(4);
k5=Parameters(5);
k6=Parameters(6);
k7=Parameters(7);
%%
dy=zeros(5,1);
dy(1)=-k1*y(1)+k2*y(2);
dy(2)=k1*y(1)-(k2+k3)*y(2)+k4*y(2);
dy(3)=k3*y(2)-(k4+k5)*y(3)+k6*y(4);
dy(4)=k5*y(5)-(k6+k7)*y(4);
dy(5)=k7*y(4);
%%%%


function f=Kinetic(beta)
global c;
global t;
Parameters=beta;
t0=t(1);
tn=t(end);
%%
options=odeset('RelTol',1e-4;'AbsTol',[1e-4 1e-4 1e-4 1e-4 1e-5]);
[tx,cx]=ode15s(@myfunx,[t0 tn],[xx 0 0 0 0],options,Parameters);%%xx是t=0的时候,c的值。
c_x=interp1(tx,cx,t,'spline');
c1=c_x(:,1);c2=c_x(:,2);c3=c_x(:,3);c4=c_x(:,4);c5=c_x(:,5);
ce=c1+c2+c3+c4+c5;
N=length(t);
for i=1:1:N
    rx(i)=(ce(i)-c(i)).^2;
end
f=sum(rx);


global c; c=[- - - - -];%实验值
global t; t=[- - - - -];实验值
lb=[0 0 0 0 0 0 0];
ub=[2 2 2 2 2 2 2];
options =psoptimset('Display','Iter','MaxIter',2000,'TolFun',1e-8,'CompleteSearch','on');
beta0=[0.7 0.01 0.01 0.0176 0.02 0.03 0.05];%% k1-7初始值
[beta,fval,exitflag,output] = patternsearch(@Kinetic,beta0,[],[],[],[],lb,ub,options );
%%
Parameters=beta;
t0=t(1);
tn=t(end);
%%
Options=odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4 1e-4 1e-5]);
[tx,cx]=ode15s(@myfunx,[t0 tn],[1 0 0 0 0],Options,Parameters);
c_x=interp1(tx,cx,t,'spline');
c1=c_x(:,1);c2=c_x(:,2);c3=c_x(:,3);c4=c_x(:,4);c5=c_x(:,5);
ce=c1+c2+c3+c4+c5;

plot(t,c,'o');hold on;
plot(t,ce,'r-');
春风又绿江南岸,明月何时照我还。
2楼2017-06-27 20:53:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

huab1984666

新虫 (著名写手)

引用回帖:
2楼: Originally posted by huab1984666 at 2017-06-27 20:53:54
function dy=myfunx(t,y,Parameters)

%%
k1=Parameters(1);
k2=Parameters(2);
k3=Parameters(3);
k4=Parameters(4);
k5=Parameters(5);
k6=Parameters(6);
k7=Parameters(7);
%%
dy=zeros(5,1);
dy(1 ...

global c; c=[- - - - -];%实验值
global t; t=[- - - - -];实验值

c,t都是列向量
春风又绿江南岸,明月何时照我还。
3楼2017-06-27 21:02:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vvaa

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by huab1984666 at 2017-06-27 21:02:38
global c; c=;%实验值
global t; t=;实验值

c,t都是列向量...

你好,这个是matlab程序吗?是什么优化方法?没看懂

发自小木虫Android客户端
4楼2017-06-27 21:57:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

春风又绿江南岸,明月何时照我还。
5楼2017-06-27 22:34:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

引用回帖:
4楼: Originally posted by vvaa at 2017-06-27 21:57:42
你好,这个是matlab程序吗?是什么优化方法?没看懂
...

就是你测的浓度c,t是对应的。用你的模型来拟合,得到k1-7未知参数,就是最优化

发自小木虫Android客户端
春风又绿江南岸,明月何时照我还。
6楼2017-06-27 22:36:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vvaa

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by huab1984666 at 2017-06-27 22:36:05
就是你测的浓度c,t是对应的。用你的模型来拟合,得到k1-7未知参数,就是最优化
...

嗯嗯,谢谢,我学习学习模式搜索法。还有一个问题,我每个实验条件下要做几个时间点才能求出来7个k值呢?

发自小木虫Android客户端
7楼2017-06-28 09:26:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

引用回帖:
7楼: Originally posted by vvaa at 2017-06-28 09:26:25
嗯嗯,谢谢,我学习学习模式搜索法。还有一个问题,我每个实验条件下要做几个时间点才能求出来7个k值呢?
...

这个看你自己啊。我觉得试验点越多越好
春风又绿江南岸,明月何时照我还。
8楼2017-06-28 10:42:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

vvaa

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by huab1984666 at 2017-06-28 10:42:47
这个看你自己啊。我觉得试验点越多越好...

实验点太多的话,实验量太大。根据这个微分方程组,你觉得最少要做几个点?我数学不太好,搞不太明白

发自小木虫Android客户端
9楼2017-06-28 10:55:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

引用回帖:
9楼: Originally posted by vvaa at 2017-06-28 10:55:20
实验点太多的话,实验量太大。根据这个微分方程组,你觉得最少要做几个点?我数学不太好,搞不太明白
...

你反应时间多长啊?我觉得30-40个很好啊,作图也好看
春风又绿江南岸,明月何时照我还。
10楼2017-06-28 10:59:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 vvaa 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +14 爱看书的可乐 2026-08-26 16/800 2026-08-26 16:47 by skyjudy
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 基金不中,共勉 +3 eulota 2026-08-26 3/150 2026-08-26 16:17 by 路yyyy
[基金申请] 怎么查啊 +5 huang1991js 2026-08-26 5/250 2026-08-26 16:09 by Equinoxhua
[基金申请] 我不理解! +8 Edward_pc 2026-08-26 13/650 2026-08-26 15:37 by Tide man
[基金申请] 2026国自然函评费到账 +22 羊腰板 2026-08-21 25/1250 2026-08-26 15:00 by zuocuiping
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 让我中一个面上吧! +13 大萍1987 2026-08-20 16/800 2026-08-24 10:23 by 太傻了
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
信息提示
请填处理意见