利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题,因而也称这种方法为序列无约束最小化技术,简记为 SUMT (Sequential Unconstrained Minization Technique)。
罚函数法求解非线性规划问题的思想是,利用问题中的约束函数作出适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有两种形式,一种叫外罚函数法,另一种叫内罚函数法,下面介绍外罚函数法。
考虑问题:
取一个充分大的数M>0,构造函数
增广目标函数P(x,M)为目标函数的无约束极值问题 min P(x,M)的最优解x 也是原问题的最优解。
例 求下列非线性规划
解 (i) 编写 M 文件 test.m
function g=test(x);
%M为足够大的数
M=50000;
%f为目标函数
f=x(1)^2+x(2)^2+8;
%把约束条件写成标准形式
g=f-M*min(x(1),0)-M*min(x(2),0)-M*min(x(1)^2-x(2),0)+ M*abs(-x(1)-x(2)^2+2);
(ii) 在Matlab 命令窗口输入
[x,y]=fminunc('test',rand(2,1))
即可求得问题的解。