fmincon函数
• 功能:求多变量有约束非线性函数的最小值。
• 数学模型:
• min F(X)
• subject to: A*X <= B, Aeq*X = Beq
(线性约束)
C(X) <= 0, Ceq(X) = 0 (非线性约束)
LB <= X <= UB
其中,X, B, Beq, LB,和UB为向量, A 和 Aeq 为矩阵, C(X)
和 Ceq(X)为函数,返回标量。f(x), c(x), 和 ceq(x)可以是非线性
函数。
• 调用格式:
[x,fval,exitflag,output]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,non
lcon,options)
Fval:目标函数在解X处的目标函数值
Exitflag:返回算法终止的状态指示结构变量
Output:优化计算结束之时返回结构变量
由于本问题中需要优化的变量只有两个,属于中等规模
优化问题。fmincon命令使用序列二次规划算法(SQP)来求
解。序列二次规划方法是将一个带有等式和不等式约束(可
以是非线性)的非线性优化问题转化为二次规划问题求解。
对于中等规模优化问题,求解二次规划问题涉及到
Hessian矩阵。Hessian矩阵的近似计算是通过拟牛顿法得到的,
拟牛顿法提供了两个公式可用于Hessian矩阵(或其逆)的迭
代:BFGS公式和DFP公式,而初始的Hessian矩阵是任意给的,
如给一个单位阵I。
MATLAB中SQP法的实现分三步,即
• 拉格朗日函数Hessian矩阵的更新;
• 二次规划问题求解;
• 一维搜索和目标函数的计算
序列二次规划(SQP)算法
• 序列二次规划(Sequential Quadratic Programming,简称SQP)
是当前公认的处理中、小规模非线性规划问题最优秀的算
法之一, 该算法通过将原问题转化为一系列二次规划子问
题的求解来获得原问题的最优解,对拉格朗日函数取二次近
似,从而提高二次规划子问题的近似程度, 对非线性较强的
优化问题也能进行计算。
• SQP方法的基本思想如下:在某个近似解处将原非线性规划
问题简化为处理一个二次规划问题,求取最优解,如果有,则
认为是原非线性规划问题的最优解, 否则, 用近似解代替构
成一个新的二次规划问题, 继续迭代。
• Matlab 优化工具箱中SQP算法的实现主要由以下三部分组成。
(1)更新拉格朗日函数的Hessian矩阵
H
1
k
H
k
T
q q
k
k
T
q s
k
k
T
H H
k
T
k
s H s
k
k k
)
(5
• 式中:
q
k
f x
k
(
1
)
m
m
i
g x
k
(
i
)
[
f x
k
(
)
1
i
1
i
1
i
g x
k
(
i
)]
s
k
x
k
1
x
k
•
在每一次的迭代中, 采用BFGS 方法计算拉格朗日函数的
Hessian 矩阵的正定拟牛顿近似值H。只要保证 为正,并且H初始
化为正定矩阵,则Hessian矩阵一直保持正定。