该文研究了同一配电网下的多个综合能源微网 (integrated energy microgrids,IEM)的协同管理问题,旨在通 过配电网运营商(distribution system operator,DSO)制定电能 价格以协调 IEM 联盟的机组调度、需求响应和成员间的点 对点(peer-to-peer,P2P)电能交易。首先,构建了 DSO 与 IEM 联盟能源交易框架,分析了 DSO 与 IEM 联盟的博弈关系。 其次,将主从博弈与合作博弈相结合,建立了 DSO 与 IEM 联盟混合博弈优化模型,其中 DSO 为领导者,以最大化自 身效益为目标,通过制定电能价格引导 IEM 联盟运行优化; IEM 联盟为跟随者,以最大化自身效益为目标,通过合作 对 DSO 的决策进行响应。基于纳什谈判理论,将 IEM 模型 等效为联盟效益最大化和合作收益分配 2 个子问题,以保证 IEM 联盟的合作收益能在联盟成员之间公平分配。最后,利 用二分法分布式优化算法结合交替方向乘子法(alternating direction multiplier method,ADMM)求解所构建的模型。结 果表明,该文提出的混合博弈模型有效协调了 IEM 联盟的 运行优化,并实现了 IEM 联盟成员合作收益的公平分配。
部分代码:
%% 主从博弈过程
 F = 0.5;   % 缩放因子
 CR = 0.9;  % 交叉因子
 %参数设置
 groupSize =40;        %个体数目(Number of individuals)
 groupDimension=48;  %染色体长度
 MAXGEN =30;      %最大遗传代数(Maximum number of generations)
 v=zeros(groupSize,groupDimension);    % 变异种群
 u=zeros(groupSize,groupDimension);    % 交叉种群
 Unew=zeros(groupSize,groupDimension); % 边界处理后的种群
 %初始种群
 population = smartGroupInit(groupSize,groupDimension);% 初始化群体
 gen=0;                                         %种群世代计数器
 fitness=-10000; %初始适应度
 % fitness=-10000*ones(1,MAXGEN);%上层目标函数
 user=1000000;%用户成本
 while gen<MAXGEN
    gen=gen+1 
   if gen==1
 %计算目标函数值   
 [P_IL,P_IL_2,P_IL_3,P_batc,P_batc_2,P_batc_3,P_batc_0,P_batc_01,P_batc_02,P_batc_03,P_batd_01,P_batd_02,P_batd_03,P_batd,P_batd_2,P_batd_3,P_batd_0,P_MT,P_MT_2,P_MT_3,Obj_User1,Obj_User2,Obj_User3,Obj123,P_user12LA,P_LA2user1,P_user22LA,P_LA2user2,P_user32LA,P_LA2user3,value_P_user12users,value_P_user22users,value_P_user32users] = computeUserObj(population,P_PV,P_WT,P_BUILD,P_PV_2,P_WT_2,P_BUILD_2,P_PV_3,P_WT_3,P_BUILD_3); 
 [Pri_e_1,Pri_e_2,Pri_e_3,Pri_e_C01,Pri_e_C02,Pri_e_C03,Pri_e_D01,Pri_e_D02,Pri_e_D03,Objs1,Objs2,Objs3,Objs4,Objs]=computeUserObjs(population,Obj_User1,Obj_User2,Obj_User3,Obj123,value_P_user12users,value_P_user22users,value_P_user32users,P_batc_0,P_batd_0,P_batc_01,P_batc_02,P_batc_03,P_batd_01,P_batd_02,P_batd_03);
   else
 [P_IL,P_IL_2,P_IL_3,P_batc,P_batc_2,P_batc_3,P_batc_0,P_batc_01,P_batc_02,P_batc_03,P_batd_01,P_batd_02,P_batd_03,P_batd,P_batd_2,P_batd_3,P_batd_0,P_MT,P_MT_2,P_MT_3,Obj_User1,Obj_User2,Obj_User3,Obj123,P_user12LA,P_LA2user1,P_user22LA,P_LA2user2,P_user32LA,P_LA2user3,value_P_user12users,value_P_user22users,value_P_user32users] = computeUserObj(best,P_PV,P_WT,P_BUILD,P_PV_2,P_WT_2,P_BUILD_2,P_PV_3,P_WT_3,P_BUILD_3); 
 [Pri_e_1,Pri_e_2,Pri_e_3,Pri_e_C01,Pri_e_C02,Pri_e_C03,Pri_e_D01,Pri_e_D02,Pri_e_D03,Objs1,Objs2,Objs3,Objs4,Objs]=computeUserObjs(best,Obj_User1,Obj_User2,Obj_User3,Obj123,value_P_user12users,value_P_user22users,value_P_user32users,P_batc_0,P_batd_0,P_batc_01,P_batc_02,P_batc_03,P_batd_01,P_batd_02,P_batd_03);  
   end
 %变异操作
    v=mutate(population,F,MAXGEN,gen); %针对整个种群的变异
 %交叉操作
    u=crossover(population,v,CR);%40*24
 %边界处理
    Unew = boundaryprocess(u,pe_grid_S,pe_grid_B);
 % 选择操作 (计算新的适应度)Unew,population都是40*24
 [Newpopulation,fitbest,best,P_LA] =select(Unew,population,P_user12LA,P_user22LA,P_user32LA,P_LA2user1,P_LA2user2,P_LA2user3,pe_grid_S,pe_grid_B);
 trace(gen,1)=gen; %赋值世代数 
  population=Newpopulation;
     if fitness<=fitbest
     fitness = fitbest;  
     trace(gen,2)=fitbest;
     trace(gen,4)=Objs;
     trace(gen,5)=Objs1;
     trace(gen,6)=Objs2;
     trace(gen,7)=Objs3;
     remainbest=best;    
     else
     trace(gen,2)=fitness;
     trace(gen,4)=trace(gen-1,4);
     trace(gen,5)=trace(gen-1,5);
     trace(gen,6)=trace(gen-1,6);
     trace(gen,7)=trace(gen-1,7);
     end
     trace(gen,3)=Objs4; %共享储能商的成本
 end














