24小时热门版块排行榜    

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

muyouyou

新虫 (初入文坛)

[求助] matlab优化求解中遇到问题,望大神指点。。。已有1人参与

在matlab中
目标函数function=myfun(x)
f=0.5*1.935*10^(-5)*x(1)^2*x(2)*(x(3)+1.5)+0.5*5.75*x(2)^3*x(3)/x(1)^4;
约束条件function[C,Ceq]=mycon(x)
c=[1.35*10^(5)/x(1)+12.76*10^(6)*x(2)^2-6.9*10^5*x(1)*x(2)/(12.56*x(1)^3*x(2)-12.56*x(1)^4);x(1)^2*10^10/(x(2)*x(3));(x(1)*x(3)+x(1))/x(2)+86.25*10^3/x(2);x(1)*x(3)+1.5*x(1)-215];
ceq=[];
主程序:
x0=[38.6 191 4.06];
lb=[25 185 3.5];
ub=[40 250 7.0];
options=optimset('LargeScale','off');
[x,fval]=fmincon(‘myfun’,x0,[],[],[],[],lb,ub,'mycon')
运行结果为:??? Error using ==> fmincon
FMINCON cannot continue because user supplied nonlinear constraint function
failed with the following error:
One or more output arguments not assigned during call to 'F:\software\matlab\work\mycon.m (mycon)'.
本人初接触matlab,总是出现这种错误,不知是怎么回事。望高手指点。。。
回复此楼

» 猜你喜欢

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

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

月只蓝

主管区长 (职业作家)

【答案】应助回帖

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-11-05 21:21:38
约束条件是非线性的。
对于非线性约束情况,fmincon按附图1中格式调用。
附图1中正是一个例子。

重新上传附图1。
matlab优化求解中遇到问题,望大神指点。。。
附图1.png

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2014-11-05 21:22:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
约束条件是非线性的。
对于非线性约束情况,fmincon按附图1中格式调用。
附图1中正是一个例子。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-11-05 21:21:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muyouyou

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 月只蓝 at 2014-11-05 21:22:11
重新上传附图1。

附图1.png
...

function Fmincon
>>clear all;clc
>> x0=[38.6 191 4.06];
>> lb=[25 185 3.5];
>> ub=[40 250 7.0];
>> [x,fval]=fmincon(@func,x0,[],[],[],[],lb,ub,@NlinCons)
%---------------------------------------------------------
function[C,Ceq]=NlinCons(x)
c=[1.35*10^(5)/x(1)+12.76*10^(6)*x(2)^2-6.9*10^5*x(1)*x(2)/(12.56*x(1)^3*x(2)-12.56*x(1)^4);x(1)^2*10^10/(x(2)*x(3));(x(1)*x(3)+x(1))/x(2)+86.25*10^3/x(2);x(1)*x(3)+1.5*x(1)-215];
ceq=[];
%---------------------------------------------------------
functionf=func(x)
f=0.5*1.935*10^(-5)*x(1)^2*x(2)*(x(3)+1.5)+0.5*5.75*x(2)^3*x(3)/x(1)^4
我按你给的步骤计算了一下,结果是??? Error: File: F:\software\matlab\work\Fmincon.m Line: 3 Column: 1
Missing variable or function..是怎么回事呢?谢谢你了。。。
4楼2014-11-06 09:32:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

引用回帖:
4楼: Originally posted by muyouyou at 2014-11-06 09:32:10
function Fmincon
>>clear all;clc
>> x0=;
>> lb=;
>> ub=;
>> =fmincon(@func,x0,[],[],[],[],lb,ub,@NlinCons)
%------------------------------------------------------ ...

CODE:
function test_1106
clear all;clc,format long
tic,
x0=[38.6 191 4.06];
lb=[25 185 3.5];
ub=[40 250 7.0];
OPTIONS=optimset('MaxFunEvals',5000,'TolFun',1e-6,'TolX',1e-6,'Algorithm','active-set');%,'Algorithm','interior-point','sqp','active-set');
[x,fval]=fmincon(@func,x0,[],[],[],[],lb,ub,@NlinCons,OPTIONS);
[ff fff]=NlinCons(x);
fprintf('\n\n计算结果:\n');
fprintf(' \t目标函数值 fval = %.6e\n\n',fval);
fprintf(' \t约束条件1函数值 f1 = %.6e\n',ff(1));
fprintf(' \t约束条件2函数值 f2 = %.6e\n',ff(2));
fprintf(' \t约束条件3函数值 f3 = %.6e\n',ff(3));
fprintf(' \t约束条件4函数值 f4 = %.6e\n',ff(4));
fprintf('\n\t参数 x1 = %.6f',x(1))
fprintf('\n\t参数 x2 = %.6f',x(2))
fprintf('\n\t参数 x3 = %.6f',x(3))
%---------------------------------------------------------
function[C,Ceq]=NlinCons(x)
C=[1.35*10^(5)/x(1)+12.76*10^(6)*x(2)^2-6.9*10^5*x(1)*x(2)/(12.56*x(1)^3*x(2)-12.56*x(1)^4);x(1)^2*10^10/(x(2)*x(3));(x(1)*x(3)+x(1))/x(2)+86.25*10^3/x(2);x(1)*x(3)+1.5*x(1)-215];
Ceq=[];

%C=[];
%Ceq=[1.35*10^(5)/x(1)+12.76*10^(6)*x(2)^2-6.9*10^5*x(1)*x(2)/(12.56*x(1)^3*x(2)-12.56*x(1)^4);x(1)^2*10^10/(x(2)*x(3));(x(1)*x(3)+x(1))/x(2)+86.25*10^3/x(2);x(1)*x(3)+1.5*x(1)-215];

%---------------------------------------------------------
function f=func(x)
f=0.5*1.935*10^(-5)*x(1)^2*x(2)*(x(3)+1.5)+0.5*5.75*x(2)^3*x(3)/x(1)^4;
toc

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2014-11-06 09:57:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见