0
点赞
收藏
分享

微信扫一扫

matlab 罚函数法解决非线性规…

    利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题,因而也称这种方法为序列无约束最小化技术,简记为 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))

即可求得问题的解。



举报

相关推荐

0 条评论