24小时热门版块排行榜    

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

yanshuaiyin

新虫 (正式写手)

[求助] 编写程序中如何嵌套函数,求助 已有1人参与

在应用fmicon优化中,编写目标函数,如何进行函数的嵌套,需要求最小体积,目标函数中含有非设计变量的变量,但这些变量可以用设计变量表示,如:目标函数中含有Z1,Z2,Z3......Z10,设计变量只有Z1和Z2,其中Z3到Z10可以用Z1和Z2进行表示,怎么编程实现,十分感谢,急求。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

Ifyoudonotleaveme,Iwillbyyoursideuntilthelifeend.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yanshuaiyin

新虫 (正式写手)

引用回帖:
7楼: Originally posted by 小米2011 at 2014-01-06 23:26:53
设z作为fmincon的输入,即为你说的17个设计变量。
z12=fmincon(@fun_volume,z0,A,b); %z0需要你决定,fun_volume也需要你设计,如你所说,为17+8个输入变量的函数,但由于另8个可用17个表示,那么本质上fun_volume ...

z8=sub_fun(z17);这里需要添加8个函数吗?因为有8个变量需要表示,谢谢
Ifyoudonotleaveme,Iwillbyyoursideuntilthelifeend.
9楼2014-01-11 10:13:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

小米2011

新虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yanshuaiyin: 金币+30, ★★★很有帮助 2014-01-09 15:34:07
function z=fmincon(@fun_volume,x0,A,b)

function y=fun_volume(z12)
% input: z12 为向量,z12=[z1,z2]'

z3_10=sub_fun(z12);
z=[z12;z3_10]; %
... (此处添加变量为z1-10的目标函数)

function z3_10=sub_fun(z12)
% input: z12 为向量,z12=[z1,z2]';
% output: z3_10 为向量,z3_10=[z3,...z10]';
......(此处添加z3-z10的相应语句)
end

end
end
2楼2013-12-27 04:06:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小米2011

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 小米2011 at 2013-12-26 21:06:42
function z=fmincon(@fun_volume,x0,A,b)

function y=fun_volume(z12)
% input: z12 为向量,z12='

z3_10=sub_fun(z12);
z=; %
... (此处添加变量为z1-10的目标函数)

function z3_10=sub_fun(z12)
% i ...

不好意思,修改为:

function z=fmin_volume(z0,A,b)
%input: z0为向量,[z1,z2]'的初始值。
% A, b 详见fmincon
%output: [z1,z2,...,z10]的返回值

z12=fmincon(@fun_volume,z0,A,b);
z3_10=sub_fun(z12);
z=[z12(; z3_10(];

function y=fun_volume(z12)
% input: z12 为向量,z12=[z1,z2]'

z3_10=sub_fun(z12);
z=[z12;z3_10]; %
... (此处添加变量为z1-10的体积函数)
end

function z3_10=sub_fun(z12)
% input: z12 为向量,z12=[z1,z2]';
% output: z3_10 为向量,z3_10=[z3,...z10]';
......(此处添加z3-z10的相应语句)
end

end
3楼2013-12-27 04:14:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yanshuaiyin

新虫 (正式写手)

引用回帖:
3楼: Originally posted by 小米2011 at 2013-12-27 04:14:10
不好意思,修改为:

function z=fmin_volume(z0,A,b)
%input: z0为向量,'的初始值。
% A, b 详见fmincon
%output: 的返回值

z12=fmincon(@fun_volume,z0,A,b);
z3_10=sub_fun(z12);
z=;

function y ...

谢谢,还有不太理解的地方,我要做的是对汽车变速器进行优化,求体积最小,里边设计变量有齿轮的齿数Z,模数m,螺旋角和齿宽,需要分别建立目标函数和约束函数,目标函数就是体积最小,体积函数中含有非设计变量,这些非设计变量可以用设计变量来表示,怎么能实现编程,刚接触Matlab,多谢指导啊!做不出来老师春节不让回家,
Ifyoudonotleaveme,Iwillbyyoursideuntilthelifeend.
4楼2013-12-27 20:25:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见