| 查看: 2158 | 回復: 13 | |||
飛鴻印雪jay銀蟲 (小有名氣)
|
[求助]
想用遺傳算法求解動力學參數(shù) 已有2人參與
|
||
|
dCAdt =-k(1)*C(1)-k(2)*C(1)-k(3)*C(1); dCBdt =k(1)*C(1)-k(4)*C(2)-k(5)*C(2); dCCdt =k(2)*C(1)+k(4)*C(2)-k(6)*C(3); dCDdt =k(3)*C(1)+k(5)*C(2)+k(6)*C(3); 請問怎么用遺傳算法求解參數(shù)k啊,c的數(shù)值都是實驗已知的,我用lsqnonlin求解,但是精度比較低。 |
鐵桿木蟲 (職業(yè)作家)
鐵桿木蟲 (職業(yè)作家)
主管區(qū)長 (職業(yè)作家)
![]() |
專家經(jīng)驗: +1059 |

銀蟲 (小有名氣)
|
format long clear all clc tspan = [0 10 20 30 40 50 60 70 80 90 100 110 120]; x0 = [0.877667262 0.188437508 0.069051676 0.067639913]; k0 = [0 0 0 0 0 0]; lb = [0 0 0 0 0 0]; ub = [+inf +inf +inf +inf +inf +inf]; data=[ 0.683038504 0.34538674 0.138009043 0.135964027 0.398422967 0.413279625 0.203080312 0.189874719 0.266300405 0.468253074 0.289896419 0.348481733 0.142059055 0.397710816 0.305786676 0.424846321 0.068339284 0.34043909 0.335003128 0.497043462 0.049669997 0.312376889 0.351124377 0.609259358 0.025110016 0.237590973 0.335397788 0.723901322 0.012801963 0.197342301 0.32083196 0.736810004 0.005763427 0.156055501 0.306141448 0.834373408 0.002640872 0.10259385 0.238964753 0.755687994 0.001332663 0.091170321 0.248694235 0.903738353 0.004102735 0.066072318 0.220813975 0.917511998 ]; yexp = data(:,1:4); [k,resnorm,residual,exitflag,output,lambda,jacobian] =... lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n使用函數(shù)lsqnonlin()估計得到的參數(shù)值為:\n') fprintf('\tk1 = %.9f ± %.9f\n',k(1),ci(1,2)-k(1)) fprintf('\tk2 = %.9f ± %.9f\n',k(2),ci(2,2)-k(2)) fprintf('\tk3 = %.9f ± %.9f\n',k(3),ci(3,2)-k(3)) fprintf('\tk4 = %.9f ± %.9f\n',k(4),ci(4,2)-k(4)) fprintf('\tk5 = %.9f ± %.9f\n',k(5),ci(5,2)-k(5)) fprintf('\tk6 = %.9f ± %.9f\n',k(6),ci(6,2)-k(6)) %fprintf('\tk7 = %.9f ± %.9f\n',k(7),ci(7,2)-k(7)) %fprintf('\tk8 = %.9f ± %.9f\n',k(8),ci(8,2)-k(8)) %fprintf('\tk9 = %.9f ± %.9f\n',k(9),ci(9,2)-k(9)) %fprintf('\tk10 = %.9f ± %.9f\n',k(10),ci(10,2)-k(10)) fprintf('The sum of the squares is: %.9e\n\n',resnorm) function f = ObjFunc(k,tspan,x0,yexp) [t, Xsim] = ode45(@KineticsEqs,tspan,x0,[],k); Xsim1=Xsim(:,1); Xsim2=Xsim(:,2); Xsim3=Xsim(:,3); Xsim4=Xsim(:,4); %Xsim5=Xsim(:,5); %Xsim6=Xsim(:,6); ysim(:,1) = Xsim1(2:end); ysim(:,2) = Xsim2(2:end); ysim(:,3) = Xsim3(2:end); ysim(:,4) = Xsim4(2:end); %ysim(:,5) = Xsim5(2:end); %ysim(:,6) = Xsim6(2:end); size(ysim(:,1)); size(ysim(:,2)); size(ysim(:,3)); size(ysim(:,4)); %size(ysim(:,5)); %size(ysim(:,6)); size(yexp(:,1)); size(yexp(:,2)); size(yexp(:,3)); size(yexp(:,4)); %size(yexp(:,5)); %size(yexp(:,6)); f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2)) (ysim(:,3)-yexp(:,3)) (ysim(:,4)-yexp(:,4)) ];%(ysim(:,5)-yexp(:,5)) function dCdt = KineticsEqs(t,C,k) dCAdt =-k(1)*C(1)-k(2)*C(1)-k(3)*C(1); dCBdt =k(1)*C(1)-k(4)*C(2)-k(5)*C(2); dCCdt =k(2)*C(1)+k(4)*C(2)-k(6)*C(3); dCDdt =k(3)*C(1)+k(5)*C(2)+k(6)*C(3); dCdt = [dCAdt; dCBdt;dCCdt;dCDdt]; |
銀蟲 (小有名氣)
|
我目前是用這個程序算的,但是結果中的置信區(qū)間大于參數(shù)本身 k1 = 0.037030991 ± 0.006759768 k2 = 0.007075182 ± 0.009153909 k3 = 0.000041516 ± 0.009209723 k4 = 0.013350201 ± 0.013257063 k5 = 0.015151332 ± 0.013589322 k6 = 0.012992896 ± 0.009006184 The sum of the squares is: 5.640933494e-02 這樣是不是不符合物理意義呢?這樣得到的結果能用嗎? 所以才想用遺傳算法,據(jù)說全局搜索,精度會高。 |
銀蟲 (小有名氣)
|
還想用fmincon()進行參數(shù)估計初值的,然后帶入lsqnonlin算參數(shù),但是用fmincon估算得到的參數(shù)初值都比較大,而用lsqnonlin得到是0.x,我感覺又不對。 使用函數(shù)fmincon()估計得到的參數(shù)值為: k1 = 1142.104196787 k2 = 1422.318008542 k3 = 2030.140731692 k4 = 60.162585855 k5 = 190.663749814 k6 = 47.821277380 The sum of the squares is: 8.001056406e+00 Local minimum possible. lsqnonlin stopped because the final change in the sum of squares relative to its initial value is less than the default value of the function tolerance. <stopping criteria details> 使用函數(shù)lsqnonlin()估計得到的參數(shù)值為: k1 = 0.037030991 ± 0.006759768 k2 = 0.007075182 ± 0.009153909 k3 = 0.000041516 ± 0.009209723 k4 = 0.013350201 ± 0.013257063 k5 = 0.015151332 ± 0.013589322 k5 = 0.012992896 ± 0.009006184 The sum of the squares is: 5.640933494e-02 不懂為什么?還有是不是和參數(shù)比方程個數(shù)多有關? |
銀蟲 (小有名氣)
銀蟲 (小有名氣)
銀蟲 (小有名氣)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 305求調劑 +3 | RuiFairyrui 2026-03-28 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 275求調劑 +10 | Micky11223 2026-03-25 | 14/700 |
|
|
[考研] 化學0703 調劑 306分 一志愿211 +4 | 26要上岸 2026-03-28 | 4/200 |
|
|
[考研] 0703化學求調劑 +9 | 奶油草莓. 2026-03-22 | 10/500 |
|
|
[考研] 283求調劑 +7 | A child 2026-03-28 | 7/350 |
|
|
[考研] 340求調劑 +5 | jhx777 2026-03-27 | 5/250 |
|
|
[考研] 330一志愿中國海洋大學 化學工程 085602 有讀博意愿 求調劑 +3 | wywy.. 2026-03-27 | 4/200 |
|
|
[考研] 272求調劑 +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 085600,材料與化工321分調劑 +4 | 大饞小子 2026-03-27 | 6/300 |
|
|
[考研] 303求調劑 +7 | 安憶靈 2026-03-22 | 8/400 |
|
|
[考研] 286求調劑 +4 | lim0922 2026-03-26 | 4/200 |
|
|
[考研] 359求調劑 +4 | 王了個楠 2026-03-25 | 4/200 |
|
|
[考研] 340求調劑 +3 | Amber00 2026-03-26 | 3/150 |
|
|
[考研] 中國科學院深圳先進技術研究院-光纖傳感課題組招生-中國科學院大學、深圳理工大學聯(lián)培 +5 | YangTyu1 2026-03-26 | 5/250 |
|
|
[考研] 334分 一志愿武理 材料求調劑 +4 | 李李不服輸 2026-03-26 | 4/200 |
|
|
[考研] 一志愿吉林大學材料與化工303分求調劑 +4 | 為學666 2026-03-24 | 4/200 |
|
|
[考研] 300分,材料,求調劑,英一數(shù)二 +5 | 超贊的 2026-03-24 | 5/250 |
|
|
[考研] 求調劑一志愿武漢理工大學材料工程(085601) +5 | WW.' 2026-03-23 | 7/350 |
|
|
[考研] 接收2026碩士調劑(學碩+專碩) +4 | allen-yin 2026-03-23 | 6/300 |
|
|
[考研] 328求調劑 +4 | LHHL66 2026-03-23 | 4/200 |
|