【B题解题思路】2025长三角高校数学建模B题解题思路+可运行代码参考(无偿分享)

注:该内容由“数模加油站”原创,无偿分享,可以领取参考但不要利用该内容倒卖,谢谢!

B   空气源热泵供暖的温度预测

问题1 统计所给不同建筑的室内温度波动规律;绘制室内外温度相关性曲线, 分析热泵能耗与温差的定量关系;分析影响室内温度的影响因素。 

问题 1 分析

本题第一问旨在:揭示室内温度波动规律,定量建立能耗(热泵功率)与温差之间的数学关系。其中“能耗建模”部分是核心任务,需在真实数据基础上完成参数拟合与公式构建,而该建模任务具有如下特性:

  1. 多因素输入(供温、回温、内外温差);
  2. 非线性结构(平方项、绝对值等);
  3. 无法显式解析求解最优系数
  4. 训练数据包含噪声波动与非高斯扰动

传统的最小二乘法在此类问题中存在收敛性差、局部极小值困扰的缺陷。因此,引入粒子群优化算法(PSO),作为一种无需梯度信息、具备全局搜索能力的黑箱优化工具,是解决该问题的合适选择 

解题思路:

1. 建模目标结合:热泵能耗建模为何需要优化算法?

在热泵系统中,功率消耗 P(t) 由水泵输出热量、温差驱动程度、建筑散热损耗等因素共同决定。

我们试图建立如下经验回归模型:

P(t)=a\cdot {​{\left( {​{T}_{\text{sup}}}(t)-{​{T}_{\text{ret}}}(t) \right)}^{2}}+b\cdot \left| {​{T}_{\text{in}}}(t)-{​{T}_{\text{out}}}(t) \right|+c

这个表达式体现以下物理逻辑:

(T_{\text{sup}} - T_{\text{ret}})^2:表示供回水温度差导致的热力输送功率;

|T_{\text{in}} - T_{\text{out}}|:表示建筑围护结构上的热传导压力;

c:基础设备运行损耗或常数扰动。

上述模型结构在变量空间中呈现非线性、非凸结构,且公式中含有平方和绝对值函数,难以通过解析回归求出最优的 a, b, c 参数。

2. PSO解的本质意义:构造优化目标函数

我们把“使模型预测功率最接近实际功率”的目标形式化为最小均方误差(MSE):

\operatorname{Loss}(a,b,c)=\frac{1}{n}\sum\limits_{t=1}^{n}{​{​{\left[ {​{P}_{\text{true }}}(t)-a\cdot \Delta T_{w}^{2}(t)-b\cdot \left| \Delta {​{T}_{e}}(t) \right|-c \right]}^{2}}}

\Delta T_w(t) = T_{\text{sup}}(t) - T_{\text{ret}}(t):水回路供回水温差;

\Delta T_e(t) = T_{\text{in}}(t) - T_{\text{out}}(t):室内外温差;

P_{\text{true}}(t):实际测得的功率;

P_{\text{pred}}(t):模型预测功率。

该函数是 PSO 的“适应度函数”,即每个粒子的适应度由其对应 (a, b, c) 所生成的预测误差来衡量。

3. PSO在本题的应用过程(按热泵供暖任务组织)

1)变量选取与归一化处理

将输入数据集中提取以下字段:

实际供水温度 T_{\text{sup}}(t)

实际回水温度 T_{\text{ret}}(t)

室内测点温度(取多个传感器平均)T_{\text{in}}(t)

环境温度 T_{\text{out}}(t)

实际功率 P(t)

归一化处理这些变量,使搜索过程稳定不受量纲影响。

2)粒子初始化与搜索空间设定

我们为每个粒子分配一个三元组 (a, b, c),搜索空间建议设置为:

a \in [0.1, 10]:反映单位温差对功率的影响;

b \in [0.1, 10]:室外寒冷程度对能耗的直接影响;

c \in [-20, 20]:系统常值扰动(如泵的待机能耗)。

粒子数量设定为 30–50,迭代次数设定为 100–200,平衡全局探索与局部收敛。

3)迭代搜索与参数拟合

粒子群在上述空间中搜索最优参数组合,使损失函数最小。每一轮迭代中:

粒子根据自身历史最优位置与全局最优位置调整速度;

更新参数 (a, b, c);

重新计算预测值与损失,更新最优记录;

最终收敛到一组全局最优拟合参数。

4)模型输出与评估

得到最优参数后,将其代入模型进行回代预测,生成:

拟合曲线 P_{\text{pred}}(t)

P_{\text{true}}(t)的对比图;

计算误差指标(RMSE, MAE, R^2)评估拟合精度。

 Python代码:

import numpy as np
import pandas as pd
from pyswarm import pso

# 加载数据
df = pd.read_excel("Data")

# 提取变量
T_in = df['室内温度'].values
T_out = df['室外温度'].values
Q_in = df['功率'].values  # 假设功率代表供热输入
T_real = T_in[1:]  # 预测目标
T_in = T_in[:-1]
T_out = T_out[:-1]
Q_in = Q_in[:-1]

# 模型函数
def heat_model(x, T_in, T_out, Q_in):
    alpha, beta = x
    return (1 - beta) * T_in + beta * T_out + alpha * Q_in

# 损失函数
def loss(x, T_in, T_out, Q_in, T_real):
    T_pred = heat_model(x, T_in, T_out, Q_in)
    return np.mean((T_pred - T_real)**2)

# 运行PSO优化
lb = [0.001, 0.001]
ub = [1.0, 1.0]
best_params, fval = pso(loss, lb, ub, args=(T_in, T_out, Q_in, T_real))

print("最优参数 α, β:", best_params)

后续都在“数模加油站”......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值