24小时热门版块排行榜    

查看: 274  |  回复: 1

qiaoye32803

新虫 (初入文坛)

[求助] 函数调用

这是我的目标函数,里面有随机生成数:
function opforpaper=lq_paper(x)
syms theta;
mu_ra=0.0645;
mu_rb=0.0889;
mu_rc=0.043;
sigma_ra=0.008;
sigma_rb=0.07;
sigma_rc=0.004;

for i=1:100                    
f_1(i)=cos(theta)*(x(1)+x(3)*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*cos(unifrnd(0,2*pi)))+sqrt((x(2)+x(4)*normrnd(0,1)+normrnd(mu_rc,sigma_rc)*cos(unifrnd(0,2*pi))).^2-(x(1)+x(3)*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*sin(theta)).^2);
f_2(i)=cos(theta+0.0063)*(x(1)+x(3)*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*cos(unifrnd(0,2*pi)))+sqrt((x(2)+x(4)*normrnd(0,1)+normrnd(mu_rc,sigma_rc)*cos(unifrnd(0,2*pi))).^2-(x(1)+x(3)*normrnd(0,1)+normrnd(mu_rb,sigma_rb)*cos(unifrnd(0,2*pi))-normrnd(mu_ra,sigma_ra)*sin(theta+0.0063)).^2);
f3(i)=abs(f_1(i)-f_2(i));
end
opforpaper=mean(f3);
下面的是约束,
function [c,ceq]=consfun(x)
M=384;
c=[(M*sqrt(M^2+f3^2)-M)/(2*sqrt(M^2+f3^2))-0.05;f3*M/(2*sqrt(M^2+f3^2))-0.5];
ceq=[];
下面的是所用的计算函数:
clear
x0=[50,335,0.005,0.05];
lb=[45,330,0.002,0.007];
ub=[55,340,0.02,0.07];
options=optimset('largescale','off','Algorithm','active-set');
[x,fval]=fmincon('lq_paper',x0,[],[],[],[],lb,ub,'consfun',options)
现在有个问题:在约束中的f3必须是目标函数中生成的那个f3,因为目标函数中的f3含有随机数,请问哪位大神能帮我下,在约束中调用目标函数中的那个f3!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
用全局变量试试,应该可以的吧
showmethemoney
2楼2012-11-20 12:01:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 qiaoye32803 的主题更新
信息提示
请填处理意见