目录
1 主要内容
在电力系统优化过程中,风光等分布式能源出力和负荷的不确定性(即源荷不确定性)形成了电力系统方向的研究热点,每个研究人员都试图通过自己的方法将研究推进的更深入一些,在理论研究的深层次上,离不开鲁棒优化,包括两阶段鲁棒优化、分布鲁棒优化算法等,鲁棒优化的基础知识是拉格朗日对偶和KKT条件,给大家推荐个课程——凌青老师的《凸优化》,该课程系统性讲解了凸优化的内容,课时很长,有时间的同学跟着学习一遍一定受益匪浅,本次分享拉格朗日乘子法与KKT条件推导过程以及编程心得,希望能让大家能够快速掌握该部分内容。
2 问题提出
- 上述处理有约束的问题采用构建拉格朗日函数的方式,即在原问题后加上拉格朗日乘子/影子价格与约束的乘积,上述问题是等式约束,非等式约束也适用。
- 大家不要简单理解为两者是等价关系,该处理方式只是原问题向拉格朗日函数转化的过程,通过后续的对偶及kkt条件才能形成等价关系。
3 对偶推导
- 上面通过对拉格朗日函数的进一步处理明确了对偶问题的最优解是原问题最优解的下界。
- 这里引出一下强对偶和弱对偶定义。
3.我们在模型求解过程中都希望是强对偶,那么如何确定是否是强对偶呢?
具体仿射约束在凌青的课程里有详细的讲解,由于理论用到的不多,在此不再赘述,这个理论厘清了模型中的一些问题,我们电力专业研究中所遇到的大部分模型都满足强对偶条件,线性规划和二次规划都是强对偶,唯一需要重视的是01变量的问题,含01变量的问题不满足强对偶条件,需要通过其他理论知识进行转化,如通过多阶段优化将01变量放在某个前置阶段进行分析,很多文章都是采用这种处理方式, 很多同学有疑问两阶段鲁棒优化中不确定集一般都是含有01变量的,会不会影响问题的强对偶性质,这个问题留给大家思考。
4 KKT条件
在文献《Solving two-stage robust optimization problems using a column-and-constraint generation method》也有关于KKT条件的表达。
上述是通过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条件和强对偶转化方式进行对比,进一步研究两种方法异同和各自优势。