非线性规化模型
如果目标函数或约束条件中包含非线性函数,这种规划问题为非线性规化问题。
非线性规化(目前)没有适用于各种问题的一般算法,各个方法都有自己的特定使用范围。
与线性规化的区别
如果线性规化最优解存在,则其最优解只能在其可行域的边界上达到(特别是顶点),而非线性规化的最优解如果村子可能在其可行域的任意一点达到。
非线性规化的Matlab解法
Matlab中的非线性规化的数学模型写成下面这种形式:
式中:f(x) 为标量函数;A,b,Aeq,beq,lb,ub为相应维数的矩阵和向量;c(x),ceq(x)为非线性向量函数。
Matlab中的命令是:
[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
无约束问题
多元函数->求驻点->Hessian阵->验证
Matlab工具箱中,用于求解无约束极小值问题的函数有fminunc和fminsearch。
fminsearch只能求出给定的初始值附近的一个极小值。
函数零点和方程组的解
约束极值问题
带有约束条件的极值问题
简化问题,可采用以下方法:
- 约束问题——>无约束问题
- 非线性规化问题——>线性规化
- 复杂问题——>较简单问题
库恩-塔克条件:
二次规划
若某非线性规化的目标函数为自变量x的二次函数,约束条件又全是线性的,就称为二次规划。
Matlab中求解二次规划的命令是:
[x,fval] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
罚函数法
利用罚函数法,可将非线性规化问题的求解,转化为求解一系列无约束极值问题,也成为序列无约束最小化技术(Sequential Unconstrained Minization Technique,SUMT)。
利用问题中的约束函数作为适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。
外罚函数法
内罚函数法
可参考这篇博客理解