li343 发表于 2007-9-16 19:29

请帮忙修改一个优化程序

在保证Pf最小的情况下,用matlab优化Rf,Hpf,Hcf的值?

%***************************************************************
% This function is used to caculate the measurement of solar
% collector.
%***************************************************************
function =SoclCal(ta,ra,pr,pc,r,yt,pout)
%***************************************************************
%         Tempretures
%***************************************************************
ts=348;
tm=324;
ti=(ta+tm)/2;
tt=(ts-ti)/ta;
%**************************************************************
%         Physical Coefficient
%**************************************************************
rm=1.093;
k=2.76e-2;
g=9.8;
cp=1.005e3;
rf=24.3e-6;
v=16.96e-6;
pm=(rm^8*k^5*g^15)/(ra^15*cp^15*rf^(5/3)*v^(7/3));
%**************************************************************
%          Coefficient
%**************************************************************
roc=pi*pr/cos(2*pi/45);
hoc=(pc/tt)*(pout^11/((0.018*yt)^11*pm*r^16))^(1/15);
%**************************************************************
%         Independent Variable
%**************************************************************
R=;
Hp=;
%**************************************************************
%         Grid Paremeters
%**************************************************************
x=R;
y=Hp;
=meshgrid(x,y);
P=roc.*X.^2+hoc.*Y.^(0.80)./X;
%***************************************************************
%          Get mininum value of P
%***************************************************************
a=min(P);
Pf=min(a);
=size(P);
zb=0;
for i=1:s
    for j=1:t
      if P(i,j)==Pf
            zb=1;
            break;
      end
    end
   
    if zb==1
      break;
    end
end
Rf=X(i,j);
Hpf=Y(i,j);
Hcf=(Pf-pi*pr*Rf^2/cos(2*pi/45))/pc;

以上是我自己做的程序,所得结果非常的不合情理,请版主帮我修改一下!
先谢谢了!

[ 本帖最后由 eight 于 2007-9-16 23:19 编辑 ]

xjzuo 发表于 2007-9-17 09:27

先把你的问题及参数用word上传一下.---否则很难猜测你在做什么,更不用说提出更好的办法了.
另: 你的代码存在明显问题.

li343 发表于 2007-9-17 12:37

请再帮我看一下如何修改这个优化程序


首先感谢xjzuo版主的提示,现把已把问题说明及变量做成word上传!



%%%%%%%%%%%变量表%%%%%%%%%%%%%%%%%
%ts:地面黑体温度;                        tm:接近烟筒入口处的最大温度;
%ti:集热棚和地面之间气流的平均温度;ta:集热棚周边入口处的环境温度;
%rm:为tm温度下空气的密度;             ra:为ta温度下空气的密度;
%k: 空气导热系数;                        g: 重力加速度;
%cp:定压比热容;                           rf:热扩散率;
%v: 空气的运动粘度;                     r: 烟筒的半径;
%yt:电机转子效率;                         pout:发电机的输出功率;
%pr:集热棚材料价格;                      pc:烟筒材料价格;
%Rf:集热棚半径;                            Hpf:集热棚距地面的高度;
%Hcf:烟筒的高度;                           Pf:太阳能发电机的总成本;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%***************************************************************
% This function is used to caculate the measurement of solar
% collector.
%***************************************************************
function =SoclCal(ta,ra,pr,pc,r,yt,pout)
%***************************************************************
%         Tempretures
%***************************************************************
ts=348;
tm=324;
ti=(ta+tm)/2;
tt=(ts-ti)/ta;
%**************************************************************
%         Physical Coefficient
%**************************************************************
rm=1.093;
k=2.76e-2;
g=9.8;
cp=1.005e3;
rf=24.3e-6;
v=16.96e-6;
pm=(rm^8*k^5*g^15)/(ra^15*cp^15*rf^(5/3)*v^(7/3));
%**************************************************************
%          Coefficient
%**************************************************************
roc=pi*pr/cos(2*pi/45);
hoc=(pc/tt)*(pout^11/((0.018*yt)^11*pm*r^16))^(1/15);
%**************************************************************
%         Independent Variable
%**************************************************************
R=;
Hp=;
%**************************************************************
%         Grid Paremeters
%**************************************************************
x=R;
y=Hp;
=meshgrid(x,y);
P=roc.*X.^2+hoc.*Y.^(0.80)./X;
%***************************************************************
%          Get mininum value of P
%***************************************************************
a=min(P);
Pf=min(a);
=size(P);
zb=0;
for i=1:s
    for j=1:t
      if P(i,j)==Pf
            zb=1;
            break;
      end
    end
   
    if zb==1
      break;
    end
end
Rf=X(i,j);
Hpf=Y(i,j);
Hcf=(Pf-pi*pr*Rf^2/cos(2*pi/45))/pc;

请版主帮我再看看如何修改.

[ 本帖最后由 li343 于 2007-9-17 12:40 编辑 ]

xjzuo 发表于 2007-9-17 14:36

看了一下你的说明文档------这应该是一个“无约束非线性多变量优化问题”。
可以直接利用fminsearch或者fminunc函数求解,你可以试试。
(看看help,或者搜索论坛均可找到例子)

另:现在再返回来看你的代码,似乎离求解问题很远。
页: [1]
查看完整版本: 请帮忙修改一个优化程序