登录论坛

查看完整版本 : [MATLAB工具箱] 关于fmincon的问题,急呀!


骑单车的男孩
2009-07-22, 19:42
哪位高手能帮个忙?目标函数是非线性,约束只有[30 0 0 0 ]<=x, x为一向量。运行总过不去,老有错误信息
??? Error using ==> optimfcnchk
NONLCON must be a function.

Error in ==> fmincon at 257
[confcn, msg] = optimfcnchk(NONLCON,'fmincon',length(varargin),funValCheck,gradconstflag,false,1);

>> 下面是程序:
目标函数:
function f = myfun(x)
C1= 1 %待加工点z坐标
C2= 2 %待加工点y坐标
C3= 3 %待加工点z坐标

z12=1/5*[sqrt(500^2-(x(1)*cos(x(2))+c1)^2-(x(1)*sin(x(2))+c2)^2)-...
sqrt(500^2-(x(1)*cos(x(3))+c1)^2-(x(1)*sin(x(3))+c2)^2)] %p1点与p2点z坐标差

z32=1/5*[sqrt(500^2-(x(1)*cos(x(4))+c1)^2-(x(1)*sin(x(4))+c2)^2)-...
sqrt(500^2-(x(1)*cos(x(3))+c1)^2-(x(1)*sin(x(3))+c2)^2)] %p3点与p2点z坐标差

N=[x(0)*((sin(x(4))-sin(x(3)))*z12-(sin(x(4))-sin(x(3)))*z32),
x(0)*((sin(x(2))-sin(x(3)))*z32-(sin(x(4))-sin(x(3)))*z12),
x(0)*((sin(x(4))-sin(x(3)))*(sin(x(4))-sin(x(3)))-(sin(x(2))-sin(x(3)))*(sin(x(4))-sin(x(3))))] %测量模型的法向量

M=[2*C1/500^2,2*C2/500^2,2*C3/100^2] %理论法向量

f=1-abs(dot(N,M))/(norm(N)*norm(M))


下面是主程序:
x0=[30 0 2*pi/3 4*pi/3]
A=[]
b=[]
Aep=[]
Beq=[]
lp=[30 0 0 0]
up=[]
options(3)=1-cos(0.5*pi/180)
[x,fval]=fmincon(@myfun,x0,A,b,Aep,Beq,lp,up,options)

运行结果:
??? Error using ==> optimfcnchk
NONLCON must be a function.

Error in ==> fmincon at 257
[confcn, msg] = optimfcnchk(NONLCON,'fmincon',length(varargin),funValCheck,gradconstflag,false,1);
应该设nonlcon么?但我这里只有变量x的下限,没有nonlcon呀!!