24小时热门版块排行榜    

查看: 2580  |  回复: 8

yanshuaiyin

新虫 (正式写手)

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

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

» 猜你喜欢

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

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

小米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的回帖

小米2011

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by yanshuaiyin at 2013-12-27 13:25:02
谢谢,还有不太理解的地方,我要做的是对汽车变速器进行优化,求体积最小,里边设计变量有齿轮的齿数Z,模数m,螺旋角和齿宽,需要分别建立目标函数和约束函数,目标函数就是体积最小,体积函数中含有非设计变量, ...

你是不懂如何建立目标函数吗?
5楼2013-12-28 00:05:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yanshuaiyin

新虫 (正式写手)

引用回帖:
5楼: Originally posted by 小米2011 at 2013-12-28 00:05:30
你是不懂如何建立目标函数吗?...

不懂,简单的看着书上的例题就可以懂,这个有点复杂,涉及变量也多,共有17个设计变量,另外8个可以用设计变量表示,谢谢你
Ifyoudonotleaveme,Iwillbyyoursideuntilthelifeend.
6楼2013-12-28 08:54:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小米2011

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by yanshuaiyin at 2013-12-28 01:54:29
不懂,简单的看着书上的例题就可以懂,这个有点复杂,涉及变量也多,共有17个设计变量,另外8个可以用设计变量表示,谢谢你...

设z作为fmincon的输入,即为你说的17个设计变量。
z12=fmincon(@fun_volume,z0,A,b); %z0需要你决定,fun_volume也需要你设计,如你所说,为17+8个输入变量的函数,但由于另8个可用17个表示,那么本质上fun_volume为17个变量的函数。
简单的写为
function v=fun_volume(z17)
z8=sub_fun(z17);%此函数即为你所说的另8个为17个变量的函数
...%此处填写你自己定义的体积函数
7楼2014-01-06 23:26:53
已阅   回复此楼   关注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 ...

谢谢,有点明白了,能加你QQ详聊吗?非常感谢,648662590,谢谢你
Ifyoudonotleaveme,Iwillbyyoursideuntilthelifeend.
8楼2014-01-10 16:42:03
已阅   回复此楼   关注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的回帖
相关版块跳转 我要订阅楼主 yanshuaiyin 的主题更新
信息提示
请填处理意见