ARTICLE DETAIL

资讯详情

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

MATLAB家庭能量管理优化调度:分时电价下电动汽车与空调负荷协同控制

MATLAB家庭能量管理优化调度:分时电价下电动汽车与空调负荷协同控制 这套课题做下来差不多花了我十来天时间中间踩了不少坑今天把完整思路和代码骨架整理出来给准备在MATLAB里做家庭能量管理、需求响应、分时电价调度这类方向的朋友一个可以直接落地的参考。项目核心一句话就能讲清楚在分时电价的环境下把电动汽车充电和空调运行这两类典型可平移负荷从电价高峰“搬”到低谷时段去在保证用车需求和体感温度的前提下把一天的用电费用压下来顺带削峰填谷。我用MATLAB搭了一套包含基础负荷、EV充电模型、空调热动态模型的家庭能量管理系统仿真平台用优化算法做日前调度再把结果拿去和拍脑袋规则做对比效果差距非常明显。这篇博文适合正在做智能电网、需求响应、家庭能量管理课题的研究生同样适合想转能源方向的MATLAB开发者内容从建模到求解再到调参整个过程都会拆开来讲。1. 项目定位与核心思路拆解1.1 家庭能量管理到底在“管”什么家庭能量管理系统英文叫Home Energy Management System简称HEMS本质上是需求响应在用户侧的最小闭环。过去我们家里的用电设备是“插上就开、开了就用”电网给你什么电价你只能被动接受。但现在的局面完全不同了电动汽车走入家庭之后一台7kW的交流慢充功率相当于十几台空调同时开机再加上居民侧分时电价逐步推广一天之内电价可以差出两三倍。这时候如果还保持“回家就充、热了就开”的用电习惯钱白花不说电网高峰时段的压力也很大。HEMS干的事情就是接住电价信号、用户用车需求、室内温度要求这些输入自动决定家里哪些大功率设备应该在什么时间运行、以什么功率运行。它不是一个智能插座那么简单也不是一个远程遥控App它是一套“感知—决策—执行”的闭环逻辑。感知靠负荷模型和电价预测决策靠优化算法执行靠智能开关和功率控制器。这个项目里我把家庭能量管理问题简化成一天24小时的调度问题已知明天每个小时的电价已知家庭基础负荷曲线已知电动车几点回家、几点出门、需要充到多少电已知空调的参数和室外的温度变化求解的是EV充电器每小时开还是关、空调每小时开还是关使得总电费最低同时温度不能太热、用车不能没电。1.2 两个主角电动汽车和空调为什么是天然“可平移负荷”可平移负荷这个概念指的是用电时间可以调整、但总用电量基本不变的负荷。洗衣机、洗碗机是最典型的一类——你晚两个小时洗衣服对生活几乎没影响但它消耗的电能不会减少只是换了个时间段。另一类是温控负荷以空调为代表它有热惯性房间温度不会瞬间变冷变热所以制冷功率可以在一段时间内“腾挪”不需要连续满负荷运行。EV和空调恰恰是家庭里最值得管的两样东西。先说EV一台家用交流慢充功率普遍在6.6到7kW之间充6个小时就是四十多度电在家庭负荷里是绝对的大头。但它的充电窗口又非常灵活——前提是你不是回家就要立刻满电出发夜间十几个小时都在家充电时间完全可以往凌晨挪。再说空调夏季制冷功率1到2kW但它是全天候运行的如果放任不管下午电价高峰时段它恰好也在满负荷工作。空调的聪明用法是提前预冷电价便宜的时段多开一会儿把房间温度拉低电价贵的时候就可以少开甚至不开靠建筑热惯性维持一段时间的凉爽。两者的“可平移”属性不太一样。EV是时间轴上移动充电总电量不变空调是在运行区间内做功率分布调整总耗电可能变化因为它还受室外温度影响。这就决定了它们的模型要分别建立约束条件也完全不同后文会细讲。1.3 为什么用MATLAB仿真起步不直接上真硬件很多刚入门的同学会问既然要做家庭能量管理为什么不直接买个智能电表、接个树莓派、控制真实空调和充电桩去测试我的建议是如果你是在做毕业论文或者课题研究先老老实实把仿真平台搭起来。不是说不鼓励做实物而是实物调试的成本和周期完全不在一个量级。真空调的压缩机有启停保护不能频繁开关真充电桩有协议问题通信调试就要耗掉大半个月再遇到夏天室外温度波动实验结果根本没法复现。MATLAB在这个方向上有几件事做得非常到位优化工具箱里的intlinprog能直接求解混合整数线性规划problem-based建模方式写起来栈很舒坦画图、统计、参数扫描的生态成熟出图质量适合写论文后续想往Simulink方向做更细的电力电子或物理模型又能无缝衔接。版本上我也多说一句我用的R2023b网上已经热传2026b之类的新版本但我建议别追新只要装的是R2021b往后的版本跑这个项目都绰绰有余很多新版本反而容易遇到激活异常之类的问题纯属浪费时间。2. 系统建模把优化问题写清楚了再谈算法2.1 家庭基础负荷与时间粒度选取任何能量管理的第一步是把“不可控负荷”摸清楚。家里有些用电是你改不了的比如冰箱、路由器、照明还有一些是你不太想改的比如做饭用的电磁炉、烧水的电水壶。这些负荷加在一起构成了没法参与调度的基础负荷曲线。我在仿真里构造了一条典型家庭夏季工作日基础负荷曲线双峰特征早高峰出现在7到9点晚高峰出现在18到21点。早上是照明、早餐、电热水器加热晚上是做饭、洗碗、电视加电脑。白天上班时段家里没人负荷掉到很低。构造这条曲线不需要真的去测量因为我们的目标是验证调度算法用一条符合典型规律的人工曲线完全可以。我给出一组可以直接用的每小时基础负荷数据单位是千瓦dt 1; % 时间步长单位小时 hours (1:24); P_base [0.28, 0.25, 0.23, 0.21, 0.20, 0.24, 0.40, 0.65, ... 0.72, 0.62, 0.52, 0.48, 0.50, 0.55, 0.60, 0.72, ... 0.90, 1.05, 0.95, 0.78, 0.65, 0.55, 0.42, 0.32];时间粒度上我选了1小时24个时点规模正合适下一步写optimization problem的时候决策变量只有48个intlinprog几乎瞬间能跑完。如果你的场景需要更精细地模拟功率波动可以改成15分钟但二进制变量会变成原来的4倍求解速度会明显变慢。建议先跑通1小时粒度再决定是否加细。2.2 电动汽车充电模型与SOC约束EV充电模型的核心变量是电池的荷电状态也就是SOC。我建的是慢充模型假设车辆晚上18点回家插上充电枪第二天早上8点出门充电功率固定7kW效率92%。电池容量60kWh回家时的SOC是0.3出门时至少要充到0.9。这里有个很容易被忽略的点充电过程不是“想充就充、随时能断”那么随意的来回切换充电状态对电池不好但对调度问题来说我们只关心SOC的变化所以先假设每小时可以自由决定充或不充只要满足前后SOC的约束。SOC的状态更新方程写出来长这样SOC(k1) SOC(k) (eta_ch * P_ev * u_ev(k) * dt) / B_cap其中eta_ch是充电效率0.92P_ev是7kWu_ev(k)是第k小时充电开关取值0或1B_cap是60kWh。以小时为单位充一个小时SOC上升0.107左右充5个多小时就能从0.3拉到0.9。在MATLAB里把SOC建为连续变量充电开关建为0-1整数变量约束条件就三块SOC不能超过上限0.95出门时SOC不低于0.9SOC的递推关系严格成立。为什么把SOC上限设成0.95而不是1.0一个是电池保护另一个是真到95%以后充电功率会自动降下来咱们简化模型里不建这个降功率阶段直接用上限卡住就行。2.3 空调热动态模型空调和EV最大的不同在于空调的状态不是简单的开关与电量而是室内温度这条连续变化的轨迹。温度变化有惯性这个过程在建筑热力学里常用一阶等效热参数模型描述简写叫ETP模型。它的思想是把房间看成一个带热容的箱子室外温度通过墙壁这个热阻往房间里渗热空调的制冷功率把热量抽出去。连续时间微分方程是C * dT_in/dt (T_out - T_in) / R - COP * P_ac * s_ac离散化之后每小时更新一次T_in(k1) T_in(k) dt/(R*C) * (T_out(k) - T_in(k)) - dt/C * COP * P_ac * s_ac(k)这里参数取R3℃/kWC1.2kWh/℃COP3.5空调电功率P_ac1.5kW。我解释一下这些数什么意思R*C这个乘积代表房间的热惯性值越大温度变化越慢。以我的参数算关空调的时候如果室内外温差25℃每小时室温只往室外方向靠拢7℃左右开空调的时候每小时制冷带来的降温约4.4℃。一开一关之间室温处在一个动态平衡里。空调的约束很简单也很关键全天体感温度保持在20到26℃不满足这个范围就是不可行解。为什么用这个温度范围而不是一个固定值因为调度算法需要空间挪腾如果设死“必须25℃”算法毫无灵活性可言就谈不上把负荷往低谷转移了。空调是启停控制每小时一个0-1变量s_ac(k)热动态方程把温度和开关紧紧耦合在一起。2.4 分时电价信号与目标函数设计分时电价是这把调度里最重要的数字信号。我用的是一组典型居民峰谷电价高峰时段17点到21点电价1.2元/kWh平时段8点到17点、21点到23点电价0.75元/kWh低谷时段23点到次日8点电价0.35元/kWh。建模的时候直接把这个规律写成一个24维的价格向量price zeros(24,1); price(hours 23 | hours 8) 0.35; % 谷 price(hours 17 hours 21) 1.20; % 峰 price(hours 8 hours 17) 0.75; % 平 price(hours 21 hours 23) 0.75; % 平目标函数分三层。第一层也是核心层是总电费最小把每小时电价乘以总功率基础负荷加EV加空调再累加起来。第二层是平抑峰谷差如果只优化电费算法可能把所有负荷都堆到电价最低的两三点结果家庭总功率曲线变成一根尖刺这在仿真里是能看出来的。第三层是舒适度惩罚不过在我这个版本里舒适度主要以硬约束形式存在温度超范围直接判不可行。权重怎么定我建议先跑一版纯电费目标然后把峰谷差惩罚项一点一点加进去观察总功率曲线形状加到曲线不出现明显尖峰为止。量纲上电费是按元算功率越限是按kW算所以惩罚权重前面要带一个折算系数不然惩罚项的数值会忽大忽小。2.5 约束条件整理成一张清单写论文也好写代码也好最怕约束条件散落一地。我习惯把所有约束整理成一张表逐条对着代码检查。这里直接给出本项目的完整约束清单约束名数学表达物理含义功率上限P_base P_evu_ev P_acs_ac Pmax家庭入户容量限制取8kWSOC递推SOC(k1) SOC(k) etaP_evu_ev*dt/Bcap充电过程电量守恒SOC上界SOC(k) 0.95电池保护SOC离网目标SOC(出门) 0.9用车需求温度递推T_in(k1) T_in(k) dt/(RC)(T_out-T_in) - dt/CCOPP_ac*s_ac热动态温度范围20 T_in(k) 26舒适度硬约束变量类型u_ev, s_ac 为0-1整数变量启停决策另外我还加了一个小型可平移负荷洗衣机设定总运行时长1小时功率0.6kW可以在白天任意一个时段运行但一旦启动就必须连续运行完。这是为了验证“可平移负荷”这个集合不只有EV和空调算法对这类离散设备同样能处理。连续性约束在MILP里需要额外引入辅助二进制变量代码会复杂一点但对理解问题非常有帮助。3. 求解算法从规则控制到全局优化3.1 为什么“低谷充电、高峰关机”这种规则不够用很多人第一反应是分时电价无非就是“贵的时候别用便宜的时候多用”这还需要优化算法吗我一开始也是这么想的先写了个规则策略当基线EV从23点开始充充到出门为止空调只在23点到8点以及12点到16点这两个电价便宜的时段开其余时段全关。结果跑下来发现问题很大。第一个问题是负荷叠加。EV在谷时充电7kW空调在谷时也全开再算上家里基础负荷23点到凌晨2点这一段总功率轻松超过8kW的入户容量这是现实中会跳闸的。第二个问题是空调的“后遗症”。下午17点以后空调强制关闭室外温度35℃的情况下到晚上19点室内温度已经逼近28℃舒适度完全失控。规则策略看起来省钱了实际上是用体验换钱而且还没考虑容量约束。这说明一个本质问题家庭里的多个可平移负荷之间是互相耦合的耦合点就是家庭总功率上限和各自的物理约束。单靠几条人工规则根本没法统筹全局必须把问题形式化成数学模型用算法去搜索最优解。3.2 路线一intlinprog求解混合整数线性规划EV充电开关、空调启停开关都是0-1变量温度递推方程是线性的目标函数关于功率是线性的所以这个问题的核心版本可以建成一个混合整数线性规划MATLAB里直接用intlinprog或者problem-based框架的solve函数求解。核心代码如下prob optimproblem(ObjectiveSense, minimize); u_ev optimvar(u_ev, 24, Type, integer, LowerBound, 0, UpperBound, 1); s_ac optimvar(s_ac, 24, Type, integer, LowerBound, 0, UpperBound, 1); SOC optimvar(SOC, 25, LowerBound, 0.3, UpperBound, 0.95); T_in optimvar(T_in, 25, LowerBound, 20, UpperBound, 26); prob.Objective sum(price .* (P_base P_ev*u_ev P_ac*s_ac) * dt); % SOC约束 prob.Constraints.soc0 SOC(1) 0.3; prob.Constraints.soc_final SOC(25) 0.9; for k 1:24 prob.Constraints.([soc_ num2str(k)]) ... SOC(k1) SOC(k) 0.92*P_ev*u_ev(k)*dt/60; end % 温度约束 prob.Constraints.temp0 T_in(1) 26; for k 1:24 prob.Constraints.([temp_ num2str(k)]) ... T_in(k1) T_in(k) dt/(R*C)*(T_out(k1)-T_in(k)) ... - dt/C*COP*P_ac*s_ac(k); end % 功率上限 prob.Constraints.pow P_base P_ev*u_ev P_ac*s_ac 8; [sol, fval] solve(prob);跑出来的结果非常漂亮充电自动落在23点到次日5点空调的运行集中在零点到上午和下午的平价时段。我统计了一下MILP跑48个变量完全没压力求解时间不到一秒。这里提醒一句SOC递推公式里注意单位B_cap是60kWhP_ev是7kWdt1h算出来系数就是0.9271/600.1073SOC的单位是比例值别写成0.1073*SOC这种结构。3.3 路线二灰狼优化做非线性问题的兜底MILP很好用但现实问题不会永远那么乖。空调COP如果受室外温度影响温度递推方程就变成非线性的了如果充电功率分档可调也会引入新的非线性关系。这时候intlinprog无能为力需要换元启发式算法。我在项目里加了灰狼优化算法GWO做对照。为什么选GWO它的参数少主要就是狼群数量和迭代次数不像遗传算法要调交叉率变异率也不像粒子群要调惯性权重。GWO的搜索逻辑是模仿灰狼围捕猎物的三个步骤包围、追猎、攻击核心公式是狼群位置向三只最优狼的位置靠拢。对这个48维的0-1整数决策问题我把连续位置变量取整映射到0和1适应度函数就是目标电费加上所有违反约束的惩罚值。核心迭代框架大概长这样pop 30; max_iter 200; dim 48; X rand(pop, dim); % 连续初始化 for iter 1:max_iter for i 1:pop x round(X(i,:)); % 映射到0-1 fit(i) calc_fitness(x); % 适应度电费惩罚 end [best, idx] sort(fit); alpha X(idx(1),:); beta X(idx(2),:); delta X(idx(3),:); % 更新狼群位置 ... endcalc_fitness这个函数的写法是我调试时最费劲的部分。惩罚项必须“宽进严出”温度超范围一点给个很小的惩罚总功率越限超过一定值惩罚要指数级放大。如果惩罚设得太轻算法会钻空子给你一个表面上费用很低、实际不可行的方案设得太重又等于把所有软约束变成硬约束搜索空间被切得支离破碎。启发式算法的优势是适应度函数随便写非线性随便加劣势是不保证最优而且每次跑的结果都略有不同。项目里GWO一般跑3到5次取最优值得到的结果和MILP比电费差距大概在2%以内作为对照方法完全够用。3.4 两阶段调度离线规划加滚动修正做完离线优化之后我意识到一个工程问题仿真的前提是“未来24小时电价和基础负荷完全已知”但现实里一般做不到。电价可以看明天的公告基础负荷只能靠预测预测就有误差误差累积下去早上排好的计划到晚上就不适用了。所以我在平台上加了第二层——滚动时域修正思路和模型预测控制一样本质是“走一步看一步”。具体做法是每天零点用预测数据跑一次全天优化得到第二天逐时控制计划每过一个小时把当前实际SOC和实际室温读回来用这些真实状态作为初值重新优化未来12个小时的计划只执行下一个时段的开关指令。这个“1小时执行、12小时重算”的循环就是两阶段调度。我测试下来在基础负荷预测误差为15%的情况下两阶段比纯开环计划的电费高了大约4%但温度始终没越限而开环策略的室内温度会偶尔冲到27℃以上。两阶段调度的MATLAB实现核心就是一个for循环每个循环里调用一次solve函数初值从上一轮结果里取实际状态约束和目标是同一个模板只是时间窗口在滚动。代码结构不难但它能把离线优化算法真正变成一套能用的控制系统论文里写上这一层工程说服力会强很多。4. 仿真结果分析与敏感性测试4.1 仿真场景与参数设置为了让人能完全复现我把仿真用到的所有参数集中列一张表。这是我从文献和工程经验里综合出来的一组典型夏季数据如果你需要做别的场景直接改这些数就行。参数数值单位说明家庭基础负荷日电量约12kWh双峰曲线自动生成入户功率上限8kW参照单相40A电表EV电池容量60kWh主流中型电动车EV充电功率7kW交流慢充充电效率0.92/含ACDC损耗EV回家SOC0.3/下班剩余电量EV出门目标SOC0.9/保证通勤往返空调电功率1.5kW制冷量约5kW空调COP3.5/制冷能效比等效热阻R3℃/kW建筑围护结构等效热容C1.2kWh/℃房间热惯性温度舒适区间20-26℃强制约束峰/平/谷电价1.2/0.75/0.35元/kWh典型居民TOU室外温度曲线取夏季晴天的典型值凌晨28℃左右午后最高35℃。这里要注意的是空调模型的温度递推需要室外温度序列我用一个正弦函数加偏移去模拟T_out 31 4 * sin((hours - 9) * 2 * pi / 24);凌晨3点最低约27℃下午15点最高约35℃符合夏季昼夜变化规律。4.2 优化效果怎么解读设置好参数跑完整流程之后我拿到手的第一组结果就非常有说服力。三种场景对比如下场景日总电费峰时段用电谷时段用电温度越限无策略回家即充空调定温全天开18.6元7.2kWh3.8kWh无规则策略谷时充电峰时关空调15.1元3.1kWh8.5kWh晚间2小时MILP优化策略13.8元2.2kWh10.4kWh无优化策略比无策略省了25.8%比规则策略又省了8.6%。从负荷曲线上看EV充电基本不在白天出现集中在23点到凌晨5点空调的运行被切成三段凌晨谷段开两三个小时保温、中午平价段开一小时预冷、下午高峰时段只短时运行维持温度把高峰期的功率峰值压得平平整整。整条家庭总负荷曲线的高峰从原来早中晚三个尖峰变成深夜一个平滑谷堆加白天一个削减过后的平台峰谷差降低了约35%。这里要特别提醒评价一个调度策略好不好不能只看电费绝对值要看它是不是“真优化”。我判断标准有三条一是费用是不是真的降了二是舒适度约束是不是始终满足三是总功率曲线有没有出现新的、更尖锐的负荷尖峰。有时候电费算出来很低但一看功率曲线就露馅那是算法把负荷硬堆到某一两个低价时段的结果工程上完全不可用。4.3 三个关键敏感性分析电价差、充电紧迫度、舒适度权重拿到基准结果之后我做了一组敏感性测试这几个测试也是论文里“影响分析”的标配内容它们能说明策略的适应边界。第一个是峰谷价差的影响。把平时段电价固定在0.75元不变把峰谷价差从0.5元拉到1.4元发现策略的节省率从15%左右一路涨到32%。原因是价差越大把负荷从高峰挪到低谷的套利空间就越大算法越有动力去转移可平移负荷。这也说明分时电价政策本身就是需求响应最有效的指挥棒。第二个是EV出行需求的紧迫度。把出门目标SOC从0.7提到0.95EV的可调度空间急剧收缩。目标SOC为0.7时算法可以灵活选择充电时段目标SOC为0.95时EV必须充够7个小时以上几乎要把夜间所有低价时段占满此时空调只能见缝插针安排电费比宽松需求下高了约10%。这告诉大家一个朴素道理需求侧的灵活度才是能量管理能发挥的空间上限。第三个是舒适度带宽的影响。把温度约束从严格的20-26℃放宽到18-28℃算法有了更大的“搬运”空间空调可以在更便宜的时段多开电费进一步下降但代价是温度波动变大。从20-26℃这个带宽下的13.8元到18-28℃时的12.6元省了大约9%换来的是白天偶尔27℃以上的短暂体验。做研究必须把这个权衡定量摆出来而不是笼统说“兼顾舒适与经济”。5. 常见问题与调试实录5.1 intlinprog慢成蜗牛的排查方向我一开始直接把问题加到96个变量、时间步长15分钟然后发现intlinprog跑出来要将近一分钟。后来排查发现瓶颈不在变量规模而在二进制变量和连续变量的耦合方式上。比如空调温度约束里s_ac(k)和T_in(k1)同时出现在一个等号约束里0-1变量与连续变量的乘积会让求解器的分支定界变得很吃力。解决思路有几个方向一是把多余整数变量合并掉比如充电开始和结束状态可以用少量开始事件变量描述而不是每个时点一个开关二是给求解器一个较好的初值用上一轮或规则策略的结果作为x0传入三是减少不必要的约束数量我甚至把所有SOC等于约束拆出去单独处理再把结果代回去验证。实践中先用1小时粒度和48个变量跑出形状再按需细化的做法最稳妥。5.2 不可行解十有八九是约束彼此打架做优化最崩溃的提示就是“Problem is infeasible”或者“找不到可行解”。我排查经验是先打印所有约束的残差看是哪一条约束在作怪。最常见的三个原因EV出门目标SOC设太高同时谷时窗口又不够充不满电温度范围设太窄室外35℃的傍晚你还要求室内必须25℃以下且空调不能开功率上限太紧EV和空调在同一时段开就超限。排查方法也很朴素按清单逐条把约束临时去掉一个看剩下问题能不能解能解说明问题出在你刚去掉那条上。还有一种偷懒但有效的工程做法在约束里加松弛变量目标里对松弛量加一个很大的惩罚系数求解后看松弛量哪条非零就知道哪里紧张了。最后靠这个方法发现是EV离网时间设置太早把离网时间改成8点之后一切正常。5.3 负荷“抱团”越限表面聪明实则坑爹这是规则策略的问题也是启发式算法最容易犯的问题。GWO初版跑出来的结果EV和空调全挤在凌晨1点到3点电费是真的低但总功率到了9.5kW超出入户容量。我一开始以为是GWO收敛问题后来反复测试才发现目标函数里根本没有功率上限惩罚因为我把功率约束写成了硬约束GWO在硬约束下找不到可行域就退而求其次交给你一个“罚函数不敏感”的解。解决办法是两层同时动手在目标函数里给功率越限量加上一个足够大的惩罚系数并且把上限设成8kW同时把GWO的适应度函数里的功率越限惩罚从线性改成二次型越限越多惩罚增长越快。修改之后算法会主动避让高峰叠加区间协调EV和空调错峰运行。5.4 MATLAB版本与可视化细节版本方面我在开头说过不追新R2021b到R2023b之间任意版本都好用。如果遇到安装完打开就闪退的问题先检查路径里有没有中文和空格这是最常见的原因。绘图上调度结果建议用stairs函数画阶梯线因为开关状态本身就是阶跃变化的电价区间可以用area函数画不同颜色的背景块一眼就能看出用电行为是否逆着电价走。我出图时习惯把“总功率曲线、EV功率、空调功率、室内温度、电价背景”画成五个子图摞在一起纵轴对齐时间轴这样图表信息非常完整。导出图片建议直接用exportgraphics分辨率可控写论文时不需要导两次。6. 最后再分享几点个人经验这轮项目做下来最大的体会是能量管理优化的难点从来不在算法本身而在于怎么把一个物理过程翻译成数学约束以及怎么让约束之间不打架。初学的时候很容易被MILP、GWO这些名词唬住花大把时间在算法精调上结果连模型参数都还没校准。我的建议是先花70%的精力把负荷模型和约束建扎用一个最简单的“枚举所有充电开始时间”去扫一遍确认主逻辑正确再升级到真正的优化求解器。另一个实用技巧是所有参数写进代码之前先标好单位SOC相关计算尤其容易混入百分比和比例值我吃过这个亏最终结果小数点后差一位排查花了一晚上。最后说说扩展方向。这个平台后续能加的东西非常多如果家里装光伏就把PV出力加成一个新的不可控输入目标改为最大化自发自用率如果配储能就再引入一个带充放电效率和容量约束的电池模型往上走还可以做多户家庭之间的协同那就是社区级能量管理的范畴了。做完这套再往任何一个方向走都能顺藤摸瓜。
返回列表