24小时热门版块排行榜    

查看: 1767  |  回复: 1
本帖产生 1 个 程序强帖 ,点击这里进行查看

li343

至尊木虫 (职业作家)

[求助] MATLAB fmincon函数求助 已有1人参与

第一次用MATLAB做优化,请教个关于fmincon函数问题
clc;clear
xo=[30/1000 30/1000 3/1000 3/1000 2];
lower_bound=[20/1000 20/1000 2/1000 2/1000 1];
upper_bound=[40/1000 40/1000 4/1000 4/1000 3];
yy= fmincon(@mainprogram,xo,[],[],[],[],lower_bound,upper_bound)

上述程序段在计算收敛后停不下来,又再次进入迭代循环,最长试运行了24小时,尤其是当xo、lower_bound和upper_bound取为同一数组时,程序也同样停不下来。但如果直接对mainprogram进行赋值计算时,即mainprogram(xo),程序执行完毕则会自动停止。
mainprogram如下:

function optimiziation=mainprogram(x)
global media L_evap
D_coil_cond=x(1);
D_coil_evap=x(2);
di_cond=x(3);
di_evap=x(4);
Area_ratio=x(5);
design=[L_evap,D_coil_cond,D_coil_evap,di_cond,di_evap,Area_ratio]
Vs=2/1000/1000;
RPM=2000;      
superheat=10;
subcool=4;
mw_gc=5/1000;
mw_evap=3/1000;
tw_cond_in=15+273.15;
tw_evap_in=15+273.15;
di_annulus_cond=50/1000;
%D_coil_cond=20/1000
pitch_cond=7/1000;
%di_cond=3/1000
do_cond=di_cond+2/1000;
k_wall_cond=340;
di_annulus_evap=50/1000;
%D_coil_evap=20/1000
pitch_evap=7/1000;
%di_evap=3/1000
do_evap=di_evap+2/1000;
k_wall_evap=340;
A_evap=3.14*L_evap*di_evap;
A_cond=A_evap*Area_ratio;
L_cond=A_cond/(3.14*di_cond);
%xxo=[P_disP P_ref_evap_sup P_suc l_cond_sub l_cond_sup l_evap_sup quality_evap_in]
xxo= [5.95*100 2*100 1.78*100 0.1 0.1 0.1 0.3];%initial guess of refrigeration cycle variables
sol_vector=fsolve(@solver,xxo,[],media,Vs,RPM,superheat,subcool,mw_gc,mw_evap,tw_cond_in,tw_evap_in,di_annulus_cond,D_coil_cond,pitch_cond,do_cond,k_wall_cond,di_cond,L_cond,di_annulus_evap,D_coil_evap,pitch_evap,do_evap,k_wall_evap,di_evap,L_evap)
load Q_evap;
load Cop_c;
optimiziation=-1*Cop_c
return
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

杜子腾001

金虫 (初入文坛)

知识搬运工工长

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
li343: 金币+100, ★★★很有帮助, 写了这么多,难为你了!呵呵,欢迎交流。 2016-01-01 10:25:11
nono2009: 金币+5, 程序强帖+1, 鼓励应助 2016-01-02 08:24:39
fmincon 函数适用于求解非线性优化问题,根据matlab中的文档提示,其用法如下:
X = fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB)
其中的FUN是一个函数的句柄。
但在你调用的函数fmincon中,FUN应该为mainprogram
但是从mainprogram的内容来看,你中间又调用了一个用于求解非线性方程的fsolve函数,求解的方程的函数名为slover,从你给的程序上看,并没有这个函数,所以我没法复现你说的现象。
接下来说一下问题。
你到底想要求解哪些变量?这个东西其实单纯读程序,会比较耗时间,何况你的程序并不完整。
我根据自己理解,大概说一下你想要用这个程序干什么,然后回答你上面提到的问题,最后说一下我的建议。
如果没猜错的话,你的问题属于一个制冷循环问题。
明面上(或者从函数使用的功能上看),你想优化这些参数:D_coil_cond,D_coil_evap,di_cond,di_evap,Area_ratio
根据制冷循环原理啥的,你把包含这些参数的方程组写在了一个名叫solver的函数里面。
但是solve里面还有一些参数,它们是常量或者其它变量或者初始条件,你希望能够随时改变它,所以你把这些参数赋值并保存在一个名叫mainprogram函数里面,并希望通过使用fsolve函数来求解slover中的方程组。
这里面有一些很矛盾的地方。
fmincon 是一个求解优化问题的函数。正常使用的话,FUN应该是一个含参数的函数。
但显然mainprogram函数做不到,至于原因,简单除暴地讲,fsolve是用来求数值解的,不能得到符号解,因此mainprogram不可能成为一个含参数的函数传递给fmincon;另外,求符号解是另一个函数solve. 但即使你用了符号求解函数,也没必要,并且大错特错。
mainprogram最后给optimization赋值我也是没看懂啥意思。
我不太清楚你的想法,感觉其中有很多矛盾的地方,如果你能清楚地说一下你的求解意图应该会很好。
然后分析一下为什么你直接代入x0到mainprogram能得到解。
当你把具体的x0值代入mainprogram后,你所要求解的是一个包含了其它参数的方程solver,这个时候fsolve是能够求解的,但fsolve求解的是数值解,不能求出符号解。
至于为啥你的程序会死循环,抱歉,真不知道,我没有完整的程序,没法复现相关过程。
最后,我说一下求解建议。
a)如果你想求解优化问题,优化这些参数:D_coil_cond,D_coil_evap,di_cond,di_evap,Area_ratio,你可尝试着把fsolve去掉,使mainprogram成为一个含上面五个参数的函数。当然后面一些赋值什么的我没看懂,应该可以去掉。
b)如果你想求解方程组,直接使用fsolve就行,别用啥fmincon。
c)若果你想求解优化问题,优化这些参数:D_coil_cond,D_coil_evap,di_cond,di_evap,Area_ratio,在使mainprogram成为一个含上面五个参数的函数之后,你发现还有一些参数也是变量,但是你可以赋予这些参数给定值,那么建议你使用外部循环、内部使用a的优化编程过程。

差不多就这么些了。希望能帮到你。
对了,如果有用,别忘了把金币给我
还有,我也是学的东西和制冷循环有关系,本科学的就是空调、供暖专业,想要交流也可以。
听风听雨听心声
2楼2015-12-22 20:51:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 li343 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 vZfe6xYu34yj 2026-09-14 3/150 2026-09-17 05:16 by k06BKNblrGRH
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 Aj1rhIDL5ixY 2026-09-14 3/150 2026-09-17 05:14 by k06BKNblrGRH
[公派出国] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 40ms4Wlo4umh 2026-09-14 4/200 2026-09-17 04:26 by k06BKNblrGRH
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 40ms4Wlo4umh 2026-09-14 4/200 2026-09-17 04:26 by k06BKNblrGRH
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 23jxep3nCNZb 2026-09-14 3/150 2026-09-17 03:52 by k06BKNblrGRH
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 23jxep3nCNZb 2026-09-14 4/200 2026-09-17 03:50 by k06BKNblrGRH
[博后之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 s3fFTmArrBt6 2026-09-14 5/250 2026-09-17 02:50 by Tql5LQhh5rLK
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 s3fFTmArrBt6 2026-09-14 6/300 2026-09-17 02:38 by Tql5LQhh5rLK
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 s3fFTmArrBt6 2026-09-13 6/300 2026-09-17 02:26 by Tql5LQhh5rLK
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 s3fFTmArrBt6 2026-09-13 4/200 2026-09-17 02:26 by Tql5LQhh5rLK
[公派出国] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 s3fFTmArrBt6 2026-09-13 7/350 2026-09-17 02:14 by Tql5LQhh5rLK
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 3n8v2C8RimXI 2026-09-13 6/300 2026-09-17 01:50 by Tql5LQhh5rLK
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-17 01:26 by Tql5LQhh5rLK
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +7 QUjhNVAcOSff 2026-09-13 8/400 2026-09-17 01:16 by Tql5LQhh5rLK
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +7 QUjhNVAcOSff 2026-09-13 8/400 2026-09-16 18:37 by rRvxEj3zorCy
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 6F5UbRU2I5hL 2026-09-14 3/150 2026-09-16 17:12 by i3KBRD19ERkG
[考博] 上海工程技术大学激光智能制造课题组|2027级博士研究生招生公告 +7 水士口 2026-09-16 8/400 2026-09-16 13:47 by kkklens
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 s3fFTmArrBt6 2026-09-14 5/250 2026-09-15 16:59 by CgyNCDVNhGVg
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 6F5UbRU2I5hL 2026-09-14 4/200 2026-09-15 07:50 by C79jjtjAKjEn
[教师之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 s3fFTmArrBt6 2026-09-13 4/200 2026-09-15 07:02 by 5BDX0d0WFp7t
信息提示
请填处理意见