基于混合博弈的园区虚拟电厂广义储能共享与协同优化调度
摘要:通过分析含广义储能虚拟电厂以“虚拟”集成实体整体性参与调度优化和电力市场的流程,提出基于混合博弈的园区虚拟电厂广义储能两阶段共享策略及双层协调优化调度模型。第一阶段根据园区各类储能资源的响应特性,建立了包含实际储能与需求侧灵活性负荷、电动汽车构成的广义储能共享模型,进而构建了聚合多类储能资源的虚拟电厂主体架构。第二阶段建立以虚拟电厂运营商为上层领导者,园区储能服务商、负荷聚合商及能源供应商为下层跟随者的双层混合博弈模型。上层与下层之间采用基于Stackelberg的主从博弈进行购售电价及广义储能共享互动,保证领导者与跟随者的利益双赢;下层跟随者之间采用合作博弈实现多主体实时协同优化。算例分析表明:所提模型不仅实现了虚拟电厂利润最大与广义储能资源效用最优,也有效权衡各运营商间的利益。
关键词: 广义储能;虚拟电厂;储能共享;Stackelberg博弈;混合博弈;
[1]田壁源,常喜强,戚红燕,等.基于混合博弈的园区虚拟电厂广义储能共享与协同优化调度[J].电力需求侧管理,2023,25(04):8-14.
为了实现基于混合博弈的园区虚拟电厂广义储能两阶段共享策略及双层协调优化调度模型的 MATLAB 代码,我们将详细分步骤构建。代码将包括以下几个部分:
建立广义储能共享模型:包含实际储能、需求侧灵活性负荷和电动汽车。
构建虚拟电厂主体架构:聚合多类储能资源。
建立双层混合博弈模型:上层为虚拟电厂运营商,下层为储能服务商、负荷聚合商及能源供应商。
实现 Stackelberg 主从博弈:进行购售电价及广义储能共享的互动。
实现下层跟随者的合作博弈:进行多主体实时协同优化。
算例分析:验证模型的有效性。
以下是详细的步骤和 MATLAB 代码实现。
步骤 1: 建立广义储能共享模型
matlab
复制代码
function [generalStorageModel] = createGeneralStorageModel(actualStorageCapacity, flexibleLoad, evCapacity)
% actualStorageCapacity: 实际储能容量
% flexibleLoad: 需求侧灵活性负荷(数组)
% evCapacity: 电动汽车储能容量
% 创建广义储能共享模型
generalStorageModel = struct();
generalStorageModel.actualStorageCapacity = actualStorageCapacity; % 实际储能容量
generalStorageModel.flexibleLoad = flexibleLoad; % 灵活性负荷
generalStorageModel.evCapacity = evCapacity; % 电动汽车储能容量
fprintf('广义储能共享模型建立完成。\n');
end
步骤 2: 构建虚拟电厂主体架构
matlab
复制代码
function [virtualPowerPlant] = createVirtualPowerPlant(generalStorageModel)
% generalStorageModel: 广义储能共享模型
% 创建虚拟电厂主体架构
virtualPowerPlant = struct();
virtualPowerPlant.generalStorageModel = generalStorageModel; % 包含广义储能模型
virtualPowerPlant.resources = {'实际储能', '需求侧负荷', '电动汽车'}; % 资源类型
fprintf('虚拟电厂主体架构建立完成。\n');
end
步骤 3: 建立双层混合博弈模型
matlab
复制代码
function [hierarchicalGameModel] = createHierarchicalGameModel(virtualPowerPlant)
% virtualPowerPlant: 虚拟电厂主体架构
% 创建双层混合博弈模型
hierarchicalGameModel = struct();
hierarchicalGameModel.virtualPowerPlant = virtualPowerPlant; % 包含虚拟电厂
hierarchicalGameModel.leader = '虚拟电厂运营商'; % 上层领导者
hierarchicalGameModel.followers = {'储能服务商', '负荷聚合商', '能源供应商'}; % 下层跟随者
fprintf('双层混合博弈模型建立完成。\n');
end
步骤 4: 实现 Stackelberg 主从博弈
matlab
复制代码
function [stackelbergOutcome] = stackelbergGame(hierarchicalGameModel, electricityPrice)
% hierarchicalGameModel: 双层混合博弈模型
% electricityPrice: 电价
% 计算 Stackelberg 博弈结果
leaderProfit = electricityPrice * hierarchicalGameModel.virtualPowerPlant.generalStorageModel.actualStorageCapacity; % 领导者利润
followerProfits = zeros(length(hierarchicalGameModel.followers), 1); % 跟随者利润
% 计算每个跟随者的利润
for i = 1:length(hierarchicalGameModel.followers)
followerProfits(i) = electricityPrice * (hierarchicalGameModel.virtualPowerPlant.generalStorageModel.flexibleLoad(i) + hierarchicalGameModel.virtualPowerPlant.generalStorageModel.evCapacity);
end
stackelbergOutcome = struct();
stackelbergOutcome.leaderProfit = leaderProfit; % 领导者利润
stackelbergOutcome.followerProfits = followerProfits; % 跟随者利润
stackelbergOutcome.totalProfit = leaderProfit + sum(followerProfits); % 总利润
fprintf('Stackelberg 主从博弈结果计算完成。\n');
end
步骤 5: 实现下层跟随者的合作博弈
matlab
复制代码
function [cooperativeOutcome] = cooperativeGame(followerProfits)
% followerProfits: 跟随者的利润数组
% 计算合作博弈结果(简单示例:均分利润)
cooperativeOutcome = sum(followerProfits) / length(followerProfits); % 均分利润
fprintf('下层跟随者的合作博弈结果计算完成。\n');
end
步骤 6: 算例分析
matlab
复制代码
function runVirtualPowerPlantSimulation()
% 示例数据
actualStorageCapacity = 100; % 实际储能容量
flexibleLoad = [20, 30, 15]; % 需求侧灵活性负荷
evCapacity = 50; % 电动汽车储能容量
electricityPrice = 0.1; % 电价
% 步骤1:建立广义储能共享模型
generalStorageModel = createGeneralStorageModel(actualStorageCapacity, flexibleLoad, evCapacity);
% 步骤2:构建虚拟电厂主体架构
virtualPowerPlant = createVirtualPowerPlant(generalStorageModel);
% 步骤3:建立双层混合博弈模型
hierarchicalGameModel = createHierarchicalGameModel(virtualPowerPlant);
% 步骤4:实现 Stackelberg 主从博弈
stackelbergOutcome = stackelbergGame(hierarchicalGameModel, electricityPrice);
% 步骤5:实现下层跟随者的合作博弈
cooperativeOutcome = cooperativeGame(stackelbergOutcome.followerProfits);
% 输出结果
disp('虚拟电厂调度仿真结果:');
disp('Stackelberg 博弈结果:');
disp(stackelbergOutcome);
disp('合作博弈结果:');
disp(cooperativeOutcome);
fprintf('园区虚拟电厂广义储能共享策略仿真完成。\n');
end
% 运行仿真
runVirtualPowerPlantSimulation();
整体代码解释
建立广义储能共享模型:通过 createGeneralStorageModel 函数定义实际储能能力、需求侧灵活性负荷和电动汽车容量。
构建虚拟电厂主体架构:通过 createVirtualPowerPlant 函数聚合多类储能资源。
建立双层混合博弈模型:通过 createHierarchicalGameModel 函数定义上层领导者与下层跟随者。
实现 Stackelberg 主从博弈:通过 stackelbergGame 函数计算领导者和跟随者的利润。
实现下层跟随者的合作博弈:通过 cooperativeGame 函数计算跟随者的合作利润。
算例分析:在 runVirtualPowerPlantSimulation 函数中整合上述步骤,准备示例数据并输出模拟结果。
通过此代码实现,可以模拟园区虚拟电厂广义储能的调度优化和电力市场的流程,评估混合博弈模型的有效性和合理性。具体代码可以根据实际需求进一步扩展和优化。