约束条件:%%条件中有反正切函数和二次开方,会与这个有关系吗?
function [g,ceq]=YSTJ3(x)
g(1)=x(1)+x(2)-x(3)+100;
g(2)=200-((3^(0.5))/2)*x(5)-(x(1)+2*x(2))/2+x(3)+((3^(0.5))/4)*x(4);
g(3)=pi/6-atan((((3^(0.5))/2)*x(3))/(x(3)/2+x(1)+x(2)));
g(4)=1110-2*(3^(0.5))*(x(1)+x(2)+x(3));
g(5)=1060-2*(3^(0.5))*(x(1)+x(2)+x(3))+(3*(x(1)+x(2))/4+(3^(0.5))/2)*(x(3)^2-((x(1)+x(2))^2)/4)^(0.5);
g(6)=x(1)+x(2)+x(3)-410;
g(7)=350+(3*(x(1)+x(2))/4+(3^(0.5))/2)*(x(3)^2-((x(1)+x(2))^2)/4)^(0.5)-(3^(0.5))*(x(1)+x(2)+x(3));
ceq=[];
目标函数:
function f=MBHS3(x)
f(1)=x(1);
f(2)=x(2);
f(3)=x(3);
f(4)=x(4);
f(5)=x(5);
执行函数:
x0=[70,70,250,90,500];
goal=[70,70,250,90,500];
w=goal;
lb=[0,0,0,0,0];
ub=[1000,1000,1000,1000,1000];
[xopt,fopt,c,d,e,f]=fgoalattain(@MBHS3,x0,goal,w,[],[],[],[],lb,ub,@YSTJ3)
运行结果:
Solver stopped prematurely.
fgoalattain stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 600 (the default value).
xopt =
11.7742 11.7742 304.3358 46.2874 587.4252
fopt =
11.7742 11.7742 304.3358 46.2874 587.4252
c =
1.8150e+04
d =
0
e =
iterations: 29
funcCount: 607
lssteplength: 0.2500
stepsize: 1.3897e+03
algorithm: 'goal attainment SQP, Quasi-Newton, line_search'
firstorderopt: []
constrviolation: 4.2032e+03
message: [1x146 char]
f =
lower: [5x1 double]
upper: [5x1 double]
eqlin: [0x1 double]
eqnonlin: [0x1 double]
ineqlin: [0x1 double]
ineqnonlin: [7x1 double]
求大神指教,小虫感激不尽