24小时热门版块排行榜    

查看: 1902  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

我无耻又无赖

木虫 (著名写手)

[求助] matlab全局优化参数 已有2人参与

小弟在用matlab优化参数的时候遇到了一个问题,我用的是fmincon函数,但是因为选不到合适的初值所以得到的结果不是很满意,所以想着用全局优化的算法来试一下,奈何不太会,希望论坛里的大佬们看一下能不能解决这个问题。我直接把程序复制到下面了
clear all
clc
data=[288.05 0.000257 0.3003
293.05 0.000274 0.3003
298.2 0.000281 0.3003
303.25 0.000294 0.3003
308.15 0.000305 0.3003
313.25 0.000326 0.3003
318.2 0.000345 0.3003
323.15 0.00039 0.3003
288.05 0.000493 0.3995
293.05 0.00051 0.3995
298.2 0.000532 0.3995
303.25 0.000562 0.3995
308.15 0.00061 0.3995
313.25 0.000641 0.3995
318.2 0.000698 0.3995
323.15 0.000845 0.3995
288.05 0.000877 0.501
293.05 0.00092 0.501
298.2 0.00099 0.501
303.25 0.00115 0.501
308.15 0.00127 0.501
313.25 0.00139 0.501
318.2 0.00157 0.501
323.15 0.00189 0.501
288.05 0.0016 0.5998
293.05 0.00172 0.5998
298.2 0.00196 0.5998
303.25 0.00232 0.5998
308.15 0.00252 0.5998
313.25 0.00281 0.5998
318.2 0.0032 0.5998
323.15 0.00358 0.5998
288.05 0.00293 0.7009
293.05 0.00309 0.7009
298.2 0.00357 0.7009
303.25 0.00424 0.7009
308.15 0.00474 0.7009
313.25 0.00535 0.7009
318.2 0.00611 0.7009
323.15 0.00711 0.7009
288.05 0.0048 0.8003
293.05 0.00548 0.8003
298.2 0.00638 0.8003
303.25 0.0078 0.8003
308.15 0.00863 0.8003
313.25 0.00988 0.8003
318.2 0.0112 0.8003
323.15 0.0128 0.8003
288.05 0.0103 0.8999
293.05 0.0112 0.8999
298.2 0.0121 0.8999
303.25 0.014 0.8999
308.15 0.0152 0.8999
313.25 0.0173 0.8999
318.2 0.0193 0.8999
323.15 0.022 0.8999];

T=data(:,1);        
xexp=data(:,2);
w=data(:,3);

deltaH=46266;%熔融焓
R=8.314;
Tm=532.34;%熔点
yexp=exp((deltaH./(R.*T)).*(T./Tm-1)-log(xexp));

n=size(T,1);
k0=[-3125.70317518255,-2378.98766584565,5092.47952427953,-718.563001024490,-1495.43799248924,-1965.61341412590,0.899991420305235,0.100010845691102,0.219058309329965];
lb=[-inf -inf -inf -inf -inf -inf 0.1 0.1 0.1];
ub=[inf inf inf inf inf inf 0.9 0.9 0.9];
[k,fval,flag] = fmincon(@myfun,k0,[],[],[],[],lb,ub,[],[],xexp,yexp,T,w,n,R);
display(fval);
display(k);

function f = myfun(k,xexp,yexp,T,w,n,R)
%a12=k(1)
%a21=k(2)
%b12=k(3)
%b21=k(4)
%c12=k(5)
%c21=k(6)
%o=k(7)
%p=k(8)
%q=k(9)
tao12=k(1)./(R*T);
tao21=k(2)./(R*T);
tao13=k(3)./(R*T);
tao31=k(4)./(R*T);
tao23=k(5)./(R*T);
tao32=k(6)./(R*T);
G12=exp(-k(7).*tao12);
G21=exp(-k(7).*tao21);
G23=exp(-k(8).*tao23);
G32=exp(-k(8).*tao32);
G13=exp(-k(9).*tao13);
G31=exp(-k(9).*tao31);
x2=(1-xexp).*w;
x3=(1-xexp).*(1-w);
temp1=x2.*G21+x3.*G32;
temp2=tao21.*G21.*x2+tao31.*G31.*x3;
temp3=(xexp+x2.*G21+x3.*G31).^2;
temp4=tao12.*G12.*(x2.^2);
temp5=G12.*G32.*x2.*x3.*(tao12-tao32);
temp6=(x2+xexp.*G12+x3.*G32).^2;
temp7=tao13.*G13.*(x3.^2);
temp8=G13.*G23.*x2.*x3.*(tao13-tao23);
temp9=(x3+x2.*G23+xexp.*G13).^2;
lngamma1=((temp1.*temp2)./temp3)+((temp4+temp5)./temp6)+((temp7+temp8)./temp9);
ycal=exp(lngamma1);
f=100*sum(abs((yexp-ycal)./(yexp)))./n;
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

我无耻又无赖

木虫 (著名写手)

送红花一朵
引用回帖:
7楼: Originally posted by dingd at 2021-09-16 22:13:07
如果目标函数是:f=100*sum(abs((yexp-ycal)./(yexp)))./n
Objective Function (Min.): 1.69202022605523
k1: -3939.42871188215
k2: 10917.2246492583
k3: 25148.0927593124
k4: 70773.8809002039
k5: 12844 ...

老师好,您的结果也是通过设置全局变量得到的吗,我刚才又试了下,第一个目标函数的值到5点多就降不下来了
9楼2021-09-17 13:11:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

曾经落伍了

铁杆木虫 (职业作家)

★ ★
独孤神宇: 金币+2, 鼓励交流 2021-09-15 08:37:52
用遗传算法试试

发自小木虫Android客户端
2楼2021-09-15 00:45:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hzlhm

至尊木虫 (著名写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
独孤神宇: 金币+2, 鼓励交流 2021-09-16 20:51:23
控制误差的表达式,
f=100*sum(abs((yexp-ycal)./(yexp)))./n;
可能有问题
因为控制误差的表达式不同,得到的结果也不同。

» 本帖已获得的红花(最新10朵)

QQ:2120156492
3楼2021-09-15 22:37:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

我无耻又无赖

木虫 (著名写手)

送红花一朵
引用回帖:
3楼: Originally posted by hzlhm at 2021-09-15 22:37:40
控制误差的表达式,
f=100*sum(abs((yexp-ycal)./(yexp)))./n;
可能有问题
因为控制误差的表达式不同,得到的结果也不同。

主要的目的是让yexp和ycal更接近,所以用了个相对误差的衡量方法,之前拟合过挺多数据,总的相对误差达到5以下差不多就能用了,现在的主要问题就是用fmincon函数,初值选取的不合适的话,相对误差10以下都很难达到。
4楼2021-09-15 23:19:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料328求调剂 +8 一个萝卜02 2026-03-03 8/400 2026-03-04 22:57 by wutongshun
[考研] 085600材料调剂 总分330 +4 池池丶 2026-03-03 4/200 2026-03-04 21:15 by wutongshun
[考研] 一志愿武汉理工大学-085602-总分296分-求调剂 +7 紫川葡柚 2026-03-04 7/350 2026-03-04 21:04 by kakakapanpan
[考研] 282求调剂 +5 2103240126 2026-03-02 8/400 2026-03-04 17:29 by 妄深于海
[考研] 085601 材料工程 320 +6 和乐瑶 2026-03-03 6/300 2026-03-04 16:01 by chixmc
[考研] 材料325求调剂 30+5 mariusuki 2026-03-02 10/500 2026-03-04 09:24 by njzyff
[考研] 0703化学学硕 288分 +4 旅行中的紫葡萄 2026-03-03 4/200 2026-03-03 23:41 by ch1979
[考研] 085602化学工程350,调剂,有没有211的 +5 利好利好. 2026-03-02 9/450 2026-03-03 17:06 by 利好利好.
[考研] 299求调剂 +5 kkcoco25 2026-03-02 9/450 2026-03-03 12:55 by 公瑾逍遥
[考研] 材料工程专硕283求调剂 5+8 ,!? 2026-03-02 10/500 2026-03-03 12:01 by EBSD
[考研] 考研复试调剂,过国家线的同学都可报名 +7 黑!在干嘛 2026-02-28 8/400 2026-03-03 08:39 by ww哈
[考研] 338求调剂 +5 18162027187 2026-03-02 6/300 2026-03-03 07:52 by njzyff
[考研] 306分材料调剂 +5 chuanzhu川烛 2026-03-01 6/300 2026-03-02 19:51 by 张晓芳0105
[考博] 诚招农业博士 +3 心欣向荣 2026-02-28 3/150 2026-03-02 13:33 by 时间不狗
[考研] 284求调剂 +10 天下熯 2026-02-28 11/550 2026-03-02 11:03 by 无际的草原
[考研] 一志愿郑大材料学硕298分,求调剂 +6 wsl111 2026-03-01 6/300 2026-03-02 11:00 by ydudjddnd
[考研] 291分工科求调剂 +9 science饿饿 2026-03-01 10/500 2026-03-01 18:55 by 18137688336
[考博] 26申博 +4 想申博! 2026-02-26 6/300 2026-03-01 17:32 by 想申博!
[考研] 328求调剂 +3 aaadim 2026-03-01 5/250 2026-03-01 17:29 by njzyff
[考研] 调剂 +3 简木ChuFront 2026-02-28 3/150 2026-03-01 11:46 by 王伟要上岸啊
信息提示
请填处理意见