约束优化算法:拉格朗日乘子法Word下载.docx
- 文档编号:3798537
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:6
- 大小:102.13KB
约束优化算法:拉格朗日乘子法Word下载.docx
《约束优化算法:拉格朗日乘子法Word下载.docx》由会员分享,可在线阅读,更多相关《约束优化算法:拉格朗日乘子法Word下载.docx(6页珍藏版)》请在冰点文库上搜索。
其中或,得最优解
步骤3:
若,则为其近似最优解,停;
否则,令,转步骤2.
2.拉格朗日乘子法
(1)算法:
(约数为等式的情况引入)
效用函数为
判断函数为
当时迭代停止。
选定初始点,初始拉格朗日乘子向量,初始罚因子及其放大系数,控制误差与常数,令。
以为初始点,求解无约束问题:
得到无约束问题最优解
步骤3:
当时,为所求的最优解,停;
否则转步骤4.
步骤4:
当时,转步骤5;
否则令,转步骤5.
步骤5:
令,转步骤1。
(2)算法(一般约束形式的松弛变量法和指数形式法)
松弛变量法:
乘子的修正公式为:
判断函数为:
3.乘子法MATLAB程序及其作用
3.1函数
3.1.1程序
(1):
乘子法效用函数程序
函数功能:
将约束优化问题,根据效用函数方法,将其转变成无约束问题。
functionf=AL_obj(x)
%拉格朗日增广函数
%N_equ等式约束个数
%N_inequ不等式约束个数
globalr_alpenaN_equN_inequ;
%全局变量
h_equ=0;
h_inequ=0;
[h,g]=constrains(x);
%等式约束部分
fori=1:
N_equ
h_equ=h_equ+h(i)*r_al(i)+(pena/2)*h(i).^2;
end
%不等式约束部分
N_inequ
h_inequ=h_inequ+(0.5/pena)*(max(0,(r_al(i)+pena*g(i))).^2-r_al(i).^2);
%拉格朗日增广函数值
f=obj(x)+h_equ+h_inequ;
3.1.2程序
(2):
判断函数
函数功能:
判断是否符合约束条件
%%thecomparefunctionisthestopcondition
functionf=compare(x)
%等式部分
h_equ=h_equ+h(i).^2;
%不等式部分
h_inequ=h_inequ+(max(-g(i),r_al(i+N_equ)/pena)).^2;
f=sqrt(h_equ+h_inequ);
3.1.3程序(3)AL算法主程序
对无约束的效用函数利用拟牛顿算法求解其最优解,更新乘子。
function[X,FVAL]=AL_main(x_al,r_al,N_equ,N_inequ)
%本程序为拉格朗日乘子算法示例算法
%函数输入:
%x_al:
初始迭代点
%r_al:
初始拉格朗日乘子
%N-equ:
等式约束个数
%N_inequ:
不等式约束个数
%函数输出
%X:
最优函数点
%FVAL:
最优函数值
%============================程序开始================================
%参数(全局变量)
pena=10;
%惩罚系数
c_scale=2;
%乘法系数乘数
cta=0.5;
%下降标准系数
e_al=0.005;
%误差控制范围
max_itera=25;
out_itera=1;
%迭代次数
%===========================算法迭代开始=============================
whileout_itera<
max_itera
x_al0=x_al;
r_al0=r_al;
%判断函数
compareFlag=compare(x_al0);
%无约束的拟牛顿法BFGS
[X,FVAL]=fminunc(@AL_obj,x_al0);
x_al=X;
%得到新迭代点
%判断停止条件
ifcompare(x_al)<
e_al
disp('
wegettheoptpoint'
);
break
end
%c判断函数下降度
cta*compareFlag
pena=pena;
%可以根据需要修改惩罚系数变量
else
pena=min(1000,c_scale*pena);
%%乘法系数最大1000
pena=2*pena'
%%更新拉格朗日乘子
[h,g]=constrains(x_al);
fori=1:
%%等式约束部分
r_al(i)=r_al(i)+pena*h(i);
%%不等式约束部分
r_al(i+N_equ)=max(0,(r_al(i+N_equ)+pena*g(i)));
out_itera=out_itera+1;
%+++++++++++++++++++++++++++迭代结束+++++++++++++++++++++++++++++++++
disp('
!
theiterationover!
'
thevalueoftheobjfunction'
obj(x_al)
thevalueofconstrains'
compare(x_al)
theoptpoint'
X=x_al;
FVAL=obj(X);
3.1.4乘子法函数使用方法
(1)定义目标函数及约束条件
目标函数文件
约束函数文件
(2)函数调用
x_al=[1,1,1];
%初始迭代点
r_al=[1,1];
%初始拉格朗日乘子
N_equ=1;
%等式约束个数一个
N_inequ=1;
%不等式约束个数一个
[X,FVAL]=AL_main(x_al,r_al,N_equ,N_inequ)
计算结果:
wegettheoptpoint
thevalueoftheobjfunction
ans=
-3.9871e+031
thevalueofconstrains
0
theoptpoint
X=
1.0e+015*
3.77233.39853.7723
FVAL=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 约束 优化 算法 拉格朗日乘子法