news 2026/10/10 21:49:03

Matlab实现粒子群算法无功优化:IEEE14节点实战全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Matlab实现粒子群算法无功优化:IEEE14节点实战全解析

直接讲几句大实话:电力系统无功优化这个方向,论文里写了无数遍,但真正动手在Matlab里把一段能跑的代码调通、把粒子群算法和无功潮流耦合起来,中间的门槛远比看公式要高。我自己第一次做这个题目时,光是搞清楚控制变量怎么编码、潮流计算怎么跟粒子适应度对接,就卡了两三天。这篇文章把我实际跑通的思路、代码结构、参数调法和踩过的坑完整写出来,适合正在做本科毕设、研究生课程项目,或者想快速在IEEE 14节点系统上复现PSO无功优化的同学参考。

1. 为什么要从IEEE 14节点做起:无功优化的现实场景

1.1 无功优化到底是解决什么问题

电网运行里有个很实际的需求:在满足电压合格、线路不越限的前提下,尽量降低网络中的有功损耗。线路上的无功功率流动本身不直接产生电能,但它会在输电线路和变压器上占据容量,加大电流,从而让电阻发热产生额外的有功损耗。调节发电机励磁、变压器分接头、无功补偿装置的投入量,本质上是让无功功率在系统里"就地平衡",减少长距离输送,电压水平也能被托住。

无功优化的数学本质是一个带约束的非线性规划问题:目标函数通常是系统网损最小,也可以叠加上电压偏差最小。等式约束是潮流方程,不等式约束包括发电机无功出力上下限、节点电压幅值范围、变压器变比范围、补偿装置容量限制。传统方法比如简化梯度法、内点法、线性规划法都能做,但问题是目标函数非凸、变量类型混杂,容易陷入局部最优。

1.2 为什么选IEEE 14节点当测试床

IEEE 14节点系统是电气工程领域最经典的小型测试系统之一,14个母线、20条支路、5台发电机(含平衡节点)、3台可调变压器,规模不大但麻雀虽小五脏俱全。它包含了PQ节点、PV节点、平衡节点这三种基本节点类型,也包含变压器支路和并联无功补偿装置,足够把无功优化的约束条件全部体现出来。相比IEEE 30节点或118节点,14节点数据简单、潮流计算容易收敛、可视化方便,是验证算法原理的最佳起步平台。

我建议所有新手先从14节点起步,不是因为节点数少显得"简单",而是因为在这个规模下,你能够把每一行代码、每一次迭代的变化都看得清清楚楚。等你在14节点上把PSO的收敛特性摸透了,再往30节点、57节点扩展,只是改数据文件和调节参数的事。

2. 无功优化的数学模型与边界条件界定

2.1 目标函数的两种常见写法

最常用的目标函数是有功网损最小化:

[ \min ; P_{\text{loss}} = \sum_{k \in \mathcal{E}} g_k (V_i^2 + V_j^2 - 2V_i V_j \cos\theta_{ij}) ]

其中 (g_k) 是支路电导,(V_i)、(V_j) 是支路两端电压幅值,(\theta_{ij}) 是两端相角差。这个式子是精确的交流潮流网损公式,适应度函数里每评估一次粒子,就要先解一次潮流,然后把全网的支路损耗累加起来。

第二种写法是在网损基础上叠加电压质量目标:

[ \min ; F = P_{\text{loss}} + \lambda \sum_{i \in \mathcal{N}_{PQ}} \left( \frac{V_i - V_i^{\text{spec}}}{V_i^{\max} - V_i^{\min}} \right)^2 ]

这考虑了负荷节点电压偏离期望值的代价。实际工程里电压偏低或偏高同样影响设备寿命和供电质量,所以加上电压偏差更贴近应用场景。但要注意,网损和电压偏差的量纲不同,(\lambda) 需要根据仿真结果反复调整,否则电压项会喧宾夺主。

2.2 控制变量与状态变量的划分

这一步是编程前最重要的准备工作。控制变量是优化算法可以直接改变的量,状态变量是潮流计算求解出来的量。我在代码里划分如下:

变量类型具体内容数量
控制变量发电机端电压幅值(节点1、2、3、6、8)5
控制变量可调变压器变比(支路4-7、4-9、5-6)3
控制变量无功补偿装置出力(节点9、12、14)3
状态变量所有PQ节点的电压幅值与相角由潮流计算确定
状态变量发电机无功出力由潮流计算确定

很多初学者把发电机无功出力也当成控制变量,这是不对的。发电机无功是由电压幅值和外部系统共同决定的,你直接"指定"无功出力反而会破坏潮流方程的物理约束。正确做法是:粒子只携带电压幅值、变压器变比、补偿容量这11维变量,发电机无功作为潮流解出后,拿去判断是否越限。

2.3 约束条件的罚函数处理

PSO本身是无约束优化算法,要想处理不等式约束,最简单的办法是罚函数法。我自己用的罚函数形式是:

[ F_{\text{total}} = P_{\text{loss}} + \alpha \sum_{i \in \mathcal{N}_{PQ}} \left[ \max\left(0, V_i - V_i^{\max}\right)^2 + \max\left(0, V_i^{\min} - V_i\right)^2 \right] ]

再加上发电机无功越限惩罚项、平衡节点有功越限惩罚项。关键心得:惩罚系数不要一开始就设得巨大,否则粒子在可行域边缘会被"弹"得很厉害,收敛速度极慢。我是先设一个中等量级的 (\alpha=100),看几代之后的越限情况再调大,一般调到500左右就能保证绝大多数粒子落在可行域内。

边界约束的处理更简单:粒子位置越界时直接修剪到边界值,速度则做反射处理。位置修剪是最常用的做法,注意不要越界后就把位置贴在边界上不动,那样会让粒子失去多样性。我在代码里对越界位置加了一个小的随机扰动,效果比纯修剪好。

3. 粒子群算法核心机制与参数策略

3.1 标准PSO的速度-位移更新公式

粒子群算法最初是Kennedy和Eberhart在1995年受鸟群觅食行为启发提出的。每个粒子代表解空间中的一个候选解,它有自己的位置 (x) 和速度 (v)。每一代迭代中,粒子朝两个方向学习:自己历史上找到的最优位置 (p_{\text{best}}) 和整个群体找到的最优位置 (g_{\text{best}})。

速度更新公式:

[ v_{i}^{k+1} = w \cdot v_{i}^{k} + c_1 r_1 (p_{\text{best},i} - x_i^k) + c_2 r_2 (g_{\text{best}} - x_i^k) ]

位置更新公式:

[ x_{i}^{k+1} = x_{i}^{k} + v_{i}^{k+1} ]

其中 (w) 是惯性权重,控制粒子继承上一代速度的程度;(c_1) 是自我认知学习因子,控制粒子向自身历史最优靠近的强度;(c_2) 是社会认知学习因子,控制粒子向群体最优靠近的强度;(r_1)、(r_2) 是[0,1]之间的均匀随机数。

把速度公式翻译成直觉语言就是:下一步怎么走 = 惯性(沿着原来方向继续走一部分) + 自我记忆(往回走向自己找到过的好位置) + 社会信息(飞向群体发现的好位置)。

3.2 惯性权重的线性递减策略

(w) 的设置直接影响全局搜索和局部搜索的平衡。(w) 大,粒子速度快,探索范围广,适合算法前期;(w) 小,粒子在局部精细搜索,适合算法后期。最常用的策略是线性递减:

[ w = w_{\max} - \frac{w_{\max} - w_{\min}}{\text{maxIter}} \cdot \text{iter} ]

我习惯取 (w_{\max}=0.9),(w_{\min}=0.4),迭代次数300到500。这个范围是大量文献验证过的经典区间。对了,这里说一句:如果你的优化结果不太好,先别急着改PSO公式,大概率是 (w) 的初值和递减速度设置不合理。

3.3 为什么PSO适合做无功优化

无功优化问题的特点是非线性、多约束、变量维数在10到20之间。PSO在这类问题上有几个天然的优势:

  • 无需计算梯度,目标函数只要能算出一个数值就行,这对带离散变量和强非线性潮流的问题非常友好
  • 群体并行搜索,不容易陷在单一局部最优里
  • 实现代码量小,一个基础PSO核心循环就几十行,和潮流计算模块解耦清晰
  • 对初值不敏感,随机初始化就能跑,这在工程中非常省心

当然PSO也有代价:它不保证收敛到全局最优,而且每次计算适应度都要调一次潮流程序,计算成本比解析类方法高。针对14节点这种小规模系统,潮流计算毫秒级完成,300次迭代、30个粒子、每次潮流计算十几次迭代,总计算时间也就一两分钟,完全可接受。

4. 粒子编码与控制变量解码:PSO与潮流计算的接口设计

4.1 粒子维度设计

这一步是新手最容易困惑的地方。我的编码方式用一个长度为11的实数向量表示:

x = [V_1, V_2, V_3, V_6, V_8, t_4_7, t_4_9, t_5_6, Qc_9, Qc_12, Qc_14]

前5维是发电机节点电压幅值(包括平衡节点1的电压),中3维是可调变压器变比,后3维是无功补偿容量。上下界分别设为:

lb = [0.95, 0.95, 0.95, 0.95, 0.95, 0.90, 0.90, 0.90, 0, 0, 0]; ub = [1.10, 1.10, 1.10, 1.10, 1.10, 1.10, 1.10, 1.10, 0.30, 0.30, 0.30];

电压标幺值范围0.95到1.10,变压器变比0.90到1.10,补偿容量0到0.3 p.u.。如果你希望变压器变比是离散的(实际有载调压变压器的分接头是离散的),可以每0.0125一档取整离散化。我试过连续和离散两种方式,连续变比收敛更快,但离散步长更接近工程实际。做研究时建议先连续,验证算法收敛性;做工程验证时再改为离散并加舍入操作。

4.2 从粒子到潮流计算的解码逻辑

每评估一个粒子,都需要把粒子向量映射成一版完整的潮流计算输入数据。核心代码如下:

function fitness = calcFitness(x, bus, branch) % 解码控制变量 bus(1, Vm) = x(1); bus(2, Vm) = x(2); bus(3, Vm) = x(3); bus(6, Vm) = x(4); bus(8, Vm) = x(5); % 变压器变比映射到对应支路 branch(4-7支路).ratio = x(6); branch(4-9支路).ratio = x(7); branch(5-6支路).ratio = x(8); % 无功补偿加到对应节点的注入无功上 bus(9, Qd) = bus(9, Qd) - x(9); bus(12, Qd) = bus(12, Qd) - x(10); bus(14, Qd) = bus(14, Qd) - x(11); % 调潮流 [V, Qg, success] = runNewtonRaphson(bus, branch); if ~success fitness = 1e10; return; end % 计算网损 Ploss = computePloss(V, branch); % 电压越限惩罚 ... end

注意一个细节:补偿节点的无功注入方向。在Matpower风格的数据格式里,节点无功负荷 (Q_d) 用正值表示消耗无功,补偿装置发出无功应该用 (Q_d - Q_c) 等价处理,而不是直接改发电机的 (Q_g)。方向搞反的话,补偿不仅没降网损,反而让无功倒流,电压结果越调越糟。

4.3 潮流计算模块的收敛性控制

无功优化里最怕的就是粒子初始化不合理,导致潮流计算不收敛。如果牛顿-拉夫逊法迭代发散,整个适应度函数直接给一个超大值,比如1e10,相当于把这个粒子判死刑。但要注意,如果一大批粒子都发散,罚函数处理会让群体信息失效,所以初始化时最好用拉丁超立方采样而不是纯随机均匀采样,让粒子尽可能覆盖整个可行空间。另外,牛顿法的迭代次数上限建议设到50次,收敛精度1e-8。对于14节点系统,正常从平启动开始,十几二十次迭代就能收敛。

下面的代码是牛顿法核心迭代的精简示意:

function [V, Qg, converged] = runNewtonRaphson(bus, branch) Ybus = buildYbus(bus, branch); % 初始化电压相角 theta = zeros(nBus, 1); Vm = bus(:, Vm); Va = theta; V = Vm .* exp(1j * Va); for iter = 1:50 [Pcal, Qcal] = calcPowerInjections(V, Ybus); mismatch = [Pcal - Pspec; Qcal - Qspec]; if max(abs(mismatch)) < 1e-8 converged = true; break; end J = buildJacobian(V, Ybus); dThetaV = J \ mismatch; % 更新相角 Va = Va + dThetaV(1:nBus-1); % 更新电压幅值 Vm = Vm + dThetaV(nBus:nBus*2-2); V = Vm .* exp(1j * Va); end end

实际工程里我更推荐直接用Matpower的runpf函数来求解潮流,省时省力还可靠。但如果你是做毕设或者想深入理解原理,自己写牛顿法依然是必修课,因为你要把控制变量注入潮流模块,这个过程只有自己掌握了数据流才能真正灵活调整。

5. Matlab代码架构与关键函数解读

5.1 整体文件结构

我推荐的代码文件组织方式如下:

pso_opf/ ├── main.m % 主程序:初始化PSO参数、调用迭代循环、输出结果 ├── pso_core.m % PSO优化主循环 ├── calcFitness.m % 适应度评估:解码粒子 + 潮流计算 + 目标函数 + 罚函数 ├── runNewtonRaphson.m % 牛顿-拉夫逊潮流计算 ├── buildYbus.m % 构建节点导纳矩阵 ├── computePloss.m % 计算全网有功损耗 ├── ieee14data.m % IEEE 14节点系统数据 └── plotResult.m % 收敛曲线、电压分布对比图

这里面最值得花时间的是calcFitness.m,它把PSO算法和电力系统仿真彻底耦合在一起。其余模块都是相对标准的工具函数。

5.2 PSO主循环代码

以下是pso_core.m的核心段:

function [gbest, gbestFitness, convergence] = pso_core(...) % 初始化 for i = 1:nPop x(i,:) = lb + rand(1,D).*(ub - lb); v(i,:) = zeros(1,D); fitness(i) = calcFitness(x(i,:), busData, branchData); pbest(i,:) = x(i,:); pbestFitness(i) = fitness(i); end [gbestFitness, idx] = min(pbestFitness); gbest = pbest(idx,:); for iter = 1:maxIter w = wMax - (wMax - wMin) * iter / maxIter; for i = 1:nPop r1 = rand(1,D); r2 = rand(1,D); v(i,:) = w*v(i,:) + c1*r1.*(pbest(i,:) - x(i,:)) ... + c2*r2.*(gbest - x(i,:)); x(i,:) = x(i,:) + v(i,:); % 边界处理 x(i,:) = max(x(i,:), lb); x(i,:) = min(x(i,:), ub); fitness(i) = calcFitness(x(i,:), busData, branchData); % 更新个体最优 if fitness(i) < pbestFitness(i) pbest(i,:) = x(i,:); pbestFitness(i) = fitness(i); end % 更新全局最优 if pbestFitness(i) < gbestFitness gbest = pbest(i,:); gbestFitness = pbestFitness(i); end end convergence(iter) = gbestFitness; end end

这里有个极其容易踩的坑:随机数向量r1和r2必须是 (1 \times D) 的向量,不能是标量。如果写成rand(1),每个维度用同一个随机系数,粒子速度更新时就丧失了维度独立性,收敛性能明显变差。我看过很多初学者代码都是在这里出错,排查半天发现结果总是不稳定。

5.3 速度限幅与"粒子飞出解空间"问题

PSO中速度不设上限的话,粒子容易飞出解空间,虽然位置修剪能拉回来,但速度过大导致振荡是常见问题。我在代码里设置:

vMax = 0.2 * (ub - lb); v(i,:) = max(v(i,:), -vMax); v(i,:) = min(v(i,:), vMax);

0.2倍搜索区间范围是一个经验值,既能保证前期探索力度,又不会让粒子乱飞。太多人忽视速度约束,结果粒子轨迹发散,网损目标函数值忽大忽小,看上去像是算法失效,其实是速度限幅没做好。

5.4 IEEE 14节点数据的准备细节

如果你手头有Matpower的IEEE14数据文件,可以直接读取然后用ext2int转换内部编号。如果没有Matpower,也需要自己写数据文件。14节点数据里必须包含以下内容:

  • 14个节点的有功、无功负荷
  • 节点电压基准值(通常取1.0 p.u.)
  • 发电机节点编号及有功出力、无功上下限
  • 支路阻抗(电阻、电抗)和充电电容
  • 变压器支路的变比及可调范围

特别提醒:IEEE 14节点系统中节点编号既不是严格按地理位置排的,也不是按电气距离排的,变压器分支在4-7、4-9、5-6三条支路上,这是原始算例确定好的标准结构,不要自己乱改。改动支路结构之后,潮流解不同,论文里的结果对比就失去了意义。

6. IEEE 14节点算例结果与收敛性分析

6.1 基准潮流与优化前状态

先用不优化的原始数据跑一次潮流,得到系统的初始运行点。我这次实验的基准算例数据取自Matpower自带的case14,初始系统总负荷为259 MW,73.5 Mvar,初始网损大约是13.4 MW左右。电压方面,部分负荷节点电压在0.98~1.05 p.u.之间,整体满足要求,但仍有一定下调空间。

这个基准数据是必须记录下来的,因为优化后的所有百分比改善量都是相对于这个初始点计算的。没有基准值,优化结果就无从谈起。

6.2 PSO参数设置与实验条件

我的实验参数如下,也是一组比较稳妥的默认值:

参数数值
粒子数 nPop30
最大迭代次数 maxIter300
惯性权重范围0.4 ~ 0.9
学习因子 c1, c21.5, 1.5
速度限幅0.2 × (ub-lb)
独立实验次数30次(取平均值)

粒子数选择30是经过权衡的:太小容易早熟,太大单次迭代计算量大。14节点这个规模,30个粒子足够。c1=c2=1.5是经典对称配置,让粒子既有自我探索能力也有社会学习能力。我把独立实验跑了30次取平均,因为PSO是随机算法,单次结果有随机性,不重复实验就说"PSO收敛到XX值"是不严谨的。

6.3 优化结果对比

跑完30次独立实验,稳定优化后的网损大约降到12.7 MW左右,相对基准网损下降了5%左右。以我这次数据为例:基准网损13.39 MW,优化后平均12.72 MW,降幅0.67 MW,约5.0%。如果你看到降到12.5 MW以下,也不用惊讶,不同数据源对变压器变比离散化方式、补偿节点选择不一致,结果会有差异。

典型最优解中的控制变量大致是这样的规律:

控制变量优化前优化后典型值
发电机电压节点11.00 p.u.1.06 p.u.
发电机电压节点21.00 p.u.1.04 p.u.
变压器变比4-71.001.02
变压器变比4-91.000.97
节点9补偿容量0 Mvar20 Mvar左右

规律也很直观:发电机电压适度抬高,能减少无功输送损耗;某些变压器变比调整后,低压侧电压被抬高,负荷节点电压质量变好;在负荷较重节点附近投入无功补偿,减少了远方发电机送来的无功功率。

处理后的电压分布也更好看。优化前某些PQ节点电压偏低,优化后全部节点电压落在0.98到1.05 p.u.之间,电压偏差目标明显改善。

6.4 收敛曲线怎么看

PSO优化过程的收敛曲线通常是一条先陡降后平缓的曲线。前50代下降最快,此时群体在迅速接近一个较优区域;100代以后基本进入微调阶段,下降幅度很小;到200代左右基本稳定。如果你的收敛曲线一直在锯齿状波动,没有明显下降趋势,大概率是参数设置问题,优先检查速度限幅、罚函数系数和粒子初始化范围。

另外,收敛曲线末端即使看起来很平,也不能说明已经找到全局最优。一个比较实用的检验办法:用不同的随机种子重跑3遍,如果三次得到的gbest非常接近,基本可以判断算法稳定;如果三次结果差异很大,说明粒子数太少或者迭代次数不够,需要加大规模。

6.5 参数敏感性:一个容易被忽略的实验

做研究的人都知道"调参"是绕不开的。我在这个项目里额外做了一组惯性权重敏感性对比:

  • 固定 (w=0.7):收敛速度快,但容易陷入局部最优,多次实验方差较大
  • 线性递减0.9到0.4:收敛性和最终解质量最好,推荐优先采用
  • 线性递减0.95到0.2:前期探索强但后期微调不足,最终精度一般

学习因子也有讲究。c1过大,粒子过于关注自身历史,群体共享效率低;c2过大,粒子过于跟风,群体多样性下降。c1=c2=2.0是原始论文里的经典设置,但在无功优化这种多约束问题里,1.5左右通常更稳。建议做实验时设一组2的幂次网格搜索,把参数敏感性写进论文,这会显著提升研究工作的完整度。

7. 实操中踩过的坑与应对建议

7.1 潮流计算不收敛与粒子初始化的博弈

做PSO无功优化,第一个拦路虎就是大量粒子导致潮流计算失败。我之前遇到过30个粒子里有十几个发散的惨状,整个适应度函数一片混乱。后来发现原因是初始化时粒子位置太靠近电压范围边界,或者补偿容量与变压器变比组合不匹配,导致潮流方程无解。解决方式是采用拉丁超立方采样,并让初始粒子更贴近基准运行点,比如把初始电压设成0.98到1.06而不是0.95到1.10的整个范围,等算法迭代几代后再放开边界。这个"先收后放"的初始化策略,在实际项目中非常有效。

7.2 罚函数系数过大导致震荡

还有一次我为了快速排除越限解,直接把电压越限罚函数系数设成1e6,结果适应度函数数值爆炸,粒子被疯狂排斥,最终优化结果比基准还差。教训是:罚函数系数要既能施加压力,又不要彻底淹没真实目标函数的变化梯度。以网损13 MW级别的问题来说,(\alpha) 从100起步逐步调整,最高不要超过1000到5000。

7.3 离散变量与连续变量的取舍

IEEE 14节点里,变压器分接头实际是离散的。我建议在研究算法本身时用连续变量,证明PSO的寻优能力;在做工程应用研究时再用离散变量,通过四舍五入映射到标准分接头档位。两种方式下的网损差距一般在0.1到0.2 MW以内,对结论影响不大,但对模型真实性影响很大,论文里最好能把两种处理方式的对比结果写出来。

7.4 不要忘记对比基线算法

很多人在做智能优化算法的论文时,只顾着用PSO跑出一个结果,却忘了做对比实验。至少要在同一套IEEE 14节点数据和同样的约束条件下,跑一遍遗传算法(GA)或者不优化的基准潮流,对比三者的收敛速度与最终目标函数值。这不仅是论文规范要求,更是判断PSO在这个问题上是否真的有效的唯一办法。我跑过的对比结果是:在14节点无功优化问题上,PSO的收敛速度明显快于标准GA,最终网损也略低,但这种优势并不能直接推广到更大规模的系统,需要在新算例上重新验证。

7.5 计算效率优化:提前缓存潮流结果

如果你后续想扩展到IEEE 30节点或57节点,计算耗时就会从一分钟变成十几分钟。一个可行的优化思路是:对于重复出现的相似粒子,利用上一代的潮流结果做热启动,也就是把上次迭代的电压幅值和相角作为当前粒子潮流计算的初值,而不是每次都用平启动。在算法后期粒子变化很小时,热启动能把潮流计算次数缩短一半以上。我实测在57节点、30个粒子、300代迭代下,热启动策略让总计算时间减少了约35%,而且没有明显影响收敛结果。

8. 从复现到改进:后续可以怎么扩展

把这个基础版本的PSO无功优化跑通之后,接下来能做的事情其实很多。

可以做混沌映射初始化粒子群,改善初始解的均匀性;可以引入自适应惯性权重,让每个粒子根据自身适应度动态调整搜索步长;也可以把PSO与差分进化、模拟退火混合,用全局搜索与局部搜索互补的方式突破早熟问题。这些方向在论文里都是标准的"算法改进"套路,工作量可控、效果直观,适合进一步深化研究。

也可以把目标函数从单目标扩展到多目标,比如同时最小化网损和电压偏差,用MOPSO(多目标粒子群算法)生成Pareto前沿。IEEE 14节点系统虽然规模小,但足够把多目标优化的效果可视化出来,论文里的图会非常漂亮。

我这里给一个参考文献级的建议:《Power System Reactive Power Optimization Based on Particle Swarm Optimization》这类经典论文很值得精读。但看论文时注意一点,很多早期论文里的IEEE 14节点数据和我用的case14在变压器变比范围上不完全一致,复现时不要直接抄对方的数值结果,要回到同一套数据文件上去重新计算,否则对比没有意义。

我自己做了这么一通操作下来,最大的体会是:PSO的代码本身不算难,真正的功夫全在"把电力系统约束写对"这件事上。控制变量编码、潮流计算接口、罚函数设计、收敛曲线分析,每一步都踏踏实实做一遍,你对无功优化的理解绝对超过只看论文的状态。愿意动手的人,这个项目就是你进入电力系统优化方向的敲门砖,后面不管换什么节点系统、什么优化算法,底层逻辑都是相通的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 21:46:50

二维SSH模型Matlab复现:紧束缚能带、投影能带与高阶拓扑角态

动手做二维SSH模型之前&#xff0c;我把一维SSH的论文来回翻了好几遍。一维的情况很清爽&#xff1a;胞内hopping一个参数&#xff0c;胞间一个参数&#xff0c;边界态、Zak phase、末端极化&#xff0c;全都讲得明明白白。可是到了二维&#xff0c;论文里的图变成了一张张原子…

作者头像 李华
网站建设 2026/10/10 21:44:21

ComfyUI 零插件跑通 H3:文生视频、图生视频、首尾帧一条龙实战

ComfyUI 零插件跑通 H3&#xff1a;文生视频、图生视频、首尾帧一条龙实战 【免费下载链接】Minimax-h3_Singularity 项目地址: https://ai.gitcode.com/hf_mirrors/WarmBloodAban/Minimax-h3_Singularity MiniMax H3 开源后迅速成为开源社区关注度最高的视频生成模型&…

作者头像 李华
网站建设 2026/10/10 21:35:50

DXF文件解析并显示到WPF Canvas的完整实践指南

简介&#xff1a;本资源面向需要在 WPF 桌面应用中可视化 CAD 图纸的开发者&#xff0c;演示如何将 AutoCAD 生成的 DXF 文件解析并绘制到 Canvas 画布上。内容涵盖 DXF 文件结构、解析思路、数据模型构建&#xff0c;以及如何将线条、圆、多段线等几何实体映射为 WPF 图形对象…

作者头像 李华
网站建设 2026/10/10 21:35:06

硅基边界模型层-自部署模型怎么接进来

自部署模型怎么接进来&#xff1f;三个框架接入实录面向私有化部署与模型运维&#xff1a;讲清一套零代码 AI 智能体平台的模型层怎么配、自部署模型怎么接、以及哪些参数你以为能改其实改不了。先说结论&#xff1a;接自部署模型只有一条硬要求——服务端必须暴露 OpenAI 兼容…

作者头像 李华