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

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

主要内容  

该模型参考《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.程序运行结果

下载链接

相关文章
鲁棒优化入门(二)——基于matlab+yalmip求解鲁棒优化问题
鲁棒优化的含义就是在最恶劣的情况下(不确定变量的取值使目标函数最大),求出满足约束条件,并且能使目标函数最优的决策变量。 yalmip工具箱可以用来求解鲁棒优化问题,但还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。本文介绍了利用yalmip求鲁棒优化问题的一般方法。......
|
机器学习/深度学习 算法 调度
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
【智能优化算法-鲸鱼算法】基于鲸鱼算法求解多目标优化问题附matlab代码(NSWOA)
|
新能源 调度
日前日内多阶段多时间尺度源荷储协调调度(matlab代码)
日前日内多阶段多时间尺度源荷储协调调度(matlab代码)
|
算法 调度
电网两阶段鲁棒优化调度模型(含matlab程序)
电网两阶段鲁棒优化调度模型(含matlab程序)
|
8月前
|
供应链 算法 调度
【双层模型】考虑供需双侧的综合能源双层优化模型
该程序构建了一个综合能源系统的优化调度双层模型,采用差分进化算法和规划算法分别求解上下层问题。模型涵盖了燃气轮机、锅炉、风电、光伏及储能设备的协同运行,并考虑了供应商与用户的利益平衡。通过满足设备出力、储能、负荷平衡等约束条件,实现了系统经济性和性能的优化。程序基于Matlab+Cplex编写,注释详尽且附带文档说明,便于学习研究。
|
机器学习/深度学习 数据采集 数据挖掘
【第十届“泰迪杯”数据挖掘挑战赛】B题:电力系统负荷预测分析 ARIMA、AutoARIMA、LSTM、Prophet、多元Prophet 实现
详细介绍了在第十届“泰迪杯”数据挖掘挑战赛B题中对电力系统负荷进行预测分析的方法,包括数据预处理、特征工程、平稳性检验、数据转换以及使用ARIMA、AutoARIMA、LSTM、Prophet和多元Prophet模型进行建模和预测,并提供了完整代码的下载链接。
490 0
【免费资料】IEEE33节点系统参数及拓扑图visio
初学者入门配电网可参考经典的IEEE 33节点系统,此系统在文献中广泛应用。资源包括节点和支路参数的Excel表格及Visio的网络拓扑图,可免费下载。配电网以闭环设计增强灵活性和可靠性,故障恢复涉及网络拓扑约束。提供的MATLAB相关链接探讨了孤岛、重构及故障恢复策略。
|
Ubuntu Python
全网最简约的Vscode配置Anaconda环境(百分百成功)
全网最简约的Vscode配置Anaconda环境(百分百成功)
27575 0
全网最简约的Vscode配置Anaconda环境(百分百成功)
|
存储 算法 调度
Matlab+Yalmip两阶段鲁棒优化通用编程指南
主要包含8大内容: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题。 ⑤.使用对偶变换求解两阶段鲁棒优化的子问题。 ⑥.采用Yalmip工具箱的内置函数,将线性约束写成紧凑矩阵形式的方法。 ⑦.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的KKT条件。 ⑧.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的对偶问题。
|
供应链 Python
Gurobi安装和使用
Gurobi安装和使用
1531 0