目录

1 主要内容

2 问题提出

3 对偶推导

4 KKT条件


主要内容

在电力系统优化过程中,风光等分布式能源出力和负荷的不确定性(即源荷不确定性)形成了电力系统方向的研究热点,每个研究人员都试图通过自己的方法将研究推进的更深入一些,在理论研究的深层次上,离不开鲁棒优化,包括两阶段鲁棒优化、分布鲁棒优化算法等,鲁棒优化的基础知识是拉格朗日对偶和KKT条件,给大家推荐个课程——凌青老师的《凸优化》,该课程系统性讲解了凸优化的内容,课时很长,有时间的同学跟着学习一遍一定受益匪浅,本次结合公众号菜鸟的能源优化之路文章《拉格朗日乘子法与KKT条件》以及编程心得,希望能让大家能够快速掌握该部分内容。

问题提出

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

  1. 上述处理有约束的问题采用构建拉格朗日函数的方式,即在原问题后加上拉格朗日乘子/影子价格与约束的乘积,上述问题是等式约束,非等式约束也适用。
  2. 大家不要简单理解为两者是等价关系,该处理方式只是原问题向拉格朗日函数转化的过程,通过后续的对偶及kkt条件才能形成等价关系。

对偶推导

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

  1. 上面通过对拉格朗日函数的进一步处理明确了对偶问题的最优解是原问题最优解的下界。
  2. 这里引出一下强对偶和弱对偶定义。

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

3.我们在模型求解过程中都希望是强对偶,那么如何确定是否是强对偶呢?

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

KKT条件

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

在文献《Solving two-stage robust optimization problems using a column-and-constraint generation method》也有关于KKT条件的表达。

深度学习|拉格朗日对偶及KKT条件推导-LMLPHP

上述是通过KKT条件将原问题转化为对偶问题,因为涉及非线性处理,还需要引入大M法进一步处理。

之前在求解两阶段鲁棒优化过程中采用KKT条件转化对偶问题【CCGKKT】两阶段鲁棒优化编程指引,参考代码如下所示。

子问题SP部分代码:

%设置变量
xs=sdpvar(312,1,'full');%二阶段变量
ts=sdpvar(144,1,'full');
lam=sdpvar(1728,1,'full');
v1=binvar(1728,1,'full');
v2=binvar(456,1,'full');
Z=binvar(48,1,'full');%不确定变量
%%--------------约束条件-------------
PDN1;
mm=100000;
xr=[xs;ts];
br=[Ar,zeros(1,144)]';
Qr=[Q1 P1;
    -Q1 -P1;
    zeros(528,312) -Q2;
    zeros(288,312) -Q3;
    -Q4 zeros(144,144)
    -Q5 zeros(72,144)
    -Q6 zeros(24,144)
    -Q7 zeros(72,144)
    eye(312) zeros(312,144)
    ];
Gr=[G1;-G1;-G2;-G3;-G4;-G5;-G6-T6*Z;-G7;zeros(312,1)];
cons2=[];
%-----------问题约束----------
cons2=[cons2,Qr*xr>=Gr];%公式16
cons2=[cons2,Qr'*lam<=br];%公式17
cons2=[cons2,Qr*xr-Gr<=mm.*(1-v1),lam<=mm.*v1];%公式18 大M
cons2=[cons2,br-Qr'*lam<=mm.*(1-v2),xr<=mm.*v2];%公式19 大M
cons2=[cons2,lam>=0];
%不确定变量约束
T1=[eye(24) eye(24)];
cons2=[cons2,T1*Z<=1];
% cons2=[cons2,sum(Z)<=8];

fsp=br'*xr+Ap*Z+Ccur*sum(Aw);  %原问题目标函数

有兴趣的同学可以将KKT条件和强对偶转化方式进行对比,进一步研究两种方法异同和各自优势。

01-26 03:47