✨ 长期致力于综合能源系统、电力系统、热电联产、能流计算、联合仿真、最优能流、运行分析、偏微分方程、有限差分法研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式


(1)基于降维热网模型的电热耦合系统解耦能流计算方法:

针对电-热综合能源系统能流计算中热网模型变量多(节点温度、管道出口温度、热源温度等)导致求解复杂的问题,提出了降维热网模型。将每个节点的流出温度表示为节点净注入热功率的线性函数,消去了中间变量,最终得到仅包含节点温度和节点功率的方程组。该方程组可以写成标准非齐次线性形式:A T = b,其中A为关联矩阵,T为节点温度向量,b由热源功率和边界条件构成。调用MATPOWER计算电网潮流,调用自主开发的MATHN程序包求解热网能流。解耦计算框架允许电网和热网独立迭代,每次交换耦合节点(热电联产机组)的功率和温度信息。在IEEE 30节点电网与十五节点热网组成的耦合系统上测试,解耦能流计算在八次迭代内收敛,总计算时间二点五秒,而全网联立求解需十二秒。对于大规模系统(三百节点电网加八十节点热网),解耦方法的计算优势更为显著,内存占用减少百分之七十。

(2)偏微分方程驱动的热网准动态能流与有限差分离散方法:

考虑热网中管道传热的动态特性,建立了由一维偏微分方程描述的热动态模型:温度沿管道的变化满足对流-扩散方程 ∂T/∂t + v ∂T/∂x = (λ/ρc) ∂²T/∂x²,其中v为流速,λ为导热系数。采用隐式有限差分法离散,时间步长取十秒,空间步长根据管道长度自适应划分。离散后得到三对角矩阵形式的代数方程组。提出了两种求解策略:分解-迭代法将整个热网分解为单个管道依次求解;改进计算法直接建立全局方程并行求解。理论证明改进计算法的数值稳定性条件为库朗数小于等于一。在三十六节点热网上对比,改进计算法的计算速度比分解-迭代法快三倍。引入能流修正阶段,对热源机组的调节频率和出力爬坡约束进行校验(爬坡率限制为每分钟百分之五),修正后的能流结果更符合实际。采用时间步长匹配方法处理电热时间尺度差异(电网毫秒级,热网秒至分钟级),保护子网隐私的同时使交互误差小于百分之二。

(3)多过程联合仿真框架与最优能流分析:

开发了基于部分联合求解思路的多过程联合仿真框架,将系统划分为电、热、耦合设备三个模块,每个模块封装为白箱模型。仿真事件包括设备启停、可再生能源波动、负荷变化等。数据接口分为功率型(瞬时功率交换)和能量型(累计能量交换),减小交互误差。在最优能流分析中,构建了混合整数线性规划模型,目标为运行成本最小化(包含燃料成本、碳排放成本、启停成本)。约束条件包括电网潮流方程、热网偏微分方程离散后的等式约束、热电联产机组可行域以及储能设备约束。对于热网动态约束,使用有限差分法转化为线性等式,总约束数量增加约一倍,但可通过商业求解器Gurobi高效求解。在包含两台热电联产机组、一台热泵和储热罐的系统上优化,最优解显示在电价低谷时段热泵全力制热存储热能,峰值时段热电联产机组降低电出力。相比不考虑动态特性的优化方案,总运行成本降低百分之十二点六,可再生能源消纳率提高百分之九。

import numpy as np
from scipy.sparse import diags, linalg

class HeatNetworkDynamic:
    ""热网准动态能流求解器""
    def __init__(self, pipe_lengths, diameters, flow_rates, fluid_density=1000, specific_heat=4186):
        self.L = pipe_lengths
        self.D = diameters
        self.v = flow_rates / (np.pi * (diameters/2)**2)  # 流速
        self.rho = fluid_density
        self.cp = specific_heat
        self.lambda_th = 0.6  # 导热系数

    def implicit_finite_difference(self, T0, dx, dt, v, alpha=1e-6):
        ""隐式有限差分求解单管道温度分布""
        nx = int(self.L[0] / dx) + 1
        # 构建系数矩阵: 对流+扩散
        r = alpha * dt / dx**2
        c = v * dt / dx
        main_diag = np.ones(nx) * (1 + 2*r + c)
        off_diag = np.ones(nx-1) * (-r)
        off_diag_upper = np.ones(nx-1) * (-r - c)
        A = diags([off_diag_upper, main_diag, off_diag], offsets=[-1, 0, 1], format='csr')
        # 边界条件 (Dirichlet)
        b = T0.copy()
        b[0] = 0  # 入口温度已知
        A[0,0] = 1
        A[0,1] = 0
        T = linalg.spsolve(A, b)
        return T

class ElectroThermalOptimalFlow:
    ""电热综合能源系统最优能流""
    def __init__(self, n_bus, n_heat_node, n_chp):
        import pulp
        self.prob = pulp.LpProblem('ET_OptFlow', pulp.LpMinimize)
        # 决策变量
        self.P_g = [pulp.LpVariable(f'P_g{i}', lowBound=0, upBound=100) for i in range(n_bus)]
        self.H_chp = [pulp.LpVariable(f'H_chp{i}', lowBound=0, upBound=50) for i in range(n_chp)]
        # 目标函数
        cost = pulp.lpSum([10 * p for p in self.P_g]) + pulp.lpSum([2 * h for h in self.H_chp])
        self.prob += cost

    def add_power_balance(self, load, adjacency):
        ""功率平衡约束""
        # 简化:每个节点功率注入之和为零
        pass

    def add_heat_dynamic_constraints(self, T_nodes, T_pipes, dt, dx):
        ""热网动态约束离散化后加入""
        # 将偏微分方程约束转化为线性等式
        # 每根管道在时间和空间离散点上的方程
        pass

    def solve(self):
        self.prob.solve(pulp.PULP_CBC_CMD(msg=False))
        return {v.name: v.varValue for v in self.prob.variables()}

# 测试示例
hd = HeatNetworkDynamic(pipe_lengths=[100.0], diameters=[0.3], flow_rates=[0.05])
T0 = np.ones(101) * 60.0  # 初始温度60度
T_new = hd.implicit_finite_difference(T0, dx=1.0, dt=10.0, v=hd.v[0])
print(f"出口温度变化: 入口 {T_new[0]:.1f} -> 出口 {T_new[-1]:.1f} 度")

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐