【复现】【免费】基于多时间尺度滚动优化的多能源微网双层调度模型

简介: 【复现】【免费】基于多时间尺度滚动优化的多能源微网双层调度模型

主要内容  

该模型参考《Collaborative Autonomous Optimization of Interconnected Multi-Energy Systems with Two-Stage Transactive Control Framework》,主要解决的是一个多能源微网的优化调度问题,首先对于下层多能源微网模型,考虑以其最小化运行成本为目标函数,通过多时间尺度滚动优化处理负荷和可再生能源随机性,并求解其最优调度策略;对于上层模型,考虑运营商以最小化运营成本为目标函数,同时考虑变压器过载等问题。最终构建了一个两阶段优化模型,采用次梯度法和二分法对模型进行优化求解,程序采用matlab编写,模块化编程,注释清晰。

 部分代码  

%次梯度法求解
% 用于日前预测或日内作为对比
global EH1 EH2 EH3 elePrice period couldExport minimumPower
delta_lambda_max = 1e-4;
maxIteration = 3000; %最大迭代次数
iterativeStep = 1;
ee = 0.001;
%%按照不同的输出场景,选择不同的约束
if couldExport == 1
    minimumPower = eleLimit_total(2);
else
    minimumPower = 0;
end
if isDA
    %%获取不同IES的参数值
    EH1.predict(0);
    EH2.predict(0);
    EH3.predict(0);
    priceArray_record(:,1) = elePrice;
    prePrice = elePrice;
    temporal = 1;
    st = 1;
else
    temporal =  24* period;%%确定为24h的算例
    st = time;
end
for pt = st : temporal
    if isDA == 0
        %%获取不同IES的参数值
        EH1.predict(pt);
        EH2.predict(pt);
        EH3.predict(pt);
    end
    number = 1; k = 1;
    lamda_old = -10 * ones(24 * period - pt + 1, 1);
    lamda_new = zeros(24 * period - pt + 1, 1); %取初始值:对预测电价没有偏差
    lamda_record = zeros(24 * period - pt + 1 , maxIteration + 1);
    lamda_record(: , number) = lamda_new;
    max_balance=zeros (1 , maxIteration + 1);
    %如果前后两次价格的偏差太大,则返回第1步
    while number <= 2 || max(abs(balanceDemand)) > 100
        % max(abs(lamda_new - lamda_old)) > ee || %| max(abs(clearDemand_new - clearDemand_old)) > 1e-4 %1e-6, 不能直接取0
        % 后一个条件是因为即使lamda收敛后,供需也不平衡,所以需要取一正一负两个点,来求零点
        % && || 的前一个为否,则后一个就不计算了
        % 要求至少迭代两次(number=1,2)
        
        %             if number > maxIteration
        %                 error('超出最大迭代次数');
        %             end
        if number > 1% number=2时才记录第一次
            clearDemand_old = clearDemand_new;
        end
        
        %%依次根据priceArray, gasPrice1, pt三个输入值计算优化结果以及响应结果
        [x1,f1,~,~,~] = EH1.handlePrice(priceArray, gasPrice1, pt);
        %根据priceArray, gasPrice1, pt三个输入值计算EH1优化结果以及响应结果
        clearDemand_EH1_new = x1(1: 24 * period - pt + 1);
         %根据priceArray, gasPrice1, pt三个输入值计算EH2优化结果以及响应结果
        [x2,f2,~,~,~] = EH2.handlePrice(priceArray, gasPrice1, pt);
         %根据priceArray, gasPrice1, pt三个输入值计算EH2优化结果以及响应结果
        clearDemand_EH2_new = x2(1: 24 * period - pt + 1);
         %根据priceArray, gasPrice1, pt三个输入值计算EH3优化结果以及响应结果
        [x3,f3,~,~,~] = EH3.handlePrice(priceArray, gasPrice1, pt);
        clearDemand_EH3_new = x3(1: 24 * period - pt + 1);
        
        %%根据lamda_new(i)的取值,计算不同情况下的电网侧出清结果(上层)
        clearDemand_grid_new=zeros(24 * period - pt + 1 ,1);
        for i = 1: 24 * period - pt + 1
            if lamda_new(i) == 0


 结果一览  

1.原文结果

2.程序运行结果

下载链接

相关文章
|
5月前
|
算法 调度
【完全复现】基于改进粒子群算法的微电网多目标优化调度
该文档描述了一个使用改进粒子群算法实现的微电网多目标优化调度的Matlab程序。该模型旨在最小化运行成本和环境保护成本,将多目标问题通过权值转换为单目标问题解决。程序中定义了决策变量,如柴油发电机、微型燃气轮机、联络线和储能的输出,并使用全局变量处理电负荷、风力和光伏功率等数据。算法参数包括最大迭代次数和种群大小。代码调用了`PSOFUN`函数来执行优化计算,并展示了优化结果的图表。
|
6月前
|
算法
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
|
6月前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
6月前
|
算法 调度
计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(含matlab代码)
计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(含matlab代码)
|
6月前
|
算法 调度
【问题探讨】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究
【问题探讨】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究
|
算法 搜索推荐 数据挖掘
基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)
基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)
144 0
基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)
|
移动开发 安全 数据挖掘
(文章复现)梯级水光互补系统最大化可消纳电量期望短期优化调度模型matlab代码
参考文献: [1]罗彬,陈永灿,刘昭伟等.梯级水光互补系统最大化可消纳电量期望短期优化调度模型[J].电力系统自动化,2023,47(10):66-75.
|
数据挖掘 调度
【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
112 0
【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
|
供应链
使用鲁棒优化的定价策略进行微电网不平衡管理研究(Matlab代码实现)
使用鲁棒优化的定价策略进行微电网不平衡管理研究(Matlab代码实现)
使用鲁棒优化的定价策略进行微电网不平衡管理研究(Matlab代码实现)
|
调度
计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(Matlab代码实现)
计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(Matlab代码实现)
120 0