85文章解读与程序——SCI《基于多时间尺度滚动优化的多能源微网双层调度模型》已提供下载资源

👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆下载资源链接👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆

《《《《《《《《更多资源还请持续关注本专栏》》》》》》》

论文与完整源程序_电网论文源程序的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/liang674027206/category_12531414.html

电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.https://blog.csdn.net/LIANG674027206?type=download

论文可参考《Collaborative Autonomous Optimization of Interconnected Multi-Energy Systems with Two-Stage Transactive Control Framework》

代码主要做的是一个多能源微网的优化调度问题,首先对于下层多能源微网模型,考虑以其最小化运行成本为目标函数,通过多时间尺度滚动优化求解其最优调度策略,对于上层模型,考虑运营商以最小化运营成本为目标函数,同时考虑变压器过载等问题,构建了一个两阶段优化模型,通过互补松弛条件以及KKT条件,对模型进行了化简求解。

部分代码展示:

%%文章复现《Collaborative Autonomous Optimization of Interconnected Multi-Energy 
%%Systems with Two-Stage Transactive Control Framework》
%%全时段的优化问题,与single_temporal比较
%全时段的优化问题,与single_temporal比较
%次梯度法求解
% 用于日前预测或日内作为对比
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 
                clearDemand_grid_new(i) = clearDemand_EH1_new(i) + clearDemand_EH2_new(i) + clearDemand_EH3_new(i) - EH_res_total(pt + i - 1);
                if clearDemand_grid_new(i) > eleLimit_total(1)
                    clearDemand_grid_new(i) = eleLimit_total(1);
                end
                %%按照minimumPower的大小进行计算
                if clearDemand_grid_new(i) < minimumPower
                    clearDemand_grid_new(i) = minimumPower;
                end
            elseif lamda_new(i) > 0
                clearDemand_grid_new(i) = eleLimit_total(1);
            else
                clearDemand_grid_new(i) = minimumPower;
            end
        end
 
         %%根据lamda_new(i)的取值,计算不同情况下的需求侧出清结果(下层)
        clearDemand_new = [-clearDemand_grid_new, clearDemand_EH1_new , clearDemand_EH2_new , clearDemand_EH3_new, - EH_res_total] ;
        phi(number) = f1 + f2 + f3 - lamda_new'* clearDemand_grid_new;
        if  number == 1
            balanceDemand = sum(clearDemand_new, 2) ;%%更新平衡需求电量
            balanceDemand_reocrd(:,1) = balanceDemand;%%更新平衡需求电量
            lamda_record(: , 1) = lamda_new;
            step_record(1) = step;
            price_record(:,1) = priceArray;%%更新平衡价格
            delta_lambda = balanceDemand .* iterativeStep /sqrt(sum(balanceDemand.^2)) ;%%计算新的平衡价格
            step = iterativeStep;
            lamda_old = lamda_new;
            lamda_new = lamda_old +  delta_lambda;%%叠加计算
            number = 2;
        elseif phi(number) - phi(number-1) > -1
            balanceDemand_reocrd(:,number) = balanceDemand;%%更新平衡需求电量
            lamda_record(: , number) = lamda_new;%%更新平衡需求电量
            step_record(number) = step;
            price_record(:,number) = priceArray;
            balanceDemand = sum(clearDemand_new, 2) ;
            delta_lambda = balanceDemand .* iterativeStep /sqrt(sum(balanceDemand.^2)) ;;%%计算新的平衡价格
            step = iterativeStep;
            lamda_old = lamda_new;
            lamda_new = lamda_old +  delta_lambda;
            if  number> 5 && max(step_record(number-5: number))< 1e-3%%按照文中的要求讨论确定优化结果
                break;
            end
            number = number + 1;
            k = k + 1;          
        else
            step = step / 2;
            delta_lambda = balanceDemand .* step /sqrt(sum(balanceDemand.^2)) ;%%更新优化结果
            lamda_new = lamda_old +  delta_lambda;
            k = k + 1;
        end
        %当前价格下的出力
        priceArray(pt : 24* period) = prePrice(pt : 24* period) + lamda_new;
        priceArray(priceArray>maxMarketPrice) =maxMarketPrice;
        priceArray(priceArray<minMarketPrice) =minMarketPrice;
    end
    

效果展示:

85号资源-源程序:论文可在知网下载《基于多时间尺度滚动优化的多能源微网双层调度模型》本人博客有解读资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/LIANG674027206/89205278👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆下载资源链接👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆👆

《《《《《《《《更多资源还请持续关注本专栏》》》》》》》

论文与完整源程序_电网论文源程序的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/liang674027206/category_12531414.html

电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.https://blog.csdn.net/LIANG674027206?type=download

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电网论文源程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值