前阵子帮某园区做储能项目前期可研,业主丢过来一篇EI期刊上的储能调峰配置方法,让我用Matlab复现,再落到他们实际的负荷曲线上出方案。那篇文章的思路并不复杂,核心就一句话:在满足调峰需求的前提下,找到让储能项目经济性最优的功率和容量组合。但真用代码跑起来,牵扯的参数、边界条件、成本口径比预想多不少。这篇就把整个复现和落地过程拆开讲透,从场景建模到经济性指标计算,再到Matlab实现细节,全部给出来。
1. 项目整体定位与问题拆解
1.1 调峰场景到底在解决什么问题
储能在用户侧和电源侧参与调峰,本质上是把低谷时段多余的电能存进来,在高峰时段放出去,削峰填谷。这套逻辑听起来简单,真正做配置方案时却要面对一个矛盾:容量配得越大,调峰能力越强,但初始投资同步上涨;容量配得太小,调峰效果不明显,收益也上不去。所以问题的核心不是"配多大最好",而是"在哪个容量和功率组合下,项目全生命周期的经济性最好"。
从并网侧看,调峰需求通常来自日负荷曲线的峰谷差。比如某园区典型日负荷,最高负荷接近10MW,最低负荷只有3MW,峰谷差超过了一半,这就是配置储能的直观理由。储能系统在负荷低谷期充电,高峰期放电,降低从电网取电的峰值功率,同时利用峰谷电价差赚取套利收益。
1.2 配置方案与经济性的耦合关系
配置方案直接决定经济性,这个耦合关系体现在三个层面:
功率维度(MW)决定削峰能力。功率越大,高峰时段能顶上去的出力越多,对峰值负荷的削减效果越明显。但功率对应PCS(变流器)和并网设备成本,这部分几乎是线性增长的。
容量维度(MWh)决定放电持续时间。容量越大,能支撑的放电小时数越长,在连续高峰时段或电价尖峰时段赚的收益越多。这部分对应电池本体成本,在磷酸铁锂体系下,单位瓦时造价随容量增大通常会有边际下降,但总价仍然是线性增长。
运行效率与寿命是第三个隐藏变量。同样的配置方案,日循环次数、放电深度、往返效率不同,年收益和寿命损耗完全不同。这也是Matlab复现中必须要建模的部分,单纯按额定容量乘电价算收益,算出来的回收期会乐观到失真。
1.3 为什么这个项目要选Matlab而不是Excel
很多人第一反应是:配置方案用Excel也能做,套几个公式就能算出一个推荐值。确实,如果只做一个固定配置的静态测算,Excel完全够用。但EI原文的思路是参数扫描加可视化对比:功率从2MW到6MW、容量从4MWh到20MWh,每个组合都要算一遍NPV、回收期、内部收益率,最后画出经济性热力图。这种规模的循环计算和批量出图,Excel操作起来非常痛苦,Matlab的矩阵运算和绘图能力天然适合。
更重要的是,储能运行策略涉及时间序列操作,比如判断每个时段是充电、放电还是待机,这需要按时段逐点计算,还要考虑SOC上下限约束。Matlab的向量化操作和自定义函数让这套逻辑实现起来非常顺手,参数一改,整个方案池重新计算一遍也就几秒钟。
2. 储能配置方案设计核心
2.1 决策变量:额定功率和额定容量
配置方案的两个核心决策变量分别是额定功率P_rated和额定容量E_rated。功率的单位是kW或MW,指储能系统能持续输出的最大有功功率;容量的单位是kWh或MWh,指电池能存储的总电量。
实际做方案时,这两个变量不是独立取值的。工程上有一个常见的约束关系:容量功率比,也叫时长倍数。如果P_rated=5MW、E_rated=10MWh,意味着系统能以5MW功率持续放电2小时。对于调峰场景,放电时长通常取0.5到2小时,少数长时储能项目会取到4小时以上。在本文的复现中,功率范围取2MW到6MW,容量范围取4MWh到20MWh,覆盖了从短时调峰到中长时调峰的典型配置区间。
还有一个容易忽略的约束:充放电功率与容量的匹配。以放电深度90%和往返效率90%为例,一个10MWh电池组实际单次可放出的电量为9MWh,充满这些电量需要从电网吸收约10MWh。如果配置的功率过大(比如8MW),电池会在1个多小时内就充满或放空,剩下的高峰时段完全无力支撑,这种配置在技术上不合理。所以代码实现时,我会把功率和容量的配比约束写死,比如要求P_rated * 2 ≤ E_rated,避免生成无效组合。
2.2 运行策略:什么时段充、什么时段放
储能调峰运行策略的实质,就是给一条日负荷曲线和一个分时电价表,确定每个时段储能处于什么状态。标准做法是选取一条夏季典型日负荷曲线,再把一天划分为高峰、平段、低谷三个时段:
高峰时段:一般为上午10点到12点、下午14点到19点,此时电价最高、电网压力最大,储能集中放电,目标是将园区的最大需量压到设定阈值以下。
低谷时段:一般为深夜23点到次日凌晨7点,电价最低,储能充满电,为次日放电做准备。
平段时段:其余时间,储能原则上不动作,保持待机状态,除非有特殊的调峰补偿指令。
在Matlab复现时,我建议用分时电价向量price直接驱动运行决策,而不是手写大量if-else。具体逻辑是:当价格高于放电阈值且SOC高于最低下限时放电,当价格低于充电阈值且SOC低于最高上限时充电,其余时间待机。这种策略虽然不是最优化算法求出的全局最优解,但对于工程复现来说规则清晰、鲁棒性好,也方便后续改参数。
2.3 关键参数表:所有影响结果的变量
配置经济性分析涉及的参数很多,我在代码里把它们归成四类,分别是系统性能参数、电价参数、成本参数和财务参数。下面这张表可以直接抄作业:
| 参数类别 | 参数名称 | 典型值/范围 | 说明 |
|---|---|---|---|
| 性能 | 额定功率 | 2~6 MW | 决策变量 |
| 性能 | 额定容量 | 4~20 MWh | 决策变量 |
| 性能 | 往返效率 | 0.88~0.92 | 交流侧整体效率 |
| 性能 | 放电深度 | 0.9 | 避免过放 |
| 性能 | 循环寿命 | 6000次 | 至剩余容量80% |
| 价格 | 高峰电价 | 0.9~1.2 元/kWh | 9:00-12:00,17:00-19:00等 |
| 价格 | 平段电价 | 0.6~0.7 元/kWh | 按当地目录电价 |
| 价格 | 低谷电价 | 0.25~0.35 元/kWh | 23:00-7:00 |
| 成本 | 电池及系统成本 | 800~1300 元/kWh | 含BMS、温控、集成 |
| 成本 | PCS及并网成本 | 800~1000 元/kW | 含变压器、开关柜 |
| 成本 | 年运维成本 | 2%~3% 初始投资 | 电池检测、人工、保险 |
| 财务 | 折现率 | 6%~10% | 基准收益率 |
| 财务 | 项目周期 | 10年 | 与电池寿命匹配 |
这批参数的取值直接决定最终结论,不能说拍脑袋定。如果业主有当地电网公布的分时电价文件,一定优先用官方数据;没有的话,再按典型工商业峰谷价差来估算。我在复现中用的高峰电价1.0元/kWh、低谷电价0.3元/kWh,峰谷价差0.7元/kWh,属于目前大多数省份可实现且偏保守的水平。
2.4 配置第一版的经验法则
正式跑代码之前,可以先按经验法筛一遍,缩小扫描范围。储能领域有一个大家常用的粗算思路:先确定削峰需求,再用"峰值削减功率 × 期望放电时长"估算容量。比如园区峰值负荷10MW,想削掉5MW、支撑2小时,那么容量至少10MWh,功率5MW。所以初选方案就是5MW/10MWh。
这个初选方案可以作为扫描的基准点,在它附近扩展出多个组合。比如功率在2~6MW范围取5个点,容量在4~20MWh范围取9个点,形成45个配置组合,每个组合都完整跑一遍经济性计算。这一轮扫描虽然粗暴,但能非常直观地看出经济性随配置尺寸的变化趋势,后续所有讨论都建立在这张热力图基础上。
3. 经济性评价模型怎么搭
3.1 收益项:调峰套利和容量价值
储能参与调峰的收益不能只算一笔糊涂账。我复现时把年收益拆成两个主要部分:
第一块是峰谷套利收益。储能低谷充电、高峰放电,赚取的是峰谷价差乘以放电电量再减去充电电费后的净收益。单日计算公式:
日套利收益 = 高峰放电电量 × 高峰电价 − 低谷充电电量 × 低谷电价
其中低谷充电电量 = 高峰放电电量 ÷ 往返效率。按10MWh系统、90%往返效率、90%放电深度算,单日高峰放电电量约9MWh,低谷充电电量约10MWh。代入高峰电价1.0元/kWh、低谷电价0.3元/kWh,日套利收益为:
9×1000×1.0 − 10×1000×0.3 = 9000 − 3000 = 6000元
换算成年收益大约是219万元。
第二块是容量价值,也叫容量电费节省。很多工商业用户专变容量按kVA或kW计费,储能能削减高峰时段的需量功率,从而降低月度基本电费。假设当地容量电费按30元/kW·月收取,储能削减峰值功率5MW,理论上年节约容量电费为:
5000 × 30 × 12 = 180万元
不过要说明,这个180万元是理想上限。实际上储能放电只能削掉一段时间内的峰值,如果高峰时段持续超过放电时长,容量电费节省不会完全兑现。所以我复现时设了一个容量价值兑现系数,默认取0.5,即每年计90万元,更贴近实际。
其他收益项,比如需求响应补贴、调峰辅助服务补偿,在这个项目中暂不计入。如果你所在地区有明确政策,可以加在收益模型里,不影响整体结构。
3.2 成本项:初始投资与年运维
初始投资分两块计算。电池及系统成本按容量算,PCS及并网成本按功率算,叠加起来就是项目初始总投资:
初始投资 = 容量 × 电池系统单位成本 + 功率 × PCS单位成本
按5MW/10MWh、电池系统成本1200元/kWh、PCS成本900元/kW计算:
初始投资 = 10000×1200 + 5000×900 = 1200万 + 450万 = 1650万元
年运维成本按初始投资的2.5%估算,即每年约41万元。另外,电池容量每年会有衰减,复现时不能忽略。实际做法是把年可用电量乘一个衰减系数,比如从第2年开始每年容量衰减2%,到第10年剩余可用容量约80%,项目周期也就到此为止。
3.3 评价指标:NPV、回收期和IRR
经济性评价的核心指标是净现值NPV。NPV把未来每一年的净收益按折现率折算到当前,然后减去初始投资。净现值大于零说明项目在财务上可行,越大越好。
净现值的计算公式:
NPV = −初始投资 + Σ (年净收益 / (1 + r)ⁿ),其中n从1到项目周期年数,r为折现率。
按5MW/10MWh方案、年收益309万元(套利219+容量90)、年运维41万元、年净收益268万元、折现率8%、生命周期10年,折算后收益之和大约为1800万元左右,减去初始投资1650万元,NPV约150万元。这个量级说明方案有微弱盈利空间,但经济性不算非常好,对电池成本和峰谷价差非常敏感。
回收期分静态和动态两种。静态回收期直接用累计净收益除以初始投资,不考虑资金时间价值,倒推回本时间;动态回收期则把折现后的净现金流逐年累加,直到覆盖初始投资。对于储能这种前期投入大、收益逐年递减的项目,我建议以动态回收期为主要参考。
IRR是内部收益率,指让NPV等于零时的折现率。通常要求IRR大于基准收益率8%才算可行。对上面这个算例,IRR大约在9%到10%之间,刚好跨过门槛,属于能投但利润不厚的状态。
3.4 一个可复现的算例对照表
为了让读者直观理解配置方案和经济性指标的联动关系,我把三种典型配置放在一张表里对比:
| 配置方案 | 初始投资(万元) | 年套利收益(万元) | 年容量价值(万元) | 年净收益(万元) | 动态回收期(年) |
|---|---|---|---|---|---|
| 2MW/4MWh | 690 | 88 | 36 | 114 | 6.8 |
| 4MW/8MWh | 1380 | 175 | 72 | 215 | 7.3 |
| 5MW/10MWh | 1650 | 219 | 90 | 268 | 7.6 |
| 6MW/12MWh | 1980 | 263 | 108 | 320 | 7.9 |
注意,回收期并没有随配置增大而显著缩短,因为收益是跟随初始投资一起涨的。这说明储能项目经济性不单纯取决于"配多大",更取决于当地峰谷价差、电价形态和降本空间。这也是为什么必须在多个配置之间做横向比较,只算单一方案很容易得出"越大越亏"或"越大越赚"的片面结论。
4. Matlab代码实现详细过程
4.1 整体代码框架设计
复现一个完整的配置经济性分析,Matlab代码我建议按五个模块组织:参数设置模块、负荷与电价数据模块、运行模拟模块、经济性计算模块、结果可视化模块。这五个模块串成一条主程序,主程序只做参数初始化和调用函数,所有计算细节放到子函数里,这样当你需要修改峰谷电价或者电池成本时,不用在几百行代码里找变量。
代码结构大致如下:
Main_ESS_Configuration.m ├── para_init.m // 初始化参数结构体 ├── load_data.m // 读取或生成典型日负荷曲线 ├── price_data.m // 生成分时电价向量 ├── simulate_operation.m // 核心运行模拟,返回逐时SOC和功率 ├── calc_economic.m // 经济性指标计算,返回NPV、回收期、IRR └── plot_results.m // 自动出图:配置热力图、收益曲线等每个模块之间通过结构体参数传递,不建议用全局变量。全局变量在循环扫描时容易出错,而且调试起来非常痛苦。我用param结构体装载所有固定参数,用data结构体装载负荷和电价时间序列,函数内部只读不改,计算结果单独返回。
4.2 数据准备:负荷曲线和电价序列
负荷曲线是整个方案的输入基础。没有实际负荷数据时,可以合成一条典型的双峰日负荷曲线,用趋势项加正态扰动生成,其中上午一个小高峰、下午一个大高峰。但我在实际复现中强烈建议优先采用园区真实的15分钟负荷数据,因为它决定了容量电费节省能不能兑现。
分时电价向量同样按一天96个点(每15分钟一个点)生成,每点对应一个电价值。以高峰时段9:00-12:00和17:00-19:00、低谷时段23:00-次日7:00为例,代码可以这样写:
n = 96; % 一天96个点 t = (0:n-1) * 15 / 60; % 小时数 price = 0.6 * ones(n, 1); % 默认平段电价 price(t>=23 | t<7) = 0.3; % 低谷时段 price((t>=9 & t<12) | (t>=17 & t<19)) = 1.0; % 高峰时段这段代码看起来简单,却是整个项目最不该出错的地方。我曾经因为把低谷时段写成t>=23 & t<7,想表达跨零点区间,结果Matlab把两个条件做逻辑与,得到空集,电价序列全成了平段电价,算出来的NPV直接翻了一倍。正确写法是t>=23 | t<7,或者用find函数分两段赋值。
4.3 核心运行模拟函数
运行模拟函数是整个代码的引擎,输入额定功率、额定容量、负荷曲线和电价曲线,输出每小时储能的充放电功率、SOC轨迹以及每日的总充放电量。
核心逻辑如下:每个时间步,先判断当前电价属于高峰还是低谷。高峰时段且在放电时长覆盖范围内,则输出额定功率放电,SOC按放电能量和效率下降;低谷时段则充电,SOC上升;平段保持待机。同时用SOC上下限约束防止过充过放。
代码片段可以这样写:
function [p_batt, soc] = simulate_operation(P_rated, E_rated, price, load, param) n = length(price); p_batt = zeros(n, 1); soc = zeros(n, 1); soc(1) = 0.2 * E_rated; % 初始SOC设为20% eta = param.eta; soc_max = param.DoD; % 放电深度上限 for k = 1:n if price(k) >= param.high_threshold && soc(k) >= 0.1 * E_rated p_batt(k) = -min(P_rated, soc(k) * E_rated * eta); % 放电为负 elseif price(k) <= param.low_threshold && soc(k) <= soc_max * E_rated p_batt(k) = min(P_rated, (soc_max * E_rated - soc(k)) / eta); % 充电 else p_batt(k) = 0; end soc(k+1) = soc(k) - p_batt(k) / eta * (p_batt(k) > 0) - p_batt(k) * eta * (p_batt(k) < 0); soc(k+1) = max(0, min(E_rated, soc(k+1))); end end注意这里充放电功率对SOC更新公式的处理方式不同,放电时SOC按放电能量直接扣除,充电时SOC按充电功率乘以效率后累加。这个细节最容易错,很多人统一用p_batt / eta更新,结果充进去的能量比额定容量还多,最后SOC被截断,收益虚高。
4.4 配置扫描与NPV计算
配置扫描用双层for循环遍历功率和容量列表。每一步调用运行模拟函数,得到年放电电量,进而计算年收益。然后代入经济性函数计算NPV、动态回收期和IRR。
经济性函数的核心代码大概长这样:
function [npv, payback, irr] = calc_economic(rev_year, opex_year, init_cost, r, T) cashflow = ones(T, 1) * rev_year; cashflow = cashflow - opex_year; % 容量衰减,按每年容量衰减2%折算收益 for k = 1:T cashflow(k) = cashflow(k) * (1 - 0.02 * (k-1)); end npv = -init_cost + sum(cashflow ./ (1 + r).^(1:T)'); % 动态回收期 cum = cumsum(cashflow ./ (1 + r).^(1:T)'); [~, idx] = find(cum >= init_cost, 1, 'first'); if isempty(idx) payback = inf; else payback = idx - 1 + (init_cost - cum(idx-1)) / (cum(idx) - cum(idx-1)); end % 内部收益率 fun = @(x) -init_cost + sum(cashflow ./ (1 + x).^(1:T)'); if ~isnan(fzero(fun, [0.01 0.3])) irr = fzero(fun, [0.01 0.3]); else irr = NaN; end end初始化find函数的边界条件,如果idx为1,cum(idx-1)会越界,所以代码里要加一个判断。我在初期复现时就被这个越界问题卡了半小时,后来在循环前先判断首年累计收益是否已覆盖初始投资。
4.5 可视化输出:经济性热力图
全部配置组合计算完后,用contourf或imagesc画出功率—容量—NPV的三维热力图。横轴是额定容量MWh,纵轴是额定功率MW,颜色深浅代表NPV数值。图上可以自动标出NPV最优的配置点,用五角星或圆点突出显示。
出图代码简写如下:
figure; contourf(E_list, P_list, NPV_matrix, 20); colorbar; xlabel('额定容量/MWh'); ylabel('额定功率/MW'); title('不同功率容量配置下的NPV热力图');这张热力图是整个项目最有说服力的成果。业主不需要看代码,看这张图就能明白为什么推荐5MW/10MWh而不是6MW/12MWh。颜色最亮的区域就是经济上的甜点区,这个结论我们只需要,配上一张折线图展示最优配置下的SOC时序和净现金流累计曲线,整套方案报告就能直接拿出手。
5. 敏感性分析与方案优选
5.1 哪些参数最容易动摇结论
配置方案的经济性结论是建立在参数假设之上的,参数一变,结论可能完全反转。我复现时重点做了三组敏感性分析:
第一组是初始投资敏感性。电池成本从800元/kWh涨到1300元/kWh,最优配置的NPV可以从正值跌到负值。这说明了储能行业为什么如此依赖产业链降本,单位度电成本降300元,一个中型项目的利润空间完全不一样。
第二组是峰谷价差敏感性。峰谷价差从0.5元/kWh拉到0.9元/kWh,最优配置的功率和容量规模明显上移。价差越大的区域,配置越大的储能越划算。这也解释了为什么储能项目的可复制性不强,A地的经济配置拿到B地可能完全不成立。
第三组是运行效率敏感性。往返效率从0.85提高到0.93,年套利收益提升约9%,对NPV的影响大约在15%到20%之间。效率高的系统虽然初始投资可能略贵,但全生命周期算下来通常更划算。
5.2 不同配置方案的横评
把所有配置的经济性指标汇总后,我通常按三类来分:
经济最优方案:使NPV最大的配置组合,这是项目推荐的首选方案。但要注意,经济最优不代表技术最合理,如果NPV最大的方案把功率配得非常大,可能导致储能系统在高峰时段频繁满充满放,电池寿命衰减加快,这个隐患会被衰减模型捕捉到,但幅度可能不足。
稳健方案:在NPV次优但功率和容量都相对适中的配置。比如扫描结果中NPV最高的方案是6MW/12MWh,但5MW/10MWh是稍大范围内的次优解,这时候我倾向于推荐后者,因为项目审批、并网容量、变压器裕度等工程约束更宽松。
保守方案:初始投资小、回报周期短的方案。适用于业主资金压力大、对项目收益信心不足的情况。比如2MW/4MWh,投资不到700万,静态回收期在5到6年,风险可控。
横评的最终结论不能只看NPV最大值,要把技术约束和业主偏好放进去做综合评价。我在报告中用一个简单的加权打分表,把NPV、回收期、调峰效果、并网难度四个维度各占权重25%,最后选出综合得分最高的方案,这样各方人员都能看懂。
5.3 哪些结论是相对稳健的
在参数范围内反复扫描后,有几个结论在大多数情况下都成立:
储能配置规模与峰谷价差强正相关。价差低于0.5元/kWh时,光靠套利很难回本,必须叠加容量价值或补贴;价差高于0.8元/kWh时,项目经济性显著改善,可以适当放大配置。
功率与容量的比值不是固定1:2那么机械。在高峰时长较短的场景中,1:1.5的配比可能更优;在高峰时段较长的场景中,1:3甚至1:4更合适。这个结论必须在Matlab扫描中验证,不能靠经验拍脑袋。
项目的经济性对电池循环寿命没有想象中敏感。因为10年项目周期内,即使电池循环寿命只有4000次,按每天一次循环也够用10年以上,退一步说,循环寿命的边际影响主要发生在3000次以下。相比之下,衰减率更值得关注,每年衰减2%和3%的项目,第10年可用容量差了10个百分点,对末年收益影响很大。
6. 常见问题与实操坑点
6.1 问题速查表
复现和落地过程中,我遇到过的典型问题整理成了一张速查表,基本覆盖了这个项目99%的报错和结果偏差原因:
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| NPV高得离谱 | 低谷时段跨零点赋值错误,低谷电价未生效 | 检查电价向量,用plot画出一天96点曲线确认 |
| 回收期显示无穷大 | 首年累计净现金流未覆盖初始投资 | 检查参数设置,可能是价差过小或成本过高 |
| SOC长时间为0 | 充电功率大于低谷时段可充电量 | 调大容量功率比,或增加充电时段 |
| 最优配置全在扫描边界 | 参数范围设置过窄 | 扩大功率和容量的扫描范围重新计算 |
| IRR计算不收敛 | fzero初始区间不含零点 | 改用fminbnd或者fsolve,扩大搜索区间 |
| 年收益曲线前高后低太陡 | 年衰减率设置过高 | 把衰减率降到1%~2%,按线性衰减处理 |
每个问题的排查顺序都是先看输入数据,再看运行逻辑,最后检查财务公式。我自己的经验是,八成的问题出在电价序列赋值和SOC更新公式这两个点上,其余的才是财务框架问题。
6.2 评估中的细节坑
有几个细节是报告评审时候专家最容易挑刺的。
第一个是充电能量价格的口径。有些复现代码在算充电成本时,用的还是充电功率乘以低谷电价,但忽略了电池充电过程中PCS自身的损耗,这部分损耗最终也要从电网买电,成本应该计入。虽然只有几个百分点,但在项目收益本来就不厚的情况下,这几个百分点可能就是NPV正负的分界线。
第二个是容量价值兑现系数的设定。我见过很多报告把容量电费节省直接按削峰功率乘以容量电价满算,最后回收期算到4年以内,明显过于乐观。实际高峰期电网负荷曲线通常是尖峰之后还有肩峰,储能放电结束后的负荷可能仍然高于削减前峰值,这种情况下容量电费节省要大打折扣。我做可研时统一取0.5兑现系数,并且在报告中明确说明,等业主给出更精确的负荷持续曲线后再修正。
第三个是电池更换成本。有些项目周期长于电池寿命,中间要换一次电池。虽然现在很多厂家的循环寿命标到6000次以上,在10年项目周期内通常不需要整组更换,但个别极端运行策略下可能出现提前容量报废。代码里建议加一个判断:如果第n年累计循环次数超过寿命值,触发更换成本,并重置容量。
6.3 给初学者的三条建议
如果你打算用这套方法做自己的储能配置分析,有三件事越早知道越好:
先画图再跑数。拿到负荷数据和电价数据后,第一件事不是写代码,而是把负荷曲线和分时电价画在同一张图上,肉眼确认峰谷时段、峰值大小、价差水平。这一步能避免至少一半的低级错误。
参数表单独存成一个脚本文件。把电价、成本、效率全部独立放在para_init.m里,和主程序分离。每次调参数,只需要改这个文件,不需要在几百行代码里找变量。这样反复扫描时非常省心。
保留每一轮扫描的结果为.mat文件。配置扫描跑一次很快,但如果要对比不同价差、不同成本下的方案,重新跑一遍不如直接保存结果数据。用变量名加日期后缀保存,比如result_20250409_price07.mat,后续汇报时随时可以调出来复盘。
最后分享一点个人体会
这类EI复现项目,难点从来不在算法本身,而在于把论文里的抽象模型落回真实工程场景。论文里的调峰策略通常基于理想化的负荷曲线和固定电价,实际项目中,负荷波动、电价时段划分、变压器容量约束,每一个变量都在影响最优配置。我后来总结出一个习惯:凡是算出来的结论不直观,都先回去检查输入数据;凡是输入数据没问题但结论仍不合常理的,多半是运行策略的边界条件写错了。储能项目的经济性分析,本质上是在一堆假设中找最稳的那个平衡点,Matlab只是帮我们把这个平衡点给找出来的工具,真正的判断力还是来自对现场条件和业务逻辑的理解。希望这篇文章能帮你少走几步弯路,把方案做得又快又稳。