ARTICLE DETAIL

资讯详情

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

考虑空间可调度特性的分布式电源与充电站联合配置方法

考虑空间可调度特性的分布式电源与充电站联合配置方法 我前阵子正好在研究电动汽车充电站和分布式电源的协同规划问题翻了不少文献很多方案都是把充电站和分布式电源分开做优化要么只考虑充电负荷的时间平移要么压根忽略了充电站本身对配电网潮流分布的直接影响。后来看到“考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法”这个方向一下子觉得思路通了。这篇文章我基于Matlab把整个模型和求解逻辑完整复现了一遍也跑通了算例对比。这篇文章就把我自己的理解、建模过程、代码结构和踩过的坑一次性写清楚给同样在做配电网规划、新能源接入或者EV充电设施布局的朋友一些参考。1. 为什么“先建充电站再配电源”的老思路行不通1.1 传统两阶段规划模式的天然缺陷过去做配电网规划常见的流程是先预测负荷增长再根据负荷需求确定变电站扩容和馈线改造方案最后才考虑分布式电源DG往哪儿装、装多大。这种模式在负荷增长平缓、电源形式单一的年代问题不大但放到电动汽车快速普及的背景下就暴露了两个非常直接的问题。第一个问题是充电站的接入位置会深刻改变配电网的潮流分布。快充站通常是大功率负荷单台快充桩功率能做到60kW甚至120kW以上一个中等规模的充电站同时段充电负荷可能达到兆瓦级。如果前期规划没有考虑这些集中负荷接入点等充电站建成投运后再去配DG往往会出现局部线路重载、电压越限DG的接入反而可能加剧某些节点的电压控制难度。后补式的DG配置几乎不可能做到全局最优。第二个问题是充电负荷本身具有很强的时空灵活性但这种灵活性如果不跟DG出力特性配合就白白浪费了。电动汽车用户选择充电站时会受价格信号、排队时间、导航推荐等因素影响这意味着同一个城市区域里充电需求可以在不同站址之间转移这就是空间上的可调度性。但传统规划里充电负荷往往被当成固定负荷处理充电站选址定容和DG选址定容各做各的两者的互补潜力完全没有释放。所以问题的本质是充电站和DG在配电网里是强耦合的一个决定负荷在哪集中一个决定电源在哪注入只有把它们放在同一个优化框架里才能让空间可调度特性真正变成规划层面的红利。1.2 联合配置与“空间可调度”的连接点在哪联合配置不是简单地把两个优化问题拼在一起关键是要有一个连接两者的中间变量。我实现这个模型时用的就是充电负荷在空间上的分配比例。具体来说把规划区域内的充电需求总量作为已知条件但每个充电站实际承接的负荷比例不是固定的。用户选择充电站的行为服从一定的分配规律比如跟充电价格、站址距离、等待时间相关。而DG的出力曲线和充电站的负荷曲线在时序上如果能匹配就能减少向上级电网购电的峰值功率。空间可调度特性在这里的作用是通过调整各充电站的负荷分配比例让充电负荷在空间维度上尽量靠近DG出力充沛的区域同时避免输电阻塞和电压越限。这个思路落到数学模型里就是让充电负荷分配系数成为决策变量的一部分。DG的选址定容影响节点电压和网络损耗充电站的位置容量影响负荷的空间分布而负荷分配系数直接决定了这两者能不能形成配合。换句话说联合配置模型比传统规划多了一个维度的控制手段——负荷的引导和控制。2. “空间可调度特性”这个提法到底在数学里怎么落地2.1 从物理意义到数学表达如果只是嘴上说充电负荷可调度优化模型里没法用那没有意义。我查了一些相关文献目前对这个特性的建模主要分两个层次。第一个层次是宏观比例约束。把整个规划区域内的充电需求看成一个总量在满足总需求不变的前提下各个充电站承担的负荷比例在一个可行域内调整。这个可行域的下界取决于最小服务能力或合同约定上界取决于充电站的最大容量和同时率。数学上就是一堆线性不等式约束比如某个充电站分配的负荷不能超过其装机容量的80%、不能低于其最小负荷率的30%等等。第二个层次是用户行为约束。空间可调度不是任意调度用户愿意去哪个充电站取决于价格差、绕行距离、排队时间。我在模型里用一个简化的Logit模型来描述这个行为充电站i被选择的概率跟它的综合成本充电价格时间成本成反比。这个概率决定了负荷分配的基础比例而模型可以通过调节价格信号来微调这个比例。所以最终的负荷分配系数不是完全自由的而是围绕用户自然选择结果的一个可控区间。2.2 我最终采用的建模方式我比较推荐的处理办法是把两个层次结合起来。先根据历史数据和用户行为模型算出每个充电站在自然状态下的基础负荷分配比例 (\alpha_i^0)然后引入一个可调度系数 (\delta_i)表示通过价格激励或导航引导可以实现的负荷转移比例上限。最终的分配比例 (\alpha_i) 满足[ \alpha_i \alpha_i^0 \Delta\alpha_i ]其中 (\Delta\alpha_i) 的取值范围是 ([- \delta_i, \delta_i])并且所有充电站的 (\Delta\alpha_i) 之和必须为零保证总量守恒。这个模型的好处是直观而且便于做敏感性分析——(\delta_i) 取0就退化成传统固定分配模式取大值就代表强空间调度能力。代码里我把这个逻辑封装成一个独立的约束函数输入是各充电站的基础分配比例和可调度系数输出是实际分配比例的可行域边界。这样做的好处是后续如果想升级成更精细的用户行为模型只需要重写这个函数不用动主优化框架。3. 联合配置的数学模型目标函数和约束条件怎么取舍3.1 目标函数年综合费用里藏着的规划逻辑联合配置模型的优化目标我采用的是最小化年综合费用这是配电网规划类问题最常用的口径。具体包括以下几项DG的年折算投资成本包括单位容量投资成本乘以安装容量再按使用寿命和折现率折算到每年。充电站的年折算投资成本包括充电桩设备成本、土地成本、配电设施改造成本。DG的年运行维护成本按发电量比例计算。充电站的年运行维护成本按充电量比例计算。向上级电网购电费用根据全年各时段的购电功率乘以分时电价计算。网络损耗费用把各支路的损耗功率累加起来乘以电价折算。这里有两点值得单独说。第一DG的投资成本不能只看单价还要考虑不同节点安装带来的附加成本差异比如有的节点需要额外改造开关设备有的节点接入条件好、成本低。我在代码里用了一个节点接入成本系数来体现这一差异。第二购电费用和网络损耗费用是运行层面的量大项它们跟DG和充电站的布局直接相关。如果DG装在负荷中心附近就近供电就能大幅降低购电和网损费用但受资源条件限制DG的安装位置往往有候选集限制不能随意选。3.2 约束条件的层次安排模型里的约束条件我是按四个层次组织的这样写代码的时候逻辑也清晰。第一层是潮流约束。这是配电网规划模型的地基。我这里用传统的DistFlow支路潮流方程采用二阶锥松弛处理非凸约束保证求解效率。对于辐射状配电网而言DistFlow是最常用的建模方式比直接列写牛顿-拉夫逊潮流方程更适合嵌入优化模型。第二层是节点电压和支路电流约束。节点电压上下限取0.93~1.07 pu这是配电网常见的运行要求。支路电流约束按各支路的载流量上限设置这里要注意不同线径的支路载流量差异很大不能所有支路用同一个上限否则算出来的结果在实际中没法用。第三层是DG和充电站的容量约束。DG的安装容量受候选节点的资源上限约束比如光伏受屋顶面积限制风机受选址空间限制。充电站方面每个候选站址最多建设一定数量的充电桩单桩功率固定所以站总容量是一个离散变量。这里我用了整数变量表示充电桩数量让问题变成了一个混合整数二阶锥规划MISOCP。第四层是运行层面的耦合约束。包括DG出力不能超过装机容量、DG渗透率约束DG总装机不超过系统最大负荷的一定比例、充电负荷总量守恒约束以及前面说的空间可调度比例约束。这一层是联合配置区别于独立配置的关键所在。约束条件不能一味堆得多因为每增加一个非线性约束求解难度都会大幅上升。我的原则是凡是影响规划合理性的约束必须保留凡是只影响运行细节的约束先用简化模型代替等规划方案确定了再在运行仿真阶段做精细化校验。这个“规划粗校、运行精校”的思路能有效控制模型规模。3.3 多时段运行模拟的必要性如果只用单一负荷水平做规划结果往往会过度保守或者过度激进。我采用的是典型日多时段模拟选取夏季工作日、冬季工作日和过渡季典型日每个典型日划分24个时段这样一年的运行成本就近似为三个典型日的运行成本乘以对应天数。这里比较麻烦的是DG出力和充电负荷在各个时段的耦合。光伏DG出力在午间高、夜间为零而充电负荷往往在晚间出现高峰如果没有储能DG和充电负荷在时间上的错配就只能通过向上级电网购电来平衡。空间可调度特性在这种场景下的价值更加突出——如果充电负荷能通过空间转移集中到DG出力较高区域的服务站就能减少高电价时段的购电量。代码中我用一个三维矩阵存各个典型日、各个时段、各个节点的负荷和DG出力然后通过循环逐时段求解潮流约束。这样做计算量会大一些但换来的是规划结果更贴近实际运行情况。4. 求解思路与Matlab实现框架从数学到代码4.1 为什么选择混合整数二阶锥规划这个模型如果做成单一的非线性规划用遗传算法或粒子群算法去求解也是常见做法但有两个问题一是收敛性没有保障多次运行可能得到不同结果二是离散变量充电桩数量和连续变量混在一起智能算法的处理要么用圆整法、要么特殊编码精度和效率都不理想。最终我选择了MISOCP原因很简单目标函数是线性的DistFlow二阶锥松弛后潮流约束是凸的整数变量只有充电桩数量维度可控可以直接调用现成的求解器比如Gurobi、CPLEX或者Matlab环境下的YALMIP工具箱。对于规模不大的配电网测试系统比如IEEE 33节点系统MISOCP可以在秒级到分钟级完成求解比智能算法稳定得多。而且求解器给出的解有最优性上界不用怀疑是不是陷入了局部最优。4.2 Matlab代码的整体架构整个Matlab实现我分成了4个模块模块一数据输入模块。包括配电网拓扑参数节点数、支路电阻电抗、负荷基准值、DG候选节点及资源上限、充电站候选站址及建设成本参数、典型日负荷曲线和DG出力曲线、分时电价、空间可调度系数。这些数据全部通过结构体或Excel文件读入方便在不同算例之间切换。模块二优化模型构建模块。使用YALMIP工具箱定义决策变量、目标函数和约束条件。这里需要特别注意YALMIP的变量定义语法为了避免不必要的麻烦我把所有连续变量统一用sdpvar定义整数变量用binvar或intvar定义然后在约束里用[]拼接所有约束条件。模块三求解与结果输出模块。调用Gurobi或CPLEX求解器求解完成后把DG的选址定容结果、充电站的选址定容结果、负荷分配比例、各节点电压、网络损耗等关键指标提取出来保存到Matlab工作区。模块四结果可视化模块。我习惯画三张图一张是配电网拓扑上的DG和充电站布局图一张是典型日各时段的总购电功率对比图一张是各节点电压分布对比图联合配置 vs 独立配置。4.3 关键代码片段解析下面这段代码是定义空间可调度约束的核心片段也是这个模型里我认为最关键的地方% 充电负荷分配比例约束 % alpha_i alpha0_i delta_alpha_i % sum(delta_alpha_i) 0 % -sigma_i delta_alpha_i sigma_i delta_alpha sdpvar(n_station, 1, full); % 负荷分配偏移量 alpha alpha0 delta_alpha; % 实际分配比例 % 总量守恒约束 Constraints [Constraints, sum(delta_alpha) 0]; % 调度能力上下限约束 Constraints [Constraints, -sigma_sd delta_alpha sigma_sd]; % 充电站容量约束分配的负荷不超过站点容量 station_power alpha .* total_charge_demand; Constraints [Constraints, station_power station_capacity];这段代码虽然简单但模型的意义都在这几行里了。sigma_sd就是空间可调度系数向量不同站点的调度能力不同。比如市中心站点周边充电选择多用户转移意愿强sigma_sd可以取0.3偏远站点周边没有替代站sigma_sd只能取0.05。还有一个需要注意的细节是DistFlow的二阶锥松弛实现。YALMIP里可以用cone命令很方便地表达二阶锥约束但如果直接用norm函数表达有时候求解器不识别我建议统一用cone来写% DistFlow 二阶锥约束示例支路ij % 设 P_ij, Q_ij 为支路有功无功潮流U_i 为电压幅值平方L_ij 为电流幅值平方 % 约束: ||[2*P_ij; 2*Q_ij; L_ij - U_i]||_2 L_ij U_i for k 1:length(branch) i branch(k, 1); j branch(k, 2); cone_expr [2*P_branch(k); 2*Q_branch(k); L_branch(k) - U_node(i)]; rhs_expr L_branch(k) U_node(i); Constraints [Constraints, cone(cone_expr, rhs_expr)]; end4.4 求解过程中的数值稳定性问题我在跑这个模型时遇到了几次求解器报数值问题的情况反复排查后总结出几个经验YALMIP里变量数量不多但约束矩阵的条件数可能很大尤其是电压量纲kV和功率量纲kW/MW混在一起的时候。建议把所有变量统一到标幺值体系下建模数值稳定性会好很多。整数变量的Big-M松弛系数不要取得太大否则会影响求解器的预处理效果。比如充电站容量约束里的Big-M取该站点最大可能充电功率的1.2倍就够了不要为图省事取10000这种大数。Gurobi的数值容差设置我一般把FeasibilityTol设为1e-6OptimalityTol设为1e-6IntFeasTol设为1e-5跑下来速度和稳定性都比较理想。5. 算例设计与结果解读联合配置到底省了多少钱5.1 算例设计IEEE 33节点系统上的对比实验我用的是修改版IEEE 33节点配电网系统做算例验证。系统基准电压12.66kV基准功率10MVA总负荷约3.7MW。在原有系统基础上做了以下修改设定了6个DG候选节点分别位于节点8、13、18、22、25、32每个节点的光伏装机上限在200kW到800kW之间。设定了4个充电站候选站址分别在节点15、21、26、30每个站最多可建10台60kW快充桩。充电需求总量按区域EV保有量折算设定为1.2MW某个典型日晚间高峰时段的平均功率。空间可调度系数分别设置为0、0.1、0.2、0.3四档做敏感性对比。在对比方案设计上我设置了三个方案方案A完全不考虑空间可调度性充电负荷按基础比例固定分配DG和充电站独立优化。方案B考虑空间可调度性可调度系数0.2但DG和充电站仍然独立优化。方案C考虑空间可调度性可调度系数0.2DG和充电站联合优化。5.2 结果解读三个方案之间差在哪先看年综合费用结果。方案A的年综合费用是基准值方案B因为多了负荷转移手段费用下降了约3.2%方案C因为联合优化DG布局和充电站布局互相匹配费用下降了约6.8%。这组数据说明两个问题。第一“有调度手段”本身就值钱哪怕不联合优化单纯利用空间可调度性转移充电负荷也能减少局部重载带来的损耗和购电成本。第二“调度手段联合优化”的效果不是简单叠加而是协作增效。联合优化会把DG往充电负荷可调度性强的区域多装一些同时把充电站往DG出力好的区域多建一些两者互相成就。从配置结果看方案C的DG总装机容量比方案A增加了约350kW但年购电费用反而下降了更多说明多出来的DG装机在空间分布上更合理直接覆盖了充电负荷集中区域。充电站的配置也有差异方案C倾向于在节点26和30多建桩因为这两个节点靠近DG装机点负荷转移后有更好的就地平衡条件。从电压质量看方案C在晚间充电高峰时段的节点最低电压为0.951pu方案A为0.934pu联合配置的电压改善效果明显。这背后逻辑是联合配置让部分充电负荷转移到了更靠近电源的节点减少了长距离输电造成的电压降落。5.3 可调度系数的敏感性分析多大的灵活性才有意义为了搞清楚空间可调度性对规划结果的实际影响我做了可调度系数从0到0.3的敏感性分析。结果如下表可调度系数年综合费用相对值DG总装机kW充电站总桩数最低节点电压pu01.0002450360.9340.10.9772600370.9410.20.9322800390.9510.30.9182950400.955从前三组数据看系数从0提升到0.2带来的收益增长明显但从0.2到0.3边际收益迅速下降。这说明空间可调度特性的价值不是线性的。原因在于可调度性提升后充电负荷会向优势站点集中但优势站点的容量有限、周边线路载流量有限很快会触碰瓶颈继续增加调度幅度只会带来微小的改善。这个结果的工程含义是做规划时不需要过度追求极端的空间调度能力。实际中用户对充电站选择的调整意愿也有限能实现20%左右的负荷转移已经相当可观对应的规划收益也基本吃到了。如果为了更高的可调度性强行压低充电价格或建设更多诱导设施投入产出比反而会下降。6. 代码实现过程中容易被忽略的细节和我的解决办法6.1 充电负荷总量守恒约束的陷阱这个坑我印象很深。刚开始写代码时我直接在约束里写了各充电站负荷之和等于总需求结果求解器一直报不可行。排查了很久才发现问题出在基础分配比例alpha0的归一化上。比如四个站的基础分配比例是0.3、0.3、0.2、0.2但其中有一个站的容量上限根本达不到30%的总需求。这时候如果直接套约束就会出现无解。解决办法是在构建模型前先做一次“基础方案可行性校验”把基础分配比例中超出站点容量的部分重新分配到其他站点或者把该站点的可调度系数设为零不允许它向更高比例转移。代码里我加了一段预处理逻辑% 基础分配比例修正 for i 1:n_station if alpha0(i) * total_demand station_capacity(i) excess alpha0(i) * total_demand - station_capacity(i); alpha0(i) station_capacity(i) / total_demand; % 把超额部分按比例分给还有余量的站点 remain_idx setdiff(1:n_station, i); remain_cap max(0, station_capacity(remain_idx) - ... alpha0(remain_idx) * total_demand); remain_cap_sum sum(remain_cap); if remain_cap_sum excess alpha0(remain_idx) alpha0(remain_idx) ... (excess / total_demand) * (remain_cap / remain_cap_sum); else error(基础方案不可行站点容量总余量不足); end end end6.2 DG容量和充电站容量的量纲一致性这个坑比较初级但容易犯。数据输入时DG的光伏装机上限用的是kW充电站单桩功率用的kW充电需求可能是MW而DistFlow潮流方程里通常用标幺值基准功率是10MVA。如果做潮流约束时忘了把单位统一会出现一个看似“可行”但实际完全错误的方案而且这种错误非常隐蔽因为数值上不会报错只有跟实际物理量对比时才发现差了好几个数量级。我的做法是所有输入数据统一为kW和kVar而在约束建模时统一除以系统的功率基准值转成标幺值。具体在代码里我会在数据输入模块的最后加一段单位换算逻辑base_power 10000; % 10MVA 基准 P_dg_pu P_dg_kW / base_power; P_station_pu P_station_kW / base_power; load_pu load_kW / base_power;这样到了优化模型里所有变量天然就是标幺值不会出现量纲混乱。6.3 求解时长与模型规模的平衡我在调试过程中发现如果把每个典型日的24个时段全部分开建模变量数量会膨胀得很快。以33节点系统为例24个时段 × DG变量 潮流变量 充电变量叠加起来直接导致求解时间从十几秒变成十几分钟。后来我做了两个优化把充电负荷曲线和DG出力曲线用3个典型时段聚合代替24个完整时段比如峰、平、谷三个时段。这样变量数量减少了8倍求解时间回到分钟级以内精度损失不到2%。在YALMIP中使用了循环构建约束而不是把所有约束写成一个巨大的矩阵。虽然YALMIP会自动处理但分块构建能让求解器前处理速度更快也更容易排查错误。当然如果系统规模更大可以考虑采用Benders分解或交替方向乘子法ADMM这类分解算法把联合优化问题拆成DG配置子问题和充电站配置子问题迭代求解。但对于中等规模配电网单层MISOCP已经足够了。6.4 与纯智能算法的对比感受我之前也用遗传算法做过一版联合配置模型对比下来的感受是遗传算法写起来灵活可以随意加非线性约束但调参实在费精力种群数、交叉率、变异率稍微变化结果就漂移。而且测试同一个算例跑10次可能给出3种不同的“最优方案”让人很不踏实。MISOCP框架下最优性有证明、求解可复现而且能输出对偶变量做灵敏度分析这是智能算法很难做到的。当然如果你需要处理的条件高度非线性且不可凸化比如包含详细充电排队模型那智能算法仍是更务实的选择。我的建议是能凸化就凸化不能凸化再用智能算法两者不是替代关系是不同场景下的工具选择。7. 这个模型还能往哪些方向扩展7.1 加入储能和需求响应的耦合优化目前的模型里空间可调度特性是唯一的负荷灵活性来源。但如果规划区域里同时配备储能系统时间维度的灵活性也可以引入。比如DG午间出力高峰时储能充电晚间充电负荷高峰时储能放电这样可以进一步平滑DG出力与充电负荷的时序错配。把储能容量和充放电策略也纳入联合优化模型会多一组决策变量和约束但收益也是明显的。我初步构想是把目标函数中增加储能投资成本和运维成本然后在运行约束里增加储能充放电状态约束和SOC递推方程。这类约束在MISOCP框架下也可以用二进制变量来表示充放电状态问题仍然是可解的。7.2 从单目标优化扩展到多目标权衡年综合费用最小化是规划的核心目标但不是唯一目标。实际工程中碳排放、DG消纳率、充电服务便利性、电网安全裕度都是重要的考量维度。如果把这些都纳入优化就变成多目标优化问题。可以用NSGA-II这类启发式方法求Pareto前沿也可以先用加权法把多目标合成单目标然后多次调整权重系数扫描Pareto前沿。后一种做法在MISOCP框架下实现起来更顺手因为每次求解都是确定性的Pareto前沿的质量也有保障。7.3 动态规划视角分期建设策略目前模型是单阶段静态规划也就是一次性确定DG和充电站的全部建设方案。但实际中充电负荷是逐年增长的DG的成本是逐年下降的最优建设方案大概率是分阶段的先建一部分充电站和DG等负荷增长到一定程度后再扩容或新建。把单阶段模型扩展成多阶段动态规划会增加一个时间维度变量数量成倍上升但结果会更贴近工程实际。用滚动优化的思路把多阶段问题分解成几个单阶段子问题逐步求解是目前我在尝试的方向。7.4 与交通网的耦合充电站规划本质上受交通流量控制用户去哪里充电、路径怎么选都由交通网络决定。把配电网规划和交通网络规划耦合起来构建电-交通耦合网络模型是当前这个方向的前沿。空间可调度特性的建模会更复杂因为负荷分配比例不再是简化的可调度系数而是需要模拟用户在不同交通路径和时间成本下的真实选择行为。这样的模型规模会大一个数量级求解思路也会更多元。但毫无疑问这是把“空间可调度”这个概念用得更深入的方向。我在实际跑通这个模型后的体会是联合配置的价值不在于模型多复杂、变量多全面而在于能不能抓住“空间”这个很多人忽略的维度。充电负荷不是固定在某个节点的死负荷它天生就是流动的DG的出力位置也不是随便挑的它受资源和并网条件约束。把两者放到一个优化框架里让负荷移动去适配电源这比单纯追求DG装机量或者充电站数量更有实际意义。最后分享一个写代码的小技巧无论是用YALMIP还是直接用求解器接口第一次建模时都先用小规模算例比如9节点系统、单个典型日、泵时段数跑通整个流程确认目标函数数值的量级合理、结果不违背物理直觉再逐步扩大算例规模。这比直接在33节点或更大系统上调试要省时间得多。我自己就在9节点系统上抓到了充电站容量约束里少写一个下界限制的低级错误这种错误放到大系统上排查起来相当折磨人。
返回列表