优化工具箱提供fmincon函数用于对有约束优化问题进行求解,其语法格式如下[1] :
x= fmincon(fun,x0,A,b)
x= fmincon(fun,x0,A,b,Aeq,beq)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)
[x,fval]= fmincon(...)
[x,fval,exitflag]= fmincon(...)
[x,fval,exitflag,output]= fmincon(...)
其中,x, b, beq, lb,和ub为线性不等式约束的上、下界向量, A 和 Aeq 为线性不等式约束和等式约束的系数矩阵,fun为目标函数,nonlcon为非线性约束函数。
显然,其调用语法中有很多和无约束函数fminunc的格式是一样的,其意义也相同,在此不在重复介绍。对应上述调用格式的解释如下:
x= fmincon(fun,x0,A,b) 给定初值x0,求解fun函数的最小值x。fun函数的约束条件为A*x<= b,x0可以是标量或向量。
x= fmincon(fun,x0,A,b,Aeq,beq) 最小化fun函数,约束条件为Aeq*x= beq 和 A*x <= b。若没有不等式线性约束存在,则设置A=[]、b=[]。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 定义设计变量x的线性不等式约束下界lb和上界ub,使得总是有lb<= x <= ub。若无等式线性约束存在,则令Aeq=[]、beq=[]。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在上面的基础上,在nonlcon参数中提供非线性不等式c(x)或等式ceq(x)。fmincon函数要求c(x) <= 0且ceq(x)= 0。