目录
在电力系统优化过程中,风光等分布式能源出力和负荷的不确定性(即源荷不确定性)形成了电力系统方向的研究热点,每个研究人员都试图通过自己的方法将研究推进的更深入一些,在理论研究的深层次上,离不开鲁棒优化,包括两阶段鲁棒优化、分布鲁棒优化算法等,鲁棒优化的基础知识是拉格朗日对偶和KKT条件,给大家推荐个课程——凌青老师的《凸优化》,该课程系统性讲解了凸优化的内容,课时很长,有时间的同学跟着学习一遍一定受益匪浅,本次结合公众号菜鸟的能源优化之路文章《拉格朗日乘子法与KKT条件》以及编程心得,希望能让大家能够快速掌握该部分内容。
3.我们在模型求解过程中都希望是强对偶,那么如何确定是否是强对偶呢?
具体仿射约束在凌青的课程里有详细的讲解,由于理论用到的不多,在此不再赘述,这个理论厘清了模型中的一些问题,我们电力专业研究中所遇到的大部分模型都满足强对偶条件,线性规划和二次规划都是强对偶,唯一需要重视的是01变量的问题,含01变量的问题不满足强对偶条件,需要通过其他理论知识进行转化,如通过多阶段优化将01变量放在某个前置阶段进行分析,很多文章都是采用这种处理方式, 很多同学有疑问两阶段鲁棒优化中不确定集一般都是含有01变量的,会不会影响问题的强对偶性质,这个问题留给大家思考。
在文献《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条件和强对偶转化方式进行对比,进一步研究两种方法异同和各自优势。