24小时热门版块排行榜    

Znn3bq.jpeg
北京石油化工学院2026年研究生招生接收调剂公告
查看: 2690  |  回复: 8

whqs8426212

铜虫 (正式写手)

[求助] matlab,lsqnonlin拟合曲线,数优化,的修改

最近,通过学习,写了一个参数优化的程序,觉得不够好。想GA的方法,代替lsqnonlin拟合。
整个程序的思路很明确,三组实验值与理论值的残差最小时,所得参数为最优。具体程序如下:大家研究研究,能否把GA弄进我的程序。具体程序详见二楼。
回复此楼

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

实用matlab程序

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whqs8426212

铜虫 (正式写手)

function parafitN2  

clear all
clc
%        t/s       Fe(2)     H2O2       4-Cp    dilos  / mol/L
  Kinetics=[0       0.125    2.5        1        0     
           100      0.1      1.2       0.5       0.1000   
           200      0.1      0.5       0.2      0.22  
           400      0.1      0.15      0.1      0.24   
           900      0.1      0         0.1       0.25   ]*1e-3;  %%用于拟合的实验数据


B0=[4e9 0.6e9 (2.99)*1e11  (1.00)*1e9 (2.00)*1e7 (4.90)*1e9 (9.58)*1e5  400  40];
lb=[0 0 0 0 0 0 0 0 40];

x0=(1e-3)*[0.125  0  2.5  0 0 0 1 0 0 0  0 0];
yexp = Kinetics  ;               % yexp: 实验数据[x1        x4        x5        x6]


% 使用函数lsqnonlin()进行参数估计
options = optimset('largescale','off','display','iter');
options=optimset(options,'tolx',1e-100);
options=optimset(options,'tolfun',1e-100);
[B,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc7LNL,B0,lb,[],options,x0,yexp);      
ci = nlparci(B,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk16 = %.11f\n',B(1))
fprintf('\tk17 = %.11f\n',B(2))
fprintf('\tk18 = %.11f\n',B(3))
fprintf('\tk21 = %.11f\n',B(4))
fprintf('\tk22 = %.11f\n',B(5))
fprintf('\tk23 = %.11f\n',B(6))
fprintf('\tk24 = %.11f\n',B(7))
fprintf('\tk25 = %.11f\n',B(8))
fprintf('\tk26 = %.11f\n',B(9))
fprintf('  所求残差为: %.1e\n\n',resnorm)



% ------------------------------------------------------------------
function f = ObjFunc7LNL(B,x0,yexp) %目标函数=实验值和和理论值之差
tspan = [0 100 200  400 900];
[t x] = ode23s(@KineticEqs,tspan,x0,[],B);   


f1 = x(:,1) - yexp(:,2);
f2 = x(:,3) - yexp(:,3);
f3 = x(:,7) - yexp(:,4);
f4 = x(:,8) - yexp(:,5);

f = [f1 f2 f3 f4];


% ------------------------------------------------------------------
function dxdt = KineticEqs(t,x,B)
% 反应模型方程

k(1)=76; k(2)=0.01; k(3)=(1.0e+7)*2.7;k(4)=(1.0e+5)*1.58; k(5)=1.0e+10;k(6)=3.2*(1.0e+8); k(7)=1.2*(1.0e+6); k(8)=3.1*(1.0e+5);k(9)=(1.0e+7) ;k(10)=5*(1.0e+7); k(11)=4.2*(1.0e+9);  k(12)=8.3*(1.0e+5); k(13)=(1.0e+10); k(14)=(1.0e+10); k(15)=9.7*(1.0e+7);


r1=k(1)*x(1)*x(3);r2 = k(2)*x(2)*x(3); r3 = k(3)*x(4)*x(3);   r4 = k(4)*x(5);
r5 = k(5)*(1e-3)*x(6);r6 = k(6)*x(4)*x(1);r7 = k(7)*x(5)*x(1)*1e-3;  r8 = k(8)*x(5)*x(2)*1e-3;
r9 = k(9)*x(6)*x(1)*1e-6; r10 = k(10)*x(6)*x(2);r11 = k(11)*x(4)*x(4);r12 = k(12)*x(5)*x(5);
r13 = k(13)*x(4)*x(5);r14 = k(14)*x(4)*x(6);r15 = k(15)*x(5)*x(6);

r16 = B(1)*x(7)*x(4);
r17 = B(2)*x(7)*x(4);
r18 = B(3)*x(9)*x(4);
r21 = B(4)*x(8)*x(4);
r22 = B(5)*x(8)*x(2)*x(2);
r23 = B(6)*x(11)*x(4);
r24 = B(7)*x(12)*x(4);
r25 = B(8)*x(12)*x(2);
r26 = B(9)*x(2)*x(12)*0.3;



dx(1)=-r1+r2-r6-r7+r8-r9+r10+2*r22+r25;
%检测指标[Fe2 +]:
dx(2)= -(-r1+r2-r6-r7+r8-r9+r10+2*r22+r25)-r26;
%[Fe3+ ]
dx(3)=-r1-r2-r3+r7+r9+r11+r12+r15;% 原文“-r15”
%检测指标[h2o2]
dx(4)=r1-r3-r6-r11-r13-r14-r16-r21-r23-r24-r18;
%[·OH  ]:
dx(5)=r2-r4+r5-r7-r8-r12-r13-r15;
%[HO2·]
dx(6)=r4-r5-r9-r10-r14-r15;
%x(o2)
dx(7)=-r16-r17;
%检测指标[4v-xP]
dx(8)=r17+r18-r21-r22;
%检测指标[diols ]
dx(9)=r16-r18;
%[xlDHxD ]
dx(10)=0;
%[xlDHxDP ]
dx(11)=r21+r22-r23;
%[B Q]
dx(12)=3*r23-r24-r25-r26;
%aSS


dxdt=[ dx(1);dx(2);dx(3);dx(4); dx(5);dx(6);dx(7);dx(8);dx(9); dx(10);dx(11);dx(12)];
2楼2014-08-17 20:56:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

残差作评价函数;
几个参数做GA的码片,建立各个码片与取值区间的对应关系;
二进制转格雷码;
GA计算,随机交叉【码片分段切开互换】+随机突变【某位置01互换】;
统计、排序;
补充入新的个体,重复GA计算知道评价函数达标。
3楼2014-08-18 07:46:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whqs8426212

铜虫 (正式写手)

引用回帖:
3楼: Originally posted by feixiaolin at 2014-08-18 07:46:36
残差作评价函数;
几个参数做GA的码片,建立各个码片与取值区间的对应关系;
二进制转格雷码;
GA计算,随机交叉【码片分段切开互换】+随机突变【某位置01互换】;
统计、排序;
补充入新的个体,重复GA计算知 ...

能否将具体的代码贴出呢?
4楼2014-08-18 10:17:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
4楼: Originally posted by whqs8426212 at 2014-08-18 10:17:07
能否将具体的代码贴出呢?...

抱歉,我没有matlab平台。
5楼2014-08-18 10:22:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whqs8426212

铜虫 (正式写手)

引用回帖:
5楼: Originally posted by feixiaolin at 2014-08-18 10:22:36
抱歉,我没有matlab平台。...

谢谢你的提示
6楼2014-08-18 12:13:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
whqs8426212: 金币+10, 有帮助 2014-08-19 22:03:21
大概看了一下,待拟合参数个数很多。初值的选取很困难。
如果你这样类似的问题个数不多,你找本版块的专家dingd帮忙,他的1stopt软件可以高效地解决这类的问题。
如果考虑GA算法的话,我个人觉得,还是用GA+lsqnonlin,GA计算出初值,输给lsqnonlin。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
7楼2014-08-18 20:50:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whqs8426212

铜虫 (正式写手)

引用回帖:
7楼: Originally posted by 月只蓝 at 2014-08-18 20:50:42
大概看了一下,待拟合参数个数很多。初值的选取很困难。
如果你这样类似的问题个数不多,你找本版块的专家dingd帮忙,他的1stopt软件可以高效地解决这类的问题。
如果考虑GA算法的话,我个人觉得,还是用GA+lsqno ...

我想用matlab练练,我想试试GA算初值,然后传给lsqnonlin。请问能否给我一些参考代码。我就是纯粹想练练matlab
8楼2014-08-18 21:04:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whqs8426212

铜虫 (正式写手)

引用回帖:
7楼: Originally posted by 月只蓝 at 2014-08-18 20:50:42
大概看了一下,待拟合参数个数很多。初值的选取很困难。
如果你这样类似的问题个数不多,你找本版块的专家dingd帮忙,他的1stopt软件可以高效地解决这类的问题。
如果考虑GA算法的话,我个人觉得,还是用GA+lsqno ...

我有GA的原始文件,就是不知道怎么使用
9楼2014-08-18 21:10:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 whqs8426212 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿华南师范大学-22408计算机-292分-求华南师范大学调剂 +5 爱读书的小鳄鱼 2026-04-02 5/250 2026-04-08 14:55 by CAS小花工
[考研] 化学308分求调剂 +18 你好明天你好 2026-04-07 20/1000 2026-04-08 14:51 by screening
[考研] 0702物理学学硕299求调剂 +4 祁柒连 2026-04-06 4/200 2026-04-08 13:56 by wutongshun
[考研] 307分材料专业求调剂 +11 Hll胡 2026-04-05 11/550 2026-04-08 13:28 by lijunpoly
[考研] 环境专硕调剂 +13 会说话的肘子 2026-04-06 13/650 2026-04-08 07:00 by lijunpoly
[考研] 085600材料与化工,求调剂 +5 won_qii 2026-04-07 5/250 2026-04-07 17:10 by 啵啵啵0119
[考研] 307求调剂 +3 Youth@@ 2026-04-07 3/150 2026-04-07 09:25 by 小黑不怕难
[考研] (调剂)一志愿报考哈尔滨工业大学0857资源与环境专业378分考生 +7 狠狠加油 2026-04-05 8/400 2026-04-06 16:52 by momo皓
[考研] 求调剂 +4 wos666 2026-04-03 5/250 2026-04-06 15:22 by wos666
[考研] 262求调剂 +7 天下第一文 2026-04-04 8/400 2026-04-05 21:31 by 激流勇渡
[考研] 301求调剂 +3 XYPLR 2026-04-05 4/200 2026-04-05 19:07 by XYPLR
[考研] 一志愿北交大材料工程总分358求调剂 +6 cs0106 2026-04-05 6/300 2026-04-05 16:34 by imissbao
[考研] 一志愿上海海洋大学083200食品学硕,求调剂,接受其他专业083200 +4 what张 2026-04-04 5/250 2026-04-05 14:07 by chw1980_0
[考研] 考研调剂 +3 mcbbc 2026-04-04 3/150 2026-04-05 10:03 by barlinike
[考研] 考研调剂 +11 小sun要好运 2026-04-04 11/550 2026-04-05 08:02 by qlm5820
[考研] 272求调剂 +4 松柏常青5 2026-04-03 4/200 2026-04-04 17:03 by babysonlkd
[考研] 材料科学与工程考研 +10 拯救皮特托先生 2026-04-02 10/500 2026-04-03 23:57 by userper
[考研] 求调剂 +8 akdhjs 2026-04-03 8/400 2026-04-03 18:17 by 戴维ING
[考研] 274求调剂 +10 薛定谔的虎。 2026-04-01 10/500 2026-04-03 10:13 by tianyyysss
[考研] 312求调剂 +4 赊月色 2026-04-02 5/250 2026-04-03 08:21 by fangshan711
信息提示
请填处理意见