以下为《罚函数罚与乘子法教案》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
罚函数法
罚函数法是能够处理一般的约束优化问题:的一类方法。其基本思想是将约束优化问题卑微无约束问题来求解。罚函数是由目标函数和约束函数的某种组合得到的函数,对于等式约束的优化问题,可以定义如下的罚函数:
将约束优化问题转化为无约束优化问题;对于不等式约束的优化问题
可以定义如下的罚函数:
对于同时存在等式约束和不等式约束的优化问题,可以去上面两个罚函数的组合。当然罚函数还有其他的取法,但是构造罚函数的思想都是一样的,即使得在可行点罚函数等于原来的目标函数值,在不可行点罚函数等于一个很大的数。
外点罚函数法
1.算法原理
外点罚函数法是通过一系列罚因子,求罚函数的极小值来逼近原约束问题的最有点。之所以称为外点罚函数法,是因为它是从可行域外部向约束边界逐步靠拢的。
2,。算法步骤
用外点罚函数法求解线性约束问题的算法过程如下:
1,给定初始点,罚参数列及精度,置;
2,构造罚函数;
3,用某种无约束非线性规划,以为初始点求解;
4,设最优解为,若满足某种终止条件,则停止迭代输出,否则令,转2;
罚参数列的选法:通常先选定一个初始常数和一个比例系数,则其余的可表示为。终止条件可采用,其中。
3 算法的MATLAB实现
function [x,minf] = minPF(f,x0,A,b,c1,p,var,eps)
% 目标函数:f;
% 初始点: x0;
% 约束矩阵: A;
% 约束右端向量:b;
% 罚参数的初始常数: c1;
% 罚参数的比例系数: p;
% 自变量向量 Var;
% 精度: eps;
% 目标函数取最小值时自变量值: x;
% 目标函数的最小值:minf;
format long;
if nargin == 7
eps = 1.0e-4;
end
k = 0;
FE = 0;
for i=1:length(b)
FE = FE + (var*transpose(A(1,:)) - b(i))^2;
end
x1 = transpose(x0);
x2 = inf;
while 1
M = c1*p;
FF = M*FE;
SumF = f + FF;
[x2,minf] = minNT(SumF,transpose(x1),var);
if norm(x2 - x1)> f = 0.5*t^2+s^2/4;
>> A=[1 1];b=1;
>> c1=0.05;p=2;
>> [x,minf]=minPF(f,[0 0],A,b,c1,p,[t s])
所得结果为:
>> x=0.3333
0.6666
minf = 0.1666
对于一般的等式约束问题也可以用外点罚函数法解决:
function [x,minf] = minGeneralPF(f,x0,h,c1,p,var,eps)
format long;
if nargin == 6
eps = 1.0e-4;
end
k 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 else
v = v - M*transpose(Hx2);
x1 = x2;
end
end
end
minf = Funval(f,var,x);
format short;
4 算法举例
其中取,初始点取为。
>> syms t s;
>> f = t^2+s^2;
>> h=[t+s-1;2*t-s-2];
>> [x, minf]=minFactor(f, [0 0], h, 2,3, 0.7,[t s])
x=0.2000
0.4000
minf= 0.2000
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《罚函数罚与乘子法教案》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。