请教高手MATLAB约束非线性规划/一M文件的调试%1 目标函数function f=abfun(x);f=pi*130*(x(1)-0.75*x(3))^2/4+pi*[80^2-(x(1)-0.75*x(3))^2]*x(2)/4;%2 非线性约束funtion [c,ceq]=abfung(x);c(1)=40000-[0.75*pi*(x(1)-0.75*x(3))*x(2)]*10;
来源:学生作业帮助网 编辑:六六作业网 时间:2024/10/05 08:02:24
请教高手MATLAB约束非线性规划/一M文件的调试%1 目标函数function f=abfun(x);f=pi*130*(x(1)-0.75*x(3))^2/4+pi*[80^2-(x(1)-0.75*x(3))^2]*x(2)/4;%2 非线性约束funtion [c,ceq]=abfung(x);c(1)=40000-[0.75*pi*(x(1)-0.75*x(3))*x(2)]*10;
请教高手MATLAB约束非线性规划/一M文件的调试
%1 目标函数
function f=abfun(x);
f=pi*130*(x(1)-0.75*x(3))^2/4+pi*[80^2-(x(1)-0.75*x(3))^2]*x(2)/4;
%2 非线性约束
funtion [c,ceq]=abfung(x);
c(1)=40000-[0.75*pi*(x(1)-0.75*x(3))*x(2)]*10;
c(2)=atan{x(3)/[pi*(x(1)-0.75*x(3))]}-atan(0.13);
c(3)=4*40000*{sqrt{[x(1)-1.736*x(3)]^2+12*{tan{atan(x(3)/[pi*(x(1)-0.75*x(3))]+atan(0.13))*(x(1)-0.75*x(3))}^2}}/pi/[(x(1)-1.736*x(3))^3]-785;
c(4)=40000/(0.75*pi*x(1)*x(2))-55;
c(5)=3*40000/(0.75*pi*x(1)*x(2))-50;
c(6)=4*0.5*130/(x(1)-1.736*x(3))-(7/18);
%c(7)=30-x(2);
%c(8)=x(2)-280;
%c(9)=20-x(1);
%c(10)=x(1)-650;
%c(11)=2-x(3);
%c(12)=x(3)-24;
ceq=[];
%lb=[20 30 2];
%ub=[650 280 24];
%3 求解调用文件
function solve
% 设计变量的初始值
x0=[22;30;2];
% 设计变量的下界与上界
lb=[20;30;2];
ub=[650;280;24];
% 使用多维约束优化命令fmincon(调用目标函数abfun和非线性约束函数abfung)
% 不定义线性不等式约束中设计变量的系数矩阵a=[]和常数项向量b=[]
% 没有等式约束,侧参数:系数矩阵Aeq=[]和常数项向量beq=[]
[x,fn,exitflag]=fmincon(@abfun,x0,[],[],[],[],lb,ub,@abfung)
C3 这个约束的公式就是这样的。这里没有问题。
现在已经调通了,不过还有问题,不收敛。
%1 目标函数
function f=fun(x);
f=pi*130*(x(1)-0.75*x(3))^2/4+pi*(60^2-(x(1)-0.75*x(3))^2)*x(2)/4;
%2 非线性约束
function [c,ceq]=constrain(x);
c=[40000-(0.75*pi*(x(1)-0.75*x(3))*x(2))*11;
atan(x(3)/(pi*(x(1)-0.75*x(3))))-atan(0.13)+1.5;
4*40000*sqrt((x(1)-1.736*x(3))^2+12*(tan(atan(x(3)/(pi*(x(1)-0.75*x(3)))))+atan(0.13))*(x(1)-0.75*x(3)))^2/(pi*(x(1)-1.736*x(3))^3)-785;
40000/(0.75*pi*x(1)*x(2))-35;
3*40000/(0.75*pi*x(1)*x(2))-45;];
%4*0.5*130/(x(1)-1.736*x(3))-10;];
ceq=[];
% 设计变量的初始值
x0=[32;43;5];
% 设计变量的下界与上界
lb=[20;30;2];
ub=[650;280;24];
[x,fval,exitflag]=fmincon(@fun,x0,[],[],[],[],lb,ub,@constrain)
如何解决?
提示的错误为:
Maximum number of function evaluations exceeded;
increase OPTIONS.MaxFunEvals.
x =
-0.4944
42.9909
-13.4653
fval =
1.2786e+005
exitflag =
0
请教高手MATLAB约束非线性规划/一M文件的调试%1 目标函数function f=abfun(x);f=pi*130*(x(1)-0.75*x(3))^2/4+pi*[80^2-(x(1)-0.75*x(3))^2]*x(2)/4;%2 非线性约束funtion [c,ceq]=abfung(x);c(1)=40000-[0.75*pi*(x(1)-0.75*x(3))*x(2)]*10;
毛病在这里:
c(3)=4*40000*{sqrt{[x(1)-1.736*x(3)]^2+12*{tan{atan(x(3)/[pi*(x(1)-0.75*x(3))]+atan(0.13))*(x(1)-0.75*x(3))}^2}}/pi/[(x(1)-1.736*x(3))^3]-785;
这行命令里面的括号用得乱七八糟,你检查一下就知道了
PS:
既然你都这么说,我就不讲啦.自己数数看看这里面大括号平衡不平衡吧~