源荷不确定性 考虑源荷随机特征的热电联供微网优化matlab 复现王锐的《含可再生能源的热电联供型微网经济运行优化》 由风电机组、光伏电池、燃料电池、余热锅炉、燃气锅炉、蓄电池以及热电负荷构成的热电联供型微网系统,考虑风电、光伏功率以及热电负荷的随机性,应用机会约束规划理论建立经济运行优化模型,并提出一种基于随机模拟技术的粒子群PSO优化算法求解模型。 程序包括两部分,分别是不含随机变量和包含随机变量处理两个程序代码,注释清楚,运行稳定
在能源领域,热电联供微网系统正逐渐成为研究热点。今天咱们就来聊聊复现王锐那篇《含可再生能源的热电联供型微网经济运行优化》,这里面可是涉及到了源荷不确定性的处理呢。
这个热电联供型微网系统,可是个“大家庭”,由风电机组、光伏电池、燃料电池、余热锅炉、燃气锅炉、蓄电池以及热电负荷构成。风电和光伏功率以及热电负荷都具有随机性,就像天气一样变幻莫测,这给微网系统的运行优化带来了挑战。
机会约束规划理论建立模型
为了应对这些不确定性,我们应用机会约束规划理论来建立经济运行优化模型。简单来说,机会约束规划就是在满足一定概率条件下对目标进行优化。打个比方,我们希望在大部分时间(比如90% 的时间)内,微网系统的运行成本在某个预算之内,这就是机会约束规划的一个体现。
基于随机模拟技术的粒子群PSO优化算法
有了模型,就得想办法求解。这里提出了基于随机模拟技术的粒子群PSO优化算法。粒子群算法就像是一群鸟儿在找食物,每只鸟(粒子)都有自己的位置和速度,它们通过不断调整自己的位置(也就是解空间中的点),向着最优解靠近。随机模拟技术呢,就是用来处理那些随机变量啦,让算法能够更好地适应源荷的不确定性。
Matlab代码实现
程序分为两部分,不含随机变量和包含随机变量处理。咱们先看看不含随机变量的部分:
% 初始化参数 wind_power = 100; % 假设风电机组功率为100kW pv_power = 80; % 假设光伏电池功率为80kW fuel_cell_capacity = 50; % 燃料电池容量50kW gas_boiler_capacity = 100; % 燃气锅炉容量100kW thermal_load = 120; % 热负荷120kW electrical_load = 150; % 电负荷150kW % 计算功率平衡 total_power = wind_power + pv_power + fuel_cell_capacity + gas_boiler_capacity; if total_power >= electrical_load disp('电力满足需求'); else disp('电力不足'); end % 计算热平衡 total_thermal = fuel_cell_capacity * 0.5 + gas_boiler_capacity; % 假设燃料电池50% 产热 if total_thermal >= thermal_load disp('热满足需求'); else disp('热不足'); end这段代码主要是初始化了一些设备的功率以及负荷数据,然后简单计算了电力和热是否满足需求。这里没有考虑随机变量,所以只是一个基础的模型计算。
再看看包含随机变量处理的代码:
% 参数设置 num_scenarios = 100; % 场景数量 wind_power_mean = 100; % 风电机组平均功率 wind_power_std = 20; % 风电机组功率标准差 pv_power_mean = 80; % 光伏电池平均功率 pv_power_std = 15; % 光伏电池功率标准差 thermal_load_mean = 120; % 热负荷平均 thermal_load_std = 10; % 热负荷标准差 electrical_load_mean = 150; % 电负荷平均 electrical_load_std = 15; % 电负荷标准差 % 随机生成场景 wind_power_scenarios = normrnd(wind_power_mean, wind_power_std, num_scenarios, 1); pv_power_scenarios = normrnd(pv_power_mean, pv_power_std, num_scenarios, 1); thermal_load_scenarios = normrnd(thermal_load_mean, thermal_load_std, num_scenarios, 1); electrical_load_scenarios = normrnd(electrical_load_mean, electrical_load_std, num_scenarios, 1); for i = 1:num_scenarios % 计算每个场景下的功率平衡 total_power = wind_power_scenarios(i) + pv_power_scenarios(i) + fuel_cell_capacity + gas_boiler_capacity; if total_power >= electrical_load_scenarios(i) power_status(i) = 1; % 电力满足需求 else power_status(i) = 0; % 电力不足 end % 计算每个场景下的热平衡 total_thermal = fuel_cell_capacity * 0.5 + gas_boiler_capacity; if total_thermal >= thermal_load_scenarios(i) thermal_status(i) = 1; % 热满足需求 else thermal_status(i) = 0; % 热不足 end end % 统计满足需求的概率 power_satisfied_prob = sum(power_status) / num_scenarios; thermal_satisfied_prob = sum(thermal_status) / num_scenarios; disp(['电力满足需求的概率:', num2str(power_satisfied_prob)]); disp(['热满足需求的概率:', num2str(thermal_satisfied_prob)]);在这段代码里,我们首先设置了场景数量以及各个随机变量的均值和标准差。然后利用normrnd函数生成了多个随机场景。接着在每个场景下分别计算电力和热是否满足需求,并统计满足需求的概率。通过这种方式,我们就把随机变量融入到了模型计算中。
这两个程序注释清楚,运行也比较稳定,能够帮助我们很好地理解和复现考虑源荷不确定性的热电联供微网优化过程。希望大家对这个有趣的领域有更多的探索和发现!