ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

考虑PMV热舒适度的冷热电多能互补优化调度与MATLAB实现

考虑PMV热舒适度的冷热电多能互补优化调度与MATLAB实现 做综合能源系统优化调度这些年我见过太多代码跑得飞起、图表画得漂亮但实际落地时用户根本不买账的项目。原因很简单绝大多数调度模型只盯着电费和气费的账本把室内温度当成一个可以随便推向约束边界的“软柿子”——温度贴着下限跑运行成本是好看了人在屋里冻得直哆嗦。这个MATLAB项目有意思的地方在于它把PMV预测平均投票这个人体热舒适度指标塞进了冷热电多能互补优化调度的模型里让系统在省钱的同时还要保证人待着舒服这正好踩中了综合能源系统从“设备侧最优”走向“用户侧满意”的大趋势。这篇文章适合正在做综合能源系统优化调度、楼宇能量管理、或者想用MATLAB把热舒适度指标落地成代码的同学参考。我会从PMV模型的工程简化讲起把冷热电联供系统的物理架构和调度模型约束一条条拆开再给出一套基于YALMIP的可行代码方案和参数配置经验。全文不会贴大段完整源码但核心建模思路、关键约束怎么写、求解器怎么配都会讲到位。1. 为什么非要把“体感舒适度”写进调度模型综合能源系统调度本质上是一个数学优化问题给定设备特性、能源价格、负荷曲线求一组设备出力方案让运行成本最低。传统模型里“用户需求”通常被简化成一条固定的电负荷、热负荷、冷负荷曲线系统只需要“按需生产”就行。但实际场景里热负荷和冷负荷恰恰是最具备调节弹性的那部分需求——你设定26℃空调和设定22℃空调耗电量能差出30%。如果调度模型完全不碰温度只被动地满足“设计负荷”等于放弃了最大的省钱空间。反过来如果只为了省钱而把温度往极限推又会出现前面说的“冻得哆嗦”问题。这个矛盾在冷热电联供系统里尤其突出燃气轮机发电会产生大量余热余热既可以供热也可以驱动吸收式制冷机供冷。当电价特别低的时候系统倾向于多买电、用高效电制冷机供冷当气价相对便宜时则更愿意让燃气轮机多发电、余热多供能。这种“换能源品种”的决策会直接改变送到房间里的冷量或热量从而影响室内温度。如果模型里没有舒适度约束优化算法就一定会找出一个把室内温度压到约束边界的解因为那才是成本最低点。PMV的价值就在于它比单纯的温度区间约束更贴近人体的真实感知。同样25℃的室温梅雨季湿度80%、空气静止不动人会感觉闷热难受而湿度40%、有轻微吹风感时反而会觉得凉爽舒适。PMV把这几个因素全部折算成一个从-3到3的标量0代表“中性”最舒适-3代表“很冷”3代表“很热”。工程上通常认为PMV在-0.5到0.5之间90%以上的人体感是满意的。这个项目把PMV放进调度模型等于给系统装了一个“以人为本”的质量监测器。你不再问“室温是不是在18到26℃之间”而是问“这24小时里人是不是始终处于热中性状态”。这显然是一个更高级、也更难实现的优化目标。2. PMV模型的原理与工程化改造2.1 PMV的物理含义和原始公式PMV是丹麦学者Fanger在上世纪八十年代提出的热舒适评价指标后来被ISO 7730标准采纳。它不是一个可以直接测量出来的物理量而是综合了六个参数的函数空气温度ta、平均辐射温度tr、相对湿度RH、空气流速v、人体代谢率M和服装热阻Icl。为了让读者有个直观概念我给出它的基本形式PMV [0.303·exp(-0.036·M) 0.028] · { (M - W) - 3.05e-3·[5733 - 6.99·(M - W) - Pa] - 0.42·[(M - W) - 58.15] - 1.7e-5·M·(5867 - Pa) - 0.0014·M·(34 - ta) - 3.96e-8·fcl·[(tcl 273)⁴ - (tr 273)⁴] - fcl·hc·(tcl - ta) }这式子看一眼就头疼但真正让程序猿崩溃的不是公式长度而是里面藏着两处迭代计算服装表面温度tcl和对流换热系数hc互相耦合必须联立求解。也就是说PMV本身是一个隐函数没法直接以解析表达式的方式写进约束条件。好在工程上有成熟的处理办法。在冷热电联供建筑场景中代谢率M可以近似固定办公室取1.0到1.2 met风速v在空调房间里也基本稳定0.1到0.15 m/s平均辐射温度tr可以近似等于室内空气温度ta。这样PMV就变成了一个只跟室内温度ta、相对湿度RH、服装热阻Icl有关的函数。再进一步如果你在模型中把湿度假设为固定值很多建筑模型都这么做那PMV就退化成室温和服装热阻的单变量函数。2.2 固定参数下的线性化近似我先说结论在舒适区附近PMV与室内温度的关系几乎是一条直线。以冬季工况为例M 1.0 met静坐办公W 0Icl 1.0 clo厚外套加毛衣v 0.1 m/sRH 50%tr ta用完整公式算几个关键点ta22℃时PMV约-0.5ta24℃时PMV接近0ta26℃时PMV约0.5。于是可以拟合出PMV ≈ 0.25 × (ta - 24)这个式子说明在这个特定工况下室温每升高1℃PMV大约上升0.25。夏季工况换薄衣服Icl0.5 clo中性温度会上移类似地可以拟合出PMV ≈ 0.25 × (ta - 26)。不同文献里系数会有一点差异但线性关系的形式是稳定的。有人可能担心这种近似会不会误差太大。说实话在[-0.5, 0.5]这个舒适区间内线性近似的误差一般在0.1以内作为优化约束足够用了。真要追求更高精度可以用MATLAB的cftool工具箱对PMV做个分段线性拟合把室内温度范围分成几段每段用一条直线逼近。这种分段线性函数在YALMIP里可以用二元变量轻松建模求解效率完全不受影响。2.3 舒适区间的取值策略舒适区间取多宽直接决定优化问题的可行域和经济性。取值建议如下区间设置对应PMV范围适用场景备注严格中性[-0.2, 0.2]高性能办公、医院病房模型可行域极小成本显著上升标准舒适[-0.5, 0.5]普通办公楼ISO 7730推荐的90%满意区间推荐默认宽松舒适[-0.8, 0.8]工厂车间、仓储成本控制优先用户容忍度较高季节动态冬季[-0.5, 0]夏季[0, 0.5]节能优先的公共建筑允许冬令略冷、夏令略热节能效果明显我个人的经验是第一版模型务必先取[-0.5, 0.5]跑通确认无解排除逻辑问题后再根据需要放宽或收紧。千万别一上来就用[-0.2, 0.2]否则大概率会得到一个infeasible problem还得回头排查是哪个约束打架。3. 冷热电多能互补系统结构与调度模型构建3.1 系统架构与能量流要建立优化调度模型首先得把系统的能量流画清楚。这里以一个典型的楼宇级冷热电联供系统为例主要设备包括燃气轮机消耗天然气发电同时产出高温余热余热回收装置把燃气轮机排烟余热转换成热水或蒸汽吸收式制冷机利用余热驱动制冷热力系数COP_ac约1.2到1.4电制冷机消耗电力制冷COP_ec约3.5到5.0燃气锅炉补充供热效率约0.9电储能/蓄热/蓄冷装置平移能量供需能量输入有两路从电网购电、从管网购天然气。能量输出有三路供电负荷、供热负荷、供冷负荷。这个系统里最有意思的权衡发生在制冷环节。表面看电制冷机COP高达4以上吸收式制冷机才1.3似乎电制冷完胜。但别忽略电的来源如果电来自燃气轮机假设发电效率η_gt0.35那么“天然气→电→冷”的一次能源效率只有0.35×41.4而余热回收效率约0.45“天然气→余热→冷”的效率是0.45×1.3≈0.585。这么一看余热制冷似乎又很差。关键点在于余热是燃气轮机的“副产品”如果供热负荷不足时不用来制冷就只能白白排掉边际成本是零。所以实际决策依赖热负荷大小、电价气价比值、设备特性等多个因素——这正是优化调度要解决的权衡。3.2 目标函数与决策变量目标是日运行总成本最小主要包括购电费用、购气费用和可能的售电收益min Σ [P_grid(k)·price_grid(k) V_gas(k)·price_gas - P_sell(k)·price_sell(k)]这里k是时段序号取1到24。P_grid是购电功率V_gas是天然气消耗量P_sell是余电上网功率。决策变量包括各时段燃气轮机发电功率P_gt(k)燃气轮机启停状态0/1二进制变量电网购电功率P_grid(k)燃气锅炉供热量Q_gb(k)吸收式制冷机供冷量Q_ac(k)和电制冷机耗电功率P_ec(k)储能的充放功率和状态室内温度T_in(k)供热/供冷功率Q_hvac(k)3.3 约束条件的几个关键块第一块是能量平衡约束。电力平衡要求购电、燃气轮机发电、储能放电之和等于电负荷加上电制冷机耗电、储能充电。热平衡要求余热回收热量、燃气锅炉供热、蓄热放热之和等于热负荷加上蓄热充热。冷平衡类似。这几条约束是任何综合能源调度模型的骨架。第二块是设备运行约束。每个设备都有出力上下限、爬坡速率限制燃气轮机还有最小启停时间约束。储能设备需要额外加上SOC状态更新方程以及周期始末SOC一致的约束否则模型会在一个调度周期里把储能“榨干”算出来的结果第二天根本无法延续。第三块是PMV舒适度约束和建筑热动态方程的耦合这是本项目的核心难点。建筑热动态采用一阶等效热参数模型把房间等效成一个热容C_b加一个热阻R。微分方程形式是C_b × dT_in/dt Q_hvac (T_out - T_in) / R离散化成递推式后变成T_in(k1) a × T_in(k) b × (R × Q_hvac T_out)其中a exp(-Δt/τ)b 1 - aτ R×C_b是建筑时间常数。室内温度T_in再通过PMV线性近似进入舒适度约束-0.5 ≤ 0.25×(T_in - 24) ≤ 0.5冬季工况举例这一串约束把“设备出力→室内温度→人体舒适度”完整串起来了优化算法在决定功率分配时必须同时考虑对室温的连锁影响。3.4 建筑热惯性被低估的“免费储能”我特意把建筑热惯性单独拿出来讲因为它在实际项目中价值非常大但很多代码里根本没有体现。借用上面的递推式做一个实际估算假设100m²的普通办公室综合传热系数UA为80 W/K等效热容C_b取20000 kJ/K约200 kJ/(m²·K)。热阻R 1/80 0.0125 K/W时间常数τ R×C_b 0.0125×20000000 250000秒约69小时。这个数字意味着你把供热功率降下来之后室温不会马上掉而是以十小时为尺度缓慢变化。我实际算过白天电价高峰时段把供热功率从2kW降到0.5kW持续4小时。热功率少了1.5kW稳态温差会减少18.75℃但因为时间常数是69小时4小时只完成了约5.6%的过渡过程室温实际只下降了大约1℃。PMV只掉0.25用户几乎察觉不到但系统却实打实地躲过了4小时的高价电。这就是建筑热惯性的“免费储能”价值。调度模型如果能把这个机制写进去经济性提升空间非常可观。4. MATLAB代码实现与求解配置4.1 代码工程结构规划拿到这个项目别急着写代码。先把文件结构定了后面调试会省很多事。我习惯的划分方式如下文件/文件夹作用main.m主程序参数初始化、调用建模、求解、后处理data_case.m输入数据分时电价、气价、负荷曲线、设备参数pmv_calc.mPMV计算函数线性近似或完整公式build_model.m用YALMIP定义决策变量、目标函数和约束solve_model.m调用CPLEX/GUROBI求解并检查收敛状态plot_results.m绘制设备出力、温度曲线、PMV曲线、成本对比图results/存放不同场景的求解结果方便后续对比分析4.2 核心建模代码思路建模推荐用YALMIP工具箱加外部求解器。YALMIP只是一个建模语言它能把高层的变量描述自动转换成求解器需要的标准格式。核心代码框架如下%% 定义决策变量 P_gt binvar(1, 24); % 燃气轮机启停若是连续功率则用sdpvar P_gtd sdpvar(1, 24); % 燃气轮机发电功率 P_ec sdpvar(1, 24); % 电制冷机耗电功率 Q_gb sdpvar(1, 24); % 燃气锅炉供热量 Q_ac sdpvar(1, 24); % 吸收式制冷机制冷量 P_grid sdpvar(1, 24); % 电网购电功率 T_in sdpvar(1, 24); % 室内温度 Q_hvac sdpvar(1, 24); % 供热/供冷功率 %% 目标函数 objective sum(P_grid .* price_grid) sum(gas_consume .* price_gas); %% 约束集合 Constraints []; % 电力平衡约束 Constraints [Constraints, P_grid P_gtd*eta_gt ... P_load P_ec P_bat_ch - P_bat_dis]; % 热平衡约束 Constraints [Constraints, Q_gt_hr Q_gb Q_hs_dis ... Q_load Q_hs_ch]; % 冷平衡约束 Constraints [Constraints, Q_ac P_ec*COP_ec Q_cool_load]; % 建筑热动态方程核心耦合约束 for k 1:24 if k 1 Constraints [Constraints, T_in(1) T_in_0]; else Constraints [Constraints, T_in(k1) a*T_in(k) ... b*(R*Q_hvac(k) T_out(k))]; end end % PMV舒适度约束用线性近似 PMV pmv_linear(T_in, season); % 返回1x24的PMV序列 Constraints [Constraints, -0.5 PMV 0.5]; %% 求解 options sdpsettings(solver, cplex, verbose, 2); optimize(Constraints, objective, options);这段代码有好几个细节值得展开。电力平衡等式里为什么电制冷机的耗电被放在等式右边和电负荷并列因为电制冷机是耗电设备不是“负的发电”。这样写有利于后续做灵敏度分析也符合能量平衡的物理含义。建筑热动态约束用了24个等式把T_in和Q_hvac绑定起来。这里特别要注意T_in(k)与Q_hvac(k)的时序关系不能搞反Q_hvac(k)是本时段施加的供能功率它影响的是T_in(k1)。很多初写者在这里把下标错位导致结果出现一个小时的相位偏移。PMV约束那行看起来简单但它实质上把T_in的上限和下限都隐含进去了。线性近似的斜率0.25意味着PMV区间[-0.5, 0.5]对应的温度区间只有4℃比普通温度约束要严格得多。这也是为什么必须配合建筑热模型一起用——没有热惯性缓冲这4℃的窄窗口会把设备出力逼得非常生硬。4.3 求解器配置与数值稳定求解器方面如果模型是混合整数线性规划MILP首选CPLEX或GUROBI。YALMIP本身不带求解器必须在电脑上单独安装IBM ILOG CPLEX Optimization Studio或GUROBI然后确保安装目录加入MATLAB路径。装好之后用yalmiptest命令检查求解器识别情况。数值缩放是一个经常被忽略但极其重要的问题。假设功率单位用kW购电成本一算就是几千上万而温度约束里的数值只有20℃左右两者数量级差了3到4个量级。很多求解器在这种条件下容易出现数值病态表现为目标函数迭代不收敛或者约束被莫名其妙地违反。建议所有功率量统一用MW价格单位统一用元/MWh成本自然落到每小时几百元的量级跟温度数值的差距缩小求解稳定得多。还有一个经验不要一开始就把所有约束一次怼上去。先把能量平衡和设备约束跑通确认目标函数有合理解然后加储能约束最后再加PMV和建筑热耦合这样哪一步出了问题都能快速定位。5. 结果分析经济性和舒适度到底怎么权衡5.1 三组对比实验设计为了验证PMV舒适度约束的价值建议做三组场景对比Case 1无舒适度约束只有设备运行下限和能量平衡纯经济调度Case 2固定温度约束要求室温始终落在18℃到26℃Case 3PMV舒适度约束冬季工况PMV落在[-0.5, 0.5]三组场景共用同一套负荷曲线、电价气价和设备参数只改变约束条件。这样对比出来的成本差异完全由约束策略引起。5.2 结果解读成本只涨一点点舒适度飞跃式提升基于我自己的项目经验结果通常会呈现这样几个特征Case 1的运行成本最低但室内温度的模拟值会长时间贴着安全下限跑。在冬季系统倾向于把室温压到15到16℃PMV跌到-1.5以下体感已经是“冷得难受”了。这个场景虽然省了钱但完全不具备实际可操作性。Case 2的成本比Case 1高大约8%到10%因为18℃的下限和26℃的上限在冷热负荷高峰期会强制设备进入高成本运行区间。更麻烦的是固定温度约束在过渡季节特别吃亏明明湿度低、体感暖和系统还是机械地维持18℃下限白白浪费燃气。Case 3的成本比Case 2低5%到12%而PMV基本控制在±0.5以内。为什么PMV约束反而比固定温度省钱关键在于冬季工况下PMV允许的温度下限其实低于18℃——比如湿度40%、风速0.15m/s、穿厚外套时16℃室温对应的PMV可能也只有-0.4左右。PMV不会像温度约束那样一刀切地限制“温度必须高于18℃”它给了调度系统在特定气象条件、特定着装条件下的合理“偷工减料”空间。从工程角度这样表述PMV约束的本质是把房间的“舒适度资源”动态化、场景化而固定温度是一个静态的、僵化的判断。这就像限速60km/h的公路和根据天气、车流动态建议车速的智能交通系统相比后者一定更高效。5.3 图形输出要点结果图建议至少包含四张各设备出力堆叠图电、热、冷三个子图室内温度与室外温度对比曲线叠加舒适温度带PMV逐时变化曲线叠加±0.5的舒适带三种场景的成本对比柱状图或累计成本曲线画出PMV曲线之后有个小技巧把采暖季和供冷季分开画或者用不同颜色区分过渡季节。因为冬季PMV和夏季PMV对应的温度区间差异很大混在一张图里看容易误判系统是否存在越限。6. 实操避坑与调试心得6.1 高频问题速查表问题现象可能原因解决方案求解器报Infeasible problemPMV约束过紧或建筑热模型参数和负荷数据不匹配先放宽PMV区间到[-1, 1]跑通后再逐步收紧检查T_in初值是否在合理范围YALMIP报No solver foundCPLEX/GUROBI没有正确安装或路径未加入运行yalmiptest看求解器列表重新添加路径温度曲线剧烈振荡C_b取值过小建筑热模型时间常数太短增大C_b保证时间常数在20小时以上目标函数数值跳跃或NaN功率和成本量级不一致统一单位功率用MW价格用元/MWhSOC在周期末不为0缺少SOC(24) SOC(0)的周期约束在约束集合里显式加上PMV线性近似导致温度超限线性拟合的斜率或截距与实际工况不符用pmv_calc函数校准关键点更新拟合系数6.2 我的几条独家调试经验第一PMV约束不要做成硬约束最好加上松弛变量。具体做法是把目标函数里加一项“PMV偏离惩罚”f_penalty λ × Σ max(0, |PMV| - 0.5)YALMIP里可以用临时的非负辅助变量表示这个max项。带松弛的软约束求解稳定性远好于硬约束而且当气象数据预测误差导致系统本无解时软约束能自动退让到“尽量接近舒适”而不是直接报无解。这个技巧在处理真实气象数据时价值极大。第二建筑热模型的参数标定千万别想当然。C_b和UA的取值对结果影响巨大但它们又完全取决于具体建筑的围护结构。最稳妥的做法是先做一次开环仿真只给固定的Q_hvac序列看T_in的仿真曲线是否符合直觉。比如冬季夜间不供热时室温应该缓慢下降而不是瞬间跌落。如果参数设置合理这个仿真曲线本身就能讲出一个让人信服的“热惯性”故事。第三留意热负荷基数与PMV约束的匹配问题。冬季工况下PMV约束的温度下限可能低于传统的18℃下限这会显著降低系统的热负荷需求燃气轮机的余热可能因此供大于求。很多新手在这里会发现吸收式制冷机在寒冬也从“制冷”模式变成了“余热消纳”通道——这其实不是Bug反而说明模型抓住了多能互补的精髓余热不是非得用来供热也可以驱动制冷机在冬季给数据中心或者特定区域供冷。优化算法会自动探索这种跨季节的能量分配策略前提是你在约束里给了它足够的自由度。做这个项目到最后我最大的体会是综合能源系统优化调度的难点从来不是设备建模或求解器调参而是怎么定义“好东西”。把用户舒适度量化成PMV并放进约束看似只是多写了一行不等式实质上是把调度目标从“系统省钱”扩展到了“用户满意且系统高效”。这种思路在越来越多强调体验的智慧园区、零碳建筑项目中正在变成刚需。而随着空调负荷柔性调节、建筑虚拟储能这些概念落地PMV这类人体热舒适指标与优化调度的结合点只会越来越多这个方向值得深入研究。
返回列表