0
点赞
收藏
分享

微信扫一扫

nginx 导致websocket无法连接的解决办法

云上笔记 1小时前 阅读 1

该文研究了同一配电网下的多个综合能源微网 (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

举报

相关推荐

0 条评论