基于纳什谈判理论的风–光–氢多主体能源系统合作运行方法

文摘   2024-09-22 19:38   河北  

   主要内容   

程序解决的是一个基于合作博弈的风光氢能源交易的问题,首先,考虑主体间的电能交易建立各主体的优化运行模型, 然后基于纳什谈判理论建立风–光–氢多主体合作运行模型, 接着将其等效为联盟效益最大化和电能交易支付谈判两个子问题,运用交替方向乘子法(ADMM)提出上述两个子问题的分布式求解方法,程序注释清楚,参考性强!程序求解需要Matlab及mosek工具箱!

  部分代码   

maxIter=50;%最大迭代次数tolerant=1e-5;%收敛精度iter=1;%迭代次数Ben_Store=[];%历史目标函数toler1=[];%残差1,风电主体toler2=[];%残差2,光伏主体P_pv2h_2=zeros(maxIter+1,24);P_wt2h_2=zeros(maxIter+1,24);value_P_wt2h_2=zeros(maxIter+1,24);value_P_pv2h_2=zeros(maxIter+1,24);%% 迭代while 1    if iter==maxIter  %限制迭代次数       disp('迭代不收敛,参数有误');       break;     end     display(['迭代还未收敛,当前迭代第 ', num2str(iter),' 次']);    if iter==1  %第一次求解比较特殊,要给一致性变量P_wt2h_1、P_pv2h_1赋初值        [P_pv2h_2(2,:),P_wt2h_2(2,:),Obj_dzq(iter)]=Fun_dzq(value_P_pv2h_2(iter,:),value_P_wt2h_2(iter,:),rho_wt,rho_pv,lambda_wt,lambda_pv);        [value_P_pv2h_2(2,:),Obj_gf(iter)]=Fun_gf(P_pv2h_2(2,:),rho_pv,lambda_pv);        [value_P_wt2h_2(2,:),Obj_fd(iter)]=Fun_fd(P_wt2h_2(2,:),rho_wt,lambda_wt);        lambda_wt=lambda_wt+rho_wt*(P_wt2h_2(2,:)-value_P_wt2h_2(2,:));        lambda_pv=lambda_pv+rho_pv*(P_pv2h_2(2,:)-value_P_pv2h_2(2,:));    else        [P_pv2h_2(iter+1,:),P_wt2h_2(iter+1,:),Obj_dzq(iter)]=Fun_dzq(value_P_pv2h_2(iter,:),value_P_wt2h_2(iter,:),rho_wt,rho_pv,lambda_wt,lambda_pv);        [value_P_pv2h_2(iter+1,:),Obj_gf(iter)]=Fun_gf(P_pv2h_2(iter+1,:),rho_pv,lambda_pv);        [value_P_wt2h_2(iter+1,:),Obj_fd(iter)]=Fun_fd(P_wt2h_2(iter+1,:),rho_wt,lambda_wt);        lambda_wt=lambda_wt+rho_wt*(P_wt2h_2(iter+1,:)-value_P_wt2h_2(iter+1,:));        lambda_pv=lambda_pv+rho_pv*(P_pv2h_2(iter+1,:)-value_P_pv2h_2(iter+1,:));    end    %保存历史数据    Ben_Store=[Ben_Store,[Obj_dzq(iter);Obj_gf(iter);Obj_fd(iter)]];    %残差计算,公式(36)应该修改一下,是向量的二范数再平方    toler1=[toler1,norm(P_wt2h_2(iter+1,:)-value_P_wt2h_2(iter+1,:))^2];%保存残差1     toler2=[toler2,norm(P_pv2h_2(iter+1,:)-value_P_pv2h_2(iter+1,:))^2];%保存残差2                    %判断收敛条件    if toler1(iter)<=tolerant && toler2(iter)<=tolerant       display(['迭代收敛,在第 ', num2str(iter),' 次收敛']);       break;     end    iter=iter+1;end%% 画图figure(1)plot(-Ben_Store(1,:),'b-o','LineWidth',1.5);xlabel('迭代次数');ylabel('成本/元');title('电制氢主体分布式迭代情况');;figure(2)plot(-Ben_Store(2,:),'r-o','LineWidth',1.5);xlabel('迭代次数');ylabel('成本/元');title('光伏主体分布式迭代情况');;figure(3)plot(-Ben_Store(3,:),'k-o','LineWidth',1.5);xlabel('迭代次数');ylabel('成本/元');title('风力主体分布式迭代情况');;%Party=-Ben_Store(1,:)-Ben_Store(2,:)-Ben_Store(3,:);figure(4)plot(Party,'k-o','LineWidth',1.5);xlabel('迭代次数');ylabel('成本/元');title('风光联盟总效益值');

  结果一览   

  “阅读原文”获取程序源码   



电力程序
打造电力专业最新原创程序集散地,免费分享基础编程资料,在这里,带着希望而来,带着知识而归~
 最新文章