ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ADMM求解微网低碳多主体优化:EV演化与分布式协作

2026/10/1 14:44:44 拓冰建站 浏览量
ADMM求解微网低碳多主体优化:EV演化与分布式协作 简介面向智能电网、能源管理及低碳技术领域的研究者和学者这份PDF文档围绕“双碳”目标下的多主体协调优化问题完整复现了《考虑电动汽车用户演化的多主体低碳合作优化运行策略》论文重点涵盖绿证与碳交易融合建模、电动汽车用户演化博弈、服务费调整策略以及基于交替方向乘子法的微网运营商-负荷聚合商-电动汽车聚合商合作框架设计。文件内除论文摘要梳理外还提供了详细的数学建模过程、算法实现思路及可运行的Python示例代码例如绿证碳交易成本计算、用户效用动态更新等核心模块的代码与注释方便读者直接对照学习。压缩包共含一个PDF文档包体约一点零六兆已有一百一十五人学习。通过这份资料读者可深入理解证碳融合机制如何提升新能源消纳率掌握电动汽车集群可调度潜力评估与演化博弈模型的设计思路并学会利用交替方向乘子法处理复杂的分布式优化问题同时获得工程实现建议是一份兼具理论深度与代码实操价值的参考资料。1. ADMM 解决的是什么问题三方主体在低碳目标下如何「合作」又不交出隐私多主体优化是微网能量管理里最绕不开的话题尤其是 EV 渗透率上来以后微网运营商、负荷聚合商、电动汽车聚合商这三方只要共用一个配电网节点功率平衡就天然耦合。标题里「EV 用户演化 低碳合作 ADMM」三个词叠在一起翻译成落地问题就是三方各自算自己的账又要在一条 PCC 功率曲线上达成一致同时还要满足碳排放约束并且 EV 用户的充放电行为会随电价信号不断变化。ADMM 在这个场景的价值在于它不需要任何一方把成本函数、电池损耗模型、用户合同电价全部交出来只需要在迭代中交换边界功率和乘子信息就能收敛到一个近似全局最优的解。我最早接触这类问题是用集中式 KKT 条件硬解的三方目标合成一个大目标看起来完美实际跑业务数据时发现负荷聚合商根本不愿意把需求响应成本曲线透露给运营商。后来转向 ADMM才理解这类多主体问题真正的难点不是数学上能不能解而是各方愿不愿意把隐私数据拿出来。这篇文章按我复现类似论文工程的经验从选型逻辑、数学推导、Python 代码到参数调整和踩坑一步步讲清楚适合正在做微网能量管理论文复现的研究生也适合要做 EV 聚合调度的工程师参考。2. ADMM 与 EV 用户演化从集中式到分布式的选型逻辑2.1 为什么集中式优化在这个标题下会「黑匣子」集中式优化把三个主体的目标函数合成一个主问题看起来是求解效率最高的路径。但放在实际业务里它有三个硬伤。第一个是数据隐私负荷聚合商的用户合同、电动汽车聚合商的电池健康状态模型这些都是商业敏感数据没有主体愿意把内部参数上传到一个全局求解器里。第二个是扩展性一旦 EV 数量从 100 台变成 10000 台集中式问题规模膨胀求解时间直线上升。第三个是责任边界集中式求出来的调度结果是一个全局解但运行中出现偏差时谁该为这个偏差买单说不清楚。ADMM 的出发点是「协商而非合并」。每个主体保留自己的目标和约束只把耦合变量PCC 交换功率这种公共同步量拿出来迭代。你不需要信任对方只需要在数学上保证迭代收敛到全局一致。这个性质对微网多主体合作来说几乎是量身定做——运营商的调度权限、聚合商的响应能力、EV 车主的使用意愿这三件事在一个框架里用分布式计算完成比集中式求解更贴近工程落地场景。从算法复杂度角度说ADMM 把一个大 QP 分解成三个小 QP每个子问题规模小一个数量级。在商用求解器能接受的范围内三个小问题并行求解单次迭代耗时远小于集中式整体求解。EV 数量增加时只有电动汽车聚合商子问题的规模在涨运营商和负荷聚合商子问题完全不受影响这种按主体隔离的复杂度分布是做规模扩展时的核心优势。2.2 EV 用户演化从静态储能到动态响应行为很多第一次接触 EV 调度的工程师容易把 EV 聚合商当成一个单纯的储能系统来建模。固定功率上下限、固定容量、固定充放电效率然后塞进优化问题里跑。这在纯数学层面没有错但论文标题里特意加了「用户演化」这意味着 EV 的充放电行为不是恒定不变的用户会随着电价信号、激励政策、上一轮的实际收益调整自己的参与意愿。我在复现这类论文时一般用「出行链约束 响应度演化」两层的做法。出行链约束描述每辆 EV 接入聚合商的时间窗口到达时间、离开时间、起始 SOC、目标 SOC这是硬约束用户要开车就不能在这个时段充电。响应度演化则描述用户在电价激励下参与 V2G 的意愿变化比如激励高时愿意多放电激励不足时宁愿不参与。相关模型里常见的形式是EV 聚合商在迭代中对 EV 群设置一个响应比例参数该比例随上一轮电价信号更新近似模拟用户在多次博弈中的学习行为。这层演化逻辑是模型从「一次静态调度」走向「多轮迭代合作」的关键。ADMM 外循环中EV 聚合商根据上一轮的耦合电价调整响应度运营商看到响应度变化后再调整购电策略这种嵌套让模型的行为更接近真实世界。复现时要注意的是响应度作为状态演化参数应该放在 ADMM 外层更新而不是放进内层与功率变量同时优化否则问题变成非凸后面会详细展开。2.3 三方主体的目标分解与耦合机理把标题里的三方角色展开来看各自的决策变量和约束完全不同。微网运营商掌握分布式光伏、柴油发电机、储能系统目标是运营成本最小化同时要满足本地负荷和 PCC 功率平衡。负荷聚合商掌握可削减负荷和可转移负荷目标是用最小成本完成需求响应任务同时让用户舒适度损失可控。电动汽车聚合商掌握车队充放电资源目标是在满足出行需求的前提下通过充放电价差获取收益同时兼顾电池退化成本。三方在物理上通过 PCC 交换功率耦合在目标上通过碳排放配额和碳交易价格耦合。我在建模时最常用一张表来理清三方边界主体主要决策变量硬约束目标函数构成微网运营商柴油机出力、储能充放电、PCC购售电功率平衡、爬坡、SOC边界燃料成本 启停成本 碳惩罚负荷聚合商可削减/可转移负荷量削减容量、恢复时间响应补偿成本 用户舒适度损失EV聚合商每辆EV充放电功率出行链、SOC、电池退化充电成本 - 放电收益 退化成本耦合关系体现在两类约束上一类是功率平衡三方通过 PCC 交换功率之和为零另一类是碳配额共享三方各自的实际排放量之和不超过总配额超过部分按碳价购买。这两类约束都是典型的全局一致性约束写成 ADMM 形式时功率耦合用全局变量 z 表示 PCC 功率碳约束用全局碳价 λ 协调。两类约束用同一个增广拉格朗日框架迭代求解可以先处理功率收敛再加入碳价模块做双层迭代。3. 数学建模与 ADMM 迭代推导目标函数、耦合变量与乘子更新3.1 把三方问题写成可分解的优化模型先建立原始问题的紧凑形式再改写成 ADMM 标准形式。设主体 i 的局部决策变量为 x_ii MO、LA、EVA目标函数 f_i(x_i)包含运营成本、响应成本、电池退化成本。共享全局变量 z 代表 PCC 交换功率向量每个主体通过自己的局部变量对 PCC 功率做出贡献耦合约束是 x_i 到 z 的映射关系。原始形式是min Σ f_i(x_i) g(z)s.t. A_i x_i z, i ∈ {MO, LA, EVA}其中 A_i 是主体 i 到 PCC 功率的映射矩阵g(z) 代表碳配额罚函数和网络潮流约束。写成增广拉格朗日形式L_p(x, z, u) Σ f_i(x_i) g(z) Σ u_i^T (A_i x_i - z) (ρ/2) Σ ||A_i x_i - z||^2ρ 是惩罚参数控制一致性约束的收敛力度。这个模型的关键在于每个 f_i 都是主体私有的只有 A_i x_i - z 部分在每个迭代中需要交换隐私得到保护。关于 g(z)我在复现低碳类论文时会在里面加碳配额项比如 g(z) λ_c * max(0, E_total(z) - E_cap)。λ_c 是碳价或碳惩罚系数E_total(z) 是所有主体排放总量。这里要注意 max 算子带来的非光滑性——把碳约束写成一个均匀惩罚项放进目标ADMM 迭代时子问题仍然是可微的比硬约束更稳定。3.2 ADMM 三步迭代从 x 更新到 z 更新再到乘子更新改写成标准形式后采用 ADMM 的三步迭代结构每一步都只涉及一个子问题适合用独立的 QP 求解器处理。x 更新步每个主体独立求解x_i^{k1} argmin f_i(x_i) u_i^{kT} (A_i x_i - z^k) (ρ/2) ||A_i x_i - z^k||^2z 更新步协调者求解一致性变量z^{k1} argmin g(z) Σ u_i^{kT} (A_i x_i^{k1} - z) (ρ/2) Σ ||A_i x_i^{k1} - z||^2乘子更新步协调者更新对偶变量u_i^{k1} u_i^k ρ (A_i x_i^{k1} - z^{k1})这里的 z 更新步实际上是一个带碳惩罚的最小二乘投影当 g(z) 是凸函数时可以直接求闭式解。如果 g(z) 只包含二次项和线性项z 更新可以解析写成z^{k1} (Σ u_i^k ρ Σ A_i x_i^{k1} - λ_c * ∂g/∂z) / (3ρ 碳项二阶系数)我在写代码时会把这个解析解直接写进迭代循环避免每次更新 z 都要调用求解器能省掉一大部分运行时间。只有当碳约束形式太复杂、比如包含阶梯碳价或配额交易曲线时才需要把 z 更新也包成一个小 QP 来跑。3.3 乘子更新与收敛判据原始残差、对偶残差和 rho 的自适应调整乘子更新看起来只是把偏差累加到 u 上细节在符号和缩放形式。使用缩放形式时定义残差 r_i A_i x_i - z对偶变量重置为临时变量迭代步骤改写为x_i^{k1} argmin f_i(x_i) (ρ/2) ||A_i x_i - z^k s_i^k||^2z^{k1} 更新后再更新缩放对偶变量s_i^{k1} s_i^k (A_i x_i^{k1} - z^{k1})收敛判据看两条原始残差 r_k max_i ||A_i x_i^k - z^k||对偶残差 s_k ρ * ||z^k - z^{k-1}||。两个残差都小于容差 tol 时停止迭代。很多复现卡住是因为只看目标函数值目标函数在两个主体之间有小幅拉锯时已经接近收敛但迭代还在跑。判据要同时看原始和对偶不能只看一个。rho 参数直接决定收敛速度。我常用的经验是 rho 小的时候收敛到最优解精度高但迭代慢rho 大时收敛快但精度损失明显。工程上更推荐自适应 rho每 10 到 20 次迭代检查一次残差比如果原始残差远大于对偶残差就把 rho 乘 2反之除以 2强制两条残差同量级下降。4. Python 复现工程从数据准备到 ADMM 求解器核心代码4.1 工程文件组织与数据准备复现这个标题的工程我习惯把目录分成 data、models、solver、results 四块。data 下放基础负荷曲线、光伏出力曲线、EV 出行数据和碳配额参数models 下放各主体的目标函数和约束构造solver 下放 ADMM 主循环和对接求解器的适配层results 下放收敛日志和调度曲线。这样分层的好处是替换数据文件或换成另一篇论文的目标函数时只改 modelssolver 不用动。数据准备是第一个容易翻车的地方关键是量纲归一化。功率数据、碳排放数据、价格数据的数量级经常差着 10 倍以上不归一化直接进 ADMMrho 会变得异常敏感。# data_setup.py # 数据加载与归一化ADMM 对量纲极其敏感这是第一个坑 import pandas as pd import numpy as np # 典型 24 小时 96 点数据负荷和光伏读成千瓦 base_load pd.read_csv(data/base_load.csv, index_col0) pv_output pd.read_csv(data/pv_output.csv, index_col0) ev_travel pd.read_csv(data/ev_travel.csv) # 每辆EV的到达时段、离开时段、起始SOC T len(base_load) power_scale 1000.0 # 功率基准值统一到 1000 kW 级别 # 归一化到相近量纲避免 ADMM 罚项在数值上压过目标函数 p_load base_load[load_kw].values / power_scale p_pv pv_output[pv_kw].values / power_scale ev_num len(ev_travel) # EV 聚合商初始响应度按接入车辆比例初始化 alpha_0 0.6 # 初始参与 V2G 的用户比例论文复现时常见取 0.5-0.7这段代码的核心是 power_scale 这个基准值。负荷曲线如果是几百千瓦级别但光伏出力是几十千瓦级别不做归一化时 ADMM 的惩罚项会把小量纲对象直接淹没导致光伏曲线在迭代里几乎不变化。归一化后 rho 可以从 1 附近开始调而不是被迫去匹配单位差异。ev_travel 里每辆车的出行数据是这个模型的特色输入要保证每辆车都有到达时段、离开时段、初始 SOC 三个字段缺一不可。4.2 三个主体的子问题构造用 cvxpy 还是手写 QP主体子问题的构建是整个复现的核心我遇到过很多人在这一步纠结用什么求解器。工业上常用 Gurobi 或 Cplex但由于你在自己的机器上跑复现最常见的可靠方案是 cvxpy 加开源求解器把每个主体封装成一个独立的优化问题用参数接口接出耦合变量ADMM 迭代时只需要替换参数、重新求解。# models/ev_subproblem.py # EV 聚合商子问题出行链约束 响应度演化 电池退化成本 import cvxpy as cp import numpy as np def ev_aggregator_problem(T, ev_num): p_ev cp.Variable((ev_num, T)) # 每辆车每个时段的充放电功率, 正为充, 负为放 soc cp.Variable((ev_num, T1)) # SOC 轨迹, 多一列存初始值 constraints [] # 每辆车 SOC 范围实际行驶中用户不会让电量低于 20% constraints.append(soc[:, 0] 0.8) constraints.append(soc[:, 1:] 0.2) constraints.append(soc[:, 1:] 0.95) # 出行链硬约束离开时段 SOC 不低于用户目标值 # 这里 data 字段里带 leave_time 和 target_soc constraints.append(soc[:, leave_time] target_soc) # 功率上下限受限于车载充电机额定功率 constraints.append(p_ev -6.6) # 放电最大 6.6 kW constraints.append(p_ev 6.6) # 充电最大 6.6 kW # 目标函数充电成本 - 放电收益 电池退化惩罚 price cp.Parameter(T) # 电价由 ADMM 外层传入 response_ratio cp.Parameter(nonnegTrue) # EV 用户响应度 charge_cost cp.sum(cp.multiply(cp.maximum(p_ev, 0), price)) discharge_income cp.sum(cp.multiply(cp.minimum(p_ev, 0), price * 0.9)) degradation 0.02 * cp.sum(cp.power(p_ev, 2)) # 二次退化模型 problem cp.Problem(cp.Minimize( charge_cost - discharge_income degradation ), constraints) return problem, p_ev, soc这个函数里有几个参数在复现时需要重点调整。response_ratio 是 EV 用户演化在代码里的落点外层 ADMM 循环每轮根据电价回报更新这个比例内层 QP 只需要把它当作常数。degradation 系数 0.02 表示单次充放循环对电池寿命的惩罚强度值过大会让聚合商不愿意放电过小则放电过于激进论文复现时通常要扫一两轮量级。功率上下限的 6.6 kW 对应普通家用慢充如果复现的算例是快充站要改成 50 kW 级别。负荷聚合商和微网运营商的子问题结构更简单负荷聚合商只做可削减负荷的分配微网运营商则是柴油机出力和储能调度目标函数分别是线性成本和二次成本混合。三个子问题之间没有直接耦合唯一的耦合是每个子问题求解出来的 PCC 功率即 p_ev 的聚合曲线、运营商购电曲线、负荷聚合商的响应曲线在协调者处求和为零。4.3 ADMM 主循环协调 z 与乘子更新协调者的职责是收集三个主体的 PCC 功率需求更新全局 z再更新乘子把偏差反馈回各主体。这里容易犯错的一点是每个主体的局部决策向量和 z 的维度要严格对应上差一个时段错位会让残差永远收不干净。# solver/admm_main.py # ADMM 主循环z 更新 乘子更新 残差判据 rho 自适应 import numpy as np def admm_run(prob_mo, prob_la, prob_ev, max_iter200, tol1e-3): T 96 rho 1.0 # 缩放对偶变量 s初始取 0 即可 s_mo, s_la, s_ev [np.zeros(T) for _ in range(3)] z_pcc np.zeros(T) # 全局一致变量: PCC 交换功率 eta 0.6 # EV 用户响应度外层演化 history {r_prim: [], s_dual: []} for k in range(max_iter): # 内层求解三个子问题调度用统一约束格式 p_mo solve_mo(prob_mo, z_pcc, s_mo, rho) p_la solve_la(prob_la, z_pcc, s_la, rho) p_ev solve_ev(prob_ev, z_pcc, s_ev, rho, eta) # z 更新三方的加权平均相当于把偏差按 1/3 分配 z_pcc_new (p_mo p_la p_ev) / 3.0 # 乘子更新累积残差注意符号方向 s_mo s_mo rho * (p_mo - z_pcc_new) s_la s_la rho * (p_la - z_pcc_new) s_ev s_ev rho * (p_ev - z_pcc_new) # 原始/对偶残差计算 r_prim max(np.linalg.norm(p_mo - z_pcc_new), np.linalg.norm(p_la - z_pcc_new), np.linalg.norm(p_ev - z_pcc_new)) s_dual rho * np.linalg.norm(z_pcc_new - z_pcc) history[r_prim].append(r_prim) history[s_dual].append(s_dual) # 自适应 rho让原始残差和对偶残差同步下降 if k % 10 0 and k 0: if r_prim 10 * s_dual: rho rho * 2 elif s_dual 10 * r_prim: rho rho / 2 z_pcc z_pcc_new if r_prim tol and s_dual tol: break return z_pcc, history主循环的参数有三个要特别注意。rho 初值我一般从 1.0 开始如果残差震荡就下调到 0.1残差下降太慢就上调到 0.5 左右而不是直接按论文里的某个参数照抄。tol 建议先用 1e-3 验证收敛路径确认代码逻辑正确后再改到 1e-4一上来就跑 1e-6 会发现几百轮都收不下来。提供自适应逻辑是必要的固定 rho 遇到响应度演化导致的残差波动时容易原地打转自适应后虽然每十轮多两次判断整体迭代次数反而少三分之一。4.4 结果输出EV 充放电曲线与 PCC 功率曲线的验证要点跑完 ADMM 主循环后结果输出阶段最容易犯的错误是直接打印目标函数值然后根据目标值大小判断对不对。目标函数是三个主体各自求和分布式迭代时每个主体看到的电价不一样求和值没有直接物理意义。要看的第一个输出是三条 PCC 功率曲线叠加后是否归零这直接对应功率平衡约束。第二个输出是 EV 聚合商的充放电曲线是否还是在出行链约束的可行范围内特别是离开时段有没有 SOC 低于目标值。# results/report.py # 结果可视化PCC 功率平衡检查 EV 聚合曲线 import matplotlib.pyplot as plt plt.figure(figsize(10, 5)) plt.plot(z_pcc, labelPCC power, lw2) plt.plot(p_mo, --, labelMO contribution) plt.plot(p_la, -., labelLA contribution) plt.plot(p_ev, :, labelEVA contribution) plt.plot(p_mo p_la p_ev, -, labelsum check, lw1) plt.grid(True) plt.legend()如果 sum check 曲线偏离零点超过 0.01说明乘子更新逻辑有 bug去检查三个主体的变量符号约定。EV 聚合商放电到底是正值还是负值、运营商购电是正是负每个模型里定义都不同但最终的 sum check 必须为零。5. 复现避坑ADMM 参数、EV 演化与多主体耦合的 5 个常见问题5.1 rho 取 10 直接发散残差震荡不停现象rho 设为 10 后残差曲线不是单调下降而是来回震荡甚至第一轮迭代后目标值就翻了倍。原因数据没有做归一化负荷和光伏的量纲在千瓦级但碳惩罚项在百元级rho 过大时增广拉格朗日的二次项把原始目标函数直接压没了迭代只是在来回寻找惩罚项的极小点。解决把功率、价格、碳排三个量纲统一到同一数量级然后用 rho 从 0.1、0.5、1.0 三档试跑每档看前 20 轮残差下降速度。最优 rho 通常让残差在 30 轮内降一个量级降太慢说明 rho 偏小。5.2 EV 响应度放进内层优化目标函数出现锯齿现象目标函数整体在下降但每 5 到 10 轮会出现一个向上的毛刺而且残差曲线同时有波动。原因把 EV 用户响应度 eta 放进 cvxpy 的变量里和充放电功率同步优化导致问题变成了非凸的双线性项耦合。ADMM 的收敛性建立在每个子问题凸的基础上这个假设被破坏后内层求解器返回的只是局部点残差自然不稳定。解决把 eta 改成外层演化参数ADMM 每轮求解时 eta 固定只有所有功率变量收敛后再用当前电价更新一次 eta更新逻辑用简单的正反馈函数即可。5.3 终止容差设太小迭代 500 轮还在空转现象容差设成 1e-6200 轮迭代后原始残差还在 1e-4 上下浮动不降了。原因数值精度到极限了浮点误差和求解器内部的次优容差叠加固化的残差底噪就是下不去了。这是新手最容易踩的血泪教训大部分论文场景收敛到 1e-3 就可以用于对比策略1e-4 已经能支撑论文出图。解决用归一化残差而不是绝对残差取残差初值的 1e-3 作为终止条件同时设 max_iter 上限 200 轮两个条件谁先到谁停。日志里记录终止原因是残差达标还是迭代次数到顶。5.4 碳惩罚项和其他目标函数量级差几个数量级现象迭代收敛了但看结果发现 EV 聚合商完全不放电负荷聚合商也不做响应只有运营商的柴油机在出力。原因碳惩罚系数按论文原值抄但你的数据里碳排放量是吨级费用项是元级1 吨碳排放罚 80 元听起来合理在模型里却比功率成本大了几百倍直接把所有主体的行为推向了极端。解决给碳惩罚项前面加一个归一化系数让碳惩罚项在初始点的梯度和功率成本项在初始点的梯度量级相近。这个系数没有理论最优我一般的做法是跑一次不带碳项的解记录目标值中功率成本的数量级再把碳系数调到它的 5% 到 20% 之间。5.5 乘子符号方向反了迭代永远在「绕圈」现象三条 PCC 曲线每一轮都在改变符号上一轮 MO 是正的下一轮 LA 变成正的z_pcc 始终在零点附近振荡但幅度不减。原因缩放对偶变量的更新公式方向写反用了 s s - rho * (p - z)破坏了对偶可行性。解决严格按推导来s^{k1} s^k rho * (p^{k1} - z^{k1})每一步都用残差定义验证一遍符号。这个坑在初学 ADMM 时几乎人人都踩我做的时候把公式贴在代码注释栏里跑之前先按一个时段的数值手算一遍对齐了再跑全时段。6. 验证方法残差曲线、与集中式对比和 rho 自适应技巧验证一个 ADMM 复现是否成功不能只看残差降下去就收工要主动找「背叛证据」。我的做法是把模型在不改动任何参数的前提下合并成一个集中式 QP用同一个求解器直接算全局最优然后把 ADMM 的结果和它对比。目标值偏差在 1% 以内说明 ADMM 的收敛精度没问题PCC 功率曲线和集中式解的重合度能直观看出分布式计算的代价在哪里。残差曲线要画成对数坐标看的是形状而不是绝对值。正常收敛过程是原始残差和对偶残差同步下降两条线保持在一个量级带宽内如果一条降得快另一条横盘说明 rho 失衡需要用自适应调整。我用的是每 10 轮按残差比缩放 rho 的规则并限制缩放倍数在 0.2 到 5 倍之间防止某轮残差异常时把 rho 拉飞。另一个有用的技巧是加 Over-Relaxation把 z 更新后的结果做一次外推z z omega * (z_new - z)omega 取 1.6 左右在部分算例上能减少三分之一的迭代次数。验证收敛后我会把 EV 聚合商每轮迭代的电价传入参数记录成日志单独画一条电价响应曲线检查响应度演化是否和预期一致。这样做过之后模型才算真正闭环。我习惯把这个验证流程固定成一个脚本每次改完参数先跑集中式对比再跑 ADMM避免模型调优时改坏结构而不自知。这个习惯救了我好多次也让我对这个方向越做越有信心。多主体分布式优化真正值得投入的地方不在算法本身而在于它能让你在数据不出域的前提下把多方合作跑起来这件事做好了后续接任何业务场景都有价值。希望帮到你。本文还有配套的精品资源点击获取