请教大侠,利用Matlab优化工具箱中的fmincon函数做优化时,程序不能通过目标函数的设置,错误信息和目标函数源程序分别如下,请指教救命,感激涕零!!
************************************************************************
错误信息:
??? Function 'gt' is not defined for values of class 'sym'.
Error in ==> optim\private\nlconst at 763
while (MERIT2 > MATL2) && (MERIT > MATL) ...
Error in ==> fmincon at 512
[X,FVAL,lambda,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
Error in ==> run at 4
[ x, fval , exitflag, output, lambda, grad, hessian ]= fmincon (@ ( x) objfun ( x) , [ 3; 1 ] , [ ] , [ ] ,[ ] , [ ] , [ 3; 1 ] , [ 20; 20 ] , @ ( x) confun ( x),options )
**************************************************************************
目标函数程序:
function f=objfun(x)
hmax=8; n=2400; w=2*pi*n/60; aB=40; vg=0.2; [rmin]=4.5; r0=18;
p=2;q= 2*x(1);r=2*x(1)+2*x(2);s=2*x(1)+4*x(2);v=vg*aB/w;
C0=hmax;
Cp=((-C0)*q*r*s+v*(q*r+q*s+r*s-q-r-s+1))/(q-2)/(r-2)/(s-2);
Cq=((-C0)*p*r*s+v*(p*r+p*s+r*s-p-r-s+1))/(p-q)/(r-q)/(s-q);
Cr=((-C0)*p*q*s+v*(p*q+p*s+q*s-p-q-s+1))/(p-r)/(q-r)/(s-r);
Cs=((-C0)*p*q*r+v*(p*q+p*r+q*r-p-q-r+1))/(p-s)/(q-s)/(r-s);
E=1/C0*(C0+Cp/(1+p)+Cq/(1+q)+Cr/(1+r)+Cs/(1+s));
syms a;
B=1-(a+38.5)/40;
hother=(C0-2)+Cp*B.^p+Cq*B.^q+Cr*B.^r+Cs*B.^s;
k=int(hother,a,0,80);
Ehother=k/(2*aB*C0);
f =-E-Ehother;