|
|
[求助]
对不住各位。又来了。matlab工程优化设计中fmincon的问题。
用fmincon函数求最解优化设计问题,数学模型
min f=NC(1)+NC(2)
s.t. 7≤NC≤54;
0≤ΔPhot≤10;
0≤ΔPcold≤10;
0.7≤ε≤1;
其中ΔPhot和ΔPcold以及ε分别是NC的函数
![]()
部分地方为了简化(因为求解的时候总是出现错误)PI,PII这种都规定了统一的1.也简化了一些其他的参数。这个应该都不是重点,因为只是一些数据的输入~如果看不清可以再联系我。
![]()
其中
![]()
可能上面的东西看起来比较烦,我仿照实例编写的程序如下:
主函数
%PHEopt
clc;
clear all;
close all;
global NC
global fhot fcold Lp rhohot rhocold De Achannel g PI PII
global Aport Aplate Cphot Cpcold K NTU Cxing epsilon deltaPhot deltaPcold
global Whot Wcold
fhot=1.68;
fcold=1.84;
PI=1;PII=1;
Lp=0.584;
rhohot=0.9469;
rhocold=11.412;
De=0.006;
Achannel=5.12e-4;
g=9.8;
Aport=1.256*exp(-3);
Aplate=0.1;
Cphot=4798;
Cpcold=4246;
K=1000;
Whot=0.278;Wcold=0.083;
Cxing=min(Whot*Cphot,Wcold*Cpcold)/max(Whot*Cphot,Wcold*Cpcold);
NC0=[4 3];
NCL=[3 3];
NCU=[30 30];
options=optimset('LargeScale','off');
[NC,f]=fmincon(@PHEoptfun1,NC0,[],[],[],[],NCL,NCU,@PHEoptcon1)
目标函数
function f=PHEoptfun1(NC)
f=NC(1)^2+NC(2)^2;
end
约束函数
function [c ceq]=PHEoptcon1(NC)
global fhot fcold Lp rhohot rhocold De Achannel g PI PII
global Aport Aplate Cphot Cpcold K NTU Cxing epsilon deltaPhot deltaPcold
global Whot Wcold NC
deltaPhot=4*fhot*Lp*PI/((2*rhohot*De)*(Whot/(NC(1)*Achannel)))+1.4*PI/(2*rhohot)*(Whot/Aport)^2+rhohot*g*Lp;
deltaPcold=4*fcold*Lp*PII/((2*rhocold*De)*(Wcold/(NC(2)*Achannel)))+1.4*PII/(2*rhocold)*(Wcold/Aport)^2+rhocold*g*Lp;
NTU=K*(NC(1)+NC(2)-1)*Aplate/min(Whot*Cphot,Wcold*Cpcold);
epsilon=(1-exp(-NTU*(1-Cxing)))/(1-Cxing*exp(-NTU*(1-Cxing)));
c(1)=NC(1)+NC(2)-58;
c(2)=7-NC(1)-NC(2);
c(3)=deltaPhot-10;
c(4)=-deltaPhot;
c(5)=deltaPcold-10;
c(6)=-deltaPcold;
c(7)=epsilon-1;
c(8)=0.7-epsilon;
ceq=[];
end
但是运行之后总是提示
??? Attempted to access NC(1); index out of bounds because numel(NC)=0.。
但是实例中 求解变量X在目标函数以及约束中也是未知的,应该是通过初始点及主函数求解第一个值之后反复迭代得到的,但是为什么我这里程序是仿照实例编的,但是出现错误呢?
[ Last edited by kashying on 2013-5-2 at 17:28 ] |
|