找回密码
 注册
Simdroid-非首页
查看: 174|回复: 8

多目标优化拟合(ODE/微分方程/curvefit/拟合)

[复制链接]
发表于 2009-10-27 07:39:24 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
本帖最后由 messenger 于 2009-12-6 00:39 编辑

在论文的进展过程中,需要解决这一问题,请大家帮忙一下
已知方程
dSS=(Q0*SS_in-Qe*SS-QW*SS-1/YH*ρ1(SS)*V)/V;
dXS=(Q0*XS_in -QW*XS+(1-fp)( ρ4+ρ5)*V-ρ7V)/V;
dXBH=(Q0*XBH_in-QW* XBH+(ρ1+ρ2-ρ4)V)/V;
dXBA=(Q0*XBA_in-QW* XBA+(ρ3-ρ5)V)/V;
dSNO= (Q0*SNO_in-Qe*SNO-QW*SNO-(1-YH)/2.86/ YH *ρ2*V+1/YA*ρ3)/V
dSNH=(Q0*SNH_in-Qe*SNH-QW*SNH-iXB(ρ1+ρ2)*V-(iXB+1/YA)*ρ3)/V+ρ6*V)/V
dSND=(Q0*SND_in-Qe*SND-QW*SND-ρ6*V+ρ8*V)/V
dXND=(Q0*XND_in-Qe*XND-QW*XND+( iXB -fp*iXP)*(ρ4+ρ5)*V-ρ8*V)/V
ρ1(SS,XBH)=mH*SS/(KS+SS)*SO/(KOH+SO)*XBH;
ρ2(SS,XBH,SNO)=gg*mH*SS/(KS+SS)* KOH/(KOH+SO)*SNO/(1+SNO)*XBH
ρ3(SNH,XBA)=mA*SNH/(KNH+SNH)*SO/(KOH+SO)*XBA;
ρ4(XBH)=bH* XBH;
ρ5(XBA)=bA* XBA;
ρ6(XBA)=ka*SND* XBA;
ρ7(XBH,SNO)=kh*XS/(KX+XS/XBH)/XBH*(SO/(KOH+SO)+gg*KOH/(KOH+SO)*SNO/(1+SNO)*XBH;
ρ8(XBH,SNO)= ρ7*XND/XS;
已知参数:
V=40
Q0=15
Qe=14.2
QW=0.8
XBA_in=0
XB,H_in=0
SND_in=140
XND_in=80
SNO_in=0

已知系数:
YH=0.67
YA=0.24
gg=0.9
iXB=0.0875
iXP=0.06
fP=0.08
KX=0.03
mH=6.0
mA=0.8
KOA=0.4
bH=0.22
KNO=0.5
bA=0.22
KOH=0.2
ka=0.08
kh=3.0
KS=20.0
KNH=1.0
gh=0.4


d代表每天(与t不同,将每天的数带入微分方程,得出每天的稳态解)
d()
SS_in
XS_in
SND_in
SNH_in
XND_in
SO
1
370
87
25
1
0.3
1
2
220
56
23
2
0.5
1.4
3
352
87
31
3
1.1
2.1
4
268
58
25
6
1.3
2.2
5
284
67
34
5
0.8
1.8
6
360
65
30
6
1.9
0.9
7
387
69
37
2
2.3
1.5
8
465
36
25
6
2.1
1.6
9
258
75
38
5
0.9
1.7
10
284
48
39
4
1.5
1.9

根据微分方程组,采用ode45可以求出每天(d 不同SS_inXS_inSND_inSNH_inXND_inSO条件下的SSXS XBH XBA XP SNO SNH SND XND每天的稳态解
进一步的,根据实验,得到试验条件下的SSXBH +XBA 、、SNO SNH XS的数值,
d()
SS
XS
SNO
SNH
XBH + XBA
1
1.5
0.8
13
1
5700
2
1.4
0.9
18
2
6000
3
1.9
1.6
19
1
5300
4
2.3
1.7
16
0.5
5800
5
1.8
3.2
18
0.8
6200
6
1.9
2.3
19
0.7
6100
7
2.6
0.6
20
0.6
5860
8
2.7
1.8
23
0.8
5900
9
3.5
1.9
19
1.1
5680
10
4.6
4.6
15
1.3
6010
要求通过校正系数YHmA bH使得模拟值与试验值达到一定的吻合度,如何进行呢,请大家帮忙提供以下思路方案

评分

1

查看全部评分

发表于 2009-10-27 11:31:13 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
最好把数学模型给出来,以数学语言描述一下,我看了2遍你的描述,没看懂你想做什么
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-27 13:57:32 | 显示全部楼层 来自 黑龙江哈尔滨
系统的数学模型由以下8个微分方程组成
dSS/dt=(Q0*SS_in-Qe*SS-QW*SS-1/YH*ρ1(SS)*V)/V;
dXS/dt =(Q0*XS_in -QW*XS+(1-fp)( ρ4+ρ5)*V-ρ7V)/V;
dXBH/dt =(Q0*XBH_in-QW* XBH+(ρ1+ρ2-ρ4)V)/V;
dXBA/dt =(Q0*XBA_in-QW* XBA+(ρ3-ρ5)V)/V;
dSNO/dt = (Q0*SNO_in-Qe*SNO-QW*SNO-(1-YH)/2.86/ YH *ρ2*V+1/YA*ρ3)/V
dSNH/dt =(Q0*SNH_in-Qe*SNH-QW*SNH-iXB(ρ1+ρ2)*V-(iXB+1/YA)*ρ3)/V+ρ6*V)/V
dSND/dt =(Q0*SND_in-Qe*SND-QW*SND-ρ6*V+ρ8*V)/V
dXND/dt =(Q0*XND_in-Qe*XND-QW*XND+( iXB -fp*iXP)*(ρ4+ρ5)*V-ρ8*V)/V
ρ1(SS,XBH)=mH*SS/(KS+SS)*SO/(KOH+SO)*XBH;
ρ2(SS,XBH,SNO)=gg*mH*SS/(KS+SS)* KOH/(KOH+SO)*SNO/(1+SNO)*XBH
ρ3(SNH,XBA)=mA*SNH/(KNH+SNH)*SO/(KOH+SO)*XBA;
ρ4(XBH)=bH* XBH;
ρ5(XBA)=bA* XBA;
ρ6(XBA)=ka*SND* XBA;
ρ7(XBH,SNO)=kh*XS/(KX+XS/XBH)/XBH*(SO/(KOH+SO)+gg*KOH/(KOH+SO)*SNO/(1+SNO)*XBH;
ρ8(XBH,SNO)= ρ7*XND/XS;
方程中的参数V Q0  Qe QW XBA_in  XBH_in SND_in  XND_in  SNO_in为已知的,
方程中的系数大部分为固定值,一部分需要通过模拟值与试验值对比拟合后进行调整
方程中的SS_in  XS_in  SND_in  SNH_in  XND_in  SO是每天变化的,
根据方程及参数可以求出每天不同SS_in、XS_in、SND_in、SNH_in、XND_in、SO条件下的SS、XS 、XBH 、XBA 、XP 、SNO 、SNH 、SND 、XND每天的稳态解
通过实验测定,也可以获得每天不同SS_in、XS_in、SND_in、SNH_in、XND_in、SO条件下的SS、XS 、XBH +XBA 、SNO 、SNH 的值,
比较模拟值与实验值,通过调整方程中的系数YH、mA 、bH,提高模拟值与试验值之间的相关性,
问题是如何根据实验值与模拟值编写程序来调整方程的系数,从而获得较佳的方程系数,使得模拟值与试验值的差值最小
回复 不支持

使用道具 举报

发表于 2009-10-27 14:37:06 | 显示全部楼层 来自 黑龙江哈尔滨
本帖最后由 TBE_Legend 于 2009-10-27 14:47 编辑
系统的数学模型由以下8个微分方程组成
dSS/dt=(Q0*SS_in-Qe*SS-QW*SS-1/YH*ρ1(SS)*V)/V;
dXS/dt =(Q0*XS_in -QW*XS+(1-fp)( ρ4+ρ5)*V-ρ7V)/V;
dXBH/dt =(Q0*XBH_in-QW* XBH+(ρ1+ρ2-ρ4)V)/V;
dXBA/dt =(Q ...
flying_23 发表于 2009-10-27 13:57


我见过一个和你几乎一摸一样的例子,数学模型中主要是微分方程,然后优化选择方程的系数使得拟合数据和实验数据吻合。

那是个视频,好像是这个:http://www.maplesoft.com/view.aspx?SL=5478,是用 global optimization toolbox for maple http://www.maplesoft.com/products/toolboxes/globaloptimization/ 做的,效果很不错。(网上没有D版,只能申请试用版),我用过GOT,很是不错,开发者是J D Pinter,他为matlab,mmtc,maple都开发了第三方全局优化插件。

话说回来了,问题的关键还是你如何定义你的目标函数,我说的那个例子中就是一个简单的least squares,所以就是一个单目标而已。


如果你要多目标的话,你可以把和前几天一个朋友问的问题一样,把解微分方程的过程作为一个函数或子程序(rockwood版主做的那些积分的例子就很好地说明了怎么做这种嵌套的函数(把数值积分,Fsolve等嵌到一个函数中)),然后你用matlab的多目标优化程序来调这个函数,更为傻瓜化的是可以用过isight或modefrontier等专业优化软件来调用这些函数,而且结果可能要更好。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-27 14:48:11 | 显示全部楼层 来自 黑龙江哈尔滨
若只实现试验值与预测值之间的最小方差(least square), 在matlab中如何实现,能否更为详细的解释一下这一问题的解决过程,麻烦你了
回复 不支持

使用道具 举报

发表于 2009-10-27 14:55:25 | 显示全部楼层 来自 黑龙江哈尔滨
若只实现试验值与预测值之间的最小方差(least square), 在matlab中如何实现,能否更为详细的解释一下这一问题的解决过程,麻烦你了
flying_23 发表于 2009-10-27 14:48


不好意思,对于matlab 我只会说,不会做。我只会mmtc和maple。我的意思是:

你做一个函数,函数的自变量是微分方程的系数,函数的值是微分方程的解。然后你用优化程序来优化这个函数。使你的目标(你的解与数据之间的方差)最小。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-27 15:10:48 | 显示全部楼层 来自 黑龙江哈尔滨
谢谢你,对于这部分程序的建立,我不了解,需要进一步学习
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-27 15:30:20 | 显示全部楼层 来自 黑龙江哈尔滨
谁可以帮忙用matlab来解决一下这个问题
回复 不支持

使用道具 举报

发表于 2009-10-27 15:46:18 | 显示全部楼层 来自 浙江杭州
自己解决吧,方法都告诉你了,如何在Matlab中实现要你自己来做,做的过程中有什么问题再来问。我们不提倡”项目外包 有偿编写代码“式的解决方式。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 03:21 , Processed in 0.051730 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表