【优化布置】基于粒子群算法求解分布式发电机布置的优化问题附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
随着能源结构的调整和可持续发展理念的推进,分布式发电(DG)在电力系统中的应用越来越广泛。分布式发电机(DG)合理布置对于提升电力系统的运行效率、降低网络损耗、改善电能质量以及增强系统可靠性具有重要意义。然而,DG 布置的优化是一个复杂的非线性组合优化问题,涉及众多因素,如负荷分布、网络拓扑、DG 类型与容量等。粒子群算法(PSO)作为一种高效的智能优化算法,具有概念简单、易于实现、收敛速度快等优点,被广泛应用于求解此类优化问题。
粒子群算法原理
(一)基本概念
粒子群算法模拟鸟群觅食行为,将优化问题的解看作搜索空间中的粒子。每个粒子都有自己的位置和速度,位置表示问题的一个潜在解,速度决定粒子在搜索空间中的移动方向和步长。所有粒子在搜索空间中根据自身经验(个体最优解)和群体经验(全局最优解)不断调整自己的位置,以寻找最优解。
(二)算法流程
- 初始化
:随机生成一定数量的粒子,每个粒子的初始位置在分布式发电系统的可行解空间内随机确定,速度也初始化为一个随机值。例如,对于一个考虑在n个候选节点布置 DG 的问题,粒子的位置可以表示为一个n维向量,向量的每个元素表示该节点是否布置 DG(0 表示不布置,1 表示布置)。
- 适应度计算
:根据设定的优化目标,计算每个粒子的适应度值。在 DG 布置优化中,常见的优化目标包括网络损耗最小、电压稳定性增强、发电成本最低等。以网络损耗最小为例,通过建立电力系统潮流模型,将粒子的位置(即 DG 布置方案)代入模型,计算出对应的网络损耗值作为该粒子的适应度。
- 个体最优与全局最优更新
:每个粒子将当前位置的适应度与自身历史最优位置(个体最优解,pbest)的适应度进行比较,如果当前适应度更好,则更新pbest。然后,所有粒子的pbest再与全局最优解(gbest)进行比较,若有更优的pbest,则更新gbest。
- 速度与位置更新
:根据以下公式更新粒子的速度和位置:
基于粒子群算法的求解步骤
- 问题初始化
:确定分布式发电系统的网络拓扑、负荷分布、DG 候选位置及相关参数,设定粒子群算法的参数,如粒子数量、最大迭代次数、惯性权重、学习因子等。
- 粒子编码
:将 DG 布置方案编码为粒子的位置。例如,对于一个有n个候选节点的系统,可以用一个n维二进制向量表示粒子位置,向量的每个元素对应一个候选节点,0 表示该节点不布置 DG,1 表示布置 DG。
- 适应度函数确定
:根据选定的优化目标(如网络损耗最小、电压稳定性增强、发电成本最低或综合目标),结合约束条件,确定适应度函数。
- 粒子群算法迭代求解
:按照粒子群算法流程,进行初始化、适应度计算、个体最优与全局最优更新、速度与位置更新等操作,不断迭代直至满足终止条件。
- 结果分析与验证
:得到最优布置方案后,对其进行详细分析,如计算网络损耗、电压分布、发电成本等指标的改善情况,并通过电力系统仿真软件(如 MATLAB/PowerSystem Toolbox、PSCAD/EMTDC 等)进行验证,确保方案的可行性和有效性。
⛳️ 运行结果
📣 部分代码
function [RugiRugi,ProblemSistem,VMin,VMax,Qg,bahayaGenerator]=LoadFlow_100(busdata,linedata,P,Q,Position,jum_DG,k,GenRestric)
% ===========load flow ==============================%
basemva = 100; accuracy = 0.001; accel = 1.8; maxiter = 100;
% Bus Bus Voltage Angle ---Load--- -----Generator----- Shunt
% No code Mag. Degree MW Mvar MW Mvar Qmin Qmax Mvar
% IEEE 30-BUS TEST SYSTEM
% Bus Bus Voltage Angle ---Load---- -------Generator------------Static Mvar
% No code Mag. Degree MW Mvar MW Mvar Qmin Qmax +Qc/-Ql
% busdata=[1 1 1.05 0 0 0 260.2 -16.1 0 0 0
% 2 2 1.043 -5.48 21.7 12.7 40 50 -40 50 0
% 3 0 1.021 -7.96 2.4 1.2 0 0 0 0 0
% 4 0 1.012 -9.62 7.6 1.6 0 0 0 0 0
% 5 2 1.01 -14.37 94.2 19 0 37 -40 40 0
% 6 0 1.01 -11.34 0 0 0 0 0 0 0
% 7 0 1.002 -13.12 22.8 10.9 0 0 0 0 0
% 8 2 1.01 -12.1 30 30 0 37.3 -10 40 0
% 9 0 1.051 -14.38 0 0 0 0 0 0 0
% 10 0 1.045 -15.97 5.8 2 0 0 0 0 0.19
% 11 2 1.062 -14.39 0 0 0 16.2 -10 24 -8.5
% 12 0 1.057 -15.24 11.2 7.5 0 0 0 0 0
% 13 2 1.05 -15.24 0 0 0 10.6 -10 24 -10
% 14 0 1.042 -16.13 6.2 1.6 0 0 0 0 0
% 15 0 1.038 -16.22 8.2 2.5 0 0 0 0 0
% 16 0 1.045 -15.83 3.5 1.8 0 0 0 0 0
% 17 0 1.04 -16.14 9 5.8 0 0 0 0 0
% 18 0 1.028 -16.82 3.2 0.9 0 0 0 0 0
% 19 0 1.026 -17 9.5 3.4 0 0 0 0 0
% 20 0 1.03 -16.8 2.2 0.7 0 0 0 0 0
% 21 0 1.033 -16.42 17.5 11.2 0 0 0 0 0
% 22 0 1.033 -16.41 0 0 0 0 0 0 0
% 23 0 1.027 -16.61 3.2 1.6 0 0 0 0 0
% 24 0 1.021 -16.78 8.7 6.7 0 0 0 0 0.043
% 25 0 1.017 -16.35 0 0 0 0 0 0 0
% 26 0 1 -16.77 3.5 2.3 0 0 0 0 0
% 27 0 1.023 -15.82 0 0 0 0 0 0 0
% 28 0 1.007 -11.97 0 0 0 0 0 0 0
% 29 0 1.003 -17.06 2.4 0.9 0 0 0 0 0
% 30 0 0.992 -17.94 10.6 1.9 0 0 0 0 0];
%
busdata(:,5:6)=busdata(:,5:6)*1;
for a=1:jum_DG
busdata((Position(k,a)),7)=busdata((Position(k,a)),7)+P(k,a);
busdata((Position(k,a)),8)=busdata((Position(k,a)),8)+Q(k,a);
end
% Line code
% Line code
% Bus bus R X 1/2 B = 1 for lines
% nl nr p.u. p.u. p.u. > 1 or < 1 tr. tap at bus nl
% linedata=[1 2 0.0192 0.0575 0.02640 1
% 1 3 0.0452 0.1852 0.02040 1
% 2 4 0.0570 0.1737 0.01840 1
% 3 4 0.0132 0.0379 0.00420 1
% 2 5 0.0472 0.1983 0.02090 1
% 2 6 0.0581 0.1763 0.01870 1
% 4 6 0.0119 0.0414 0.00450 1
% 5 7 0.0460 0.1160 0.01020 1
% 6 7 0.0267 0.0820 0.00850 1
% 6 8 0.0120 0.0420 0.00450 1
% 6 9 0.0 0.2080 0.0 1
% 6 10 0 .5560 0 1
% 9 11 0 .2080 0 1
% 9 10 0 .1100 0 1
% 4 12 0 .2560 0 1
% 12 13 0 .1400 0 1
% 12 14 .1231 .2559 0 1
% 12 15 .0662 .1304 0 1
% 12 16 .0945 .1987 0 1
% 14 15 .2210 .1997 0 1
% 16 17 .0524 .1923 0 1
% 15 18 .1073 .2185 0 1
% 18 19 .0639 .1292 0 1
% 19 20 .0340 .0680 0 1
% 10 20 .0936 .2090 0 1
% 10 17 .0324 .0845 0 1
% 10 21 .0348 .0749 0 1
% 10 22 .0727 .1499 0 1
% 21 22 .0116 .0236 0 1
% 15 23 .1000 .2020 0 1
% 22 24 .1150 .1790 0 1
% 23 24 .1320 .2700 0 1
% 24 25 .1885 .3292 0 1
% 25 26 .2544 .3800 0 1
% 25 27 .1093 .2087 0 1
% 28 27 0 .3960 0 1
% 27 29 .2198 .4153 0 1
% 27 30 .3202 .6027 0 1
% 29 30 .2399 .4533 0 1
% 8 28 .0636 .2000 0.0214 1
% 6 28 .0169 .0599 0.065 1];
%
%---------------------------------------------------------------------------Pembentukan Matrix Ybus
%j=sqrt(-1); i = sqrt(-1);
nl = linedata(:,1);nr = linedata(:,2); R = linedata(:,3);
X = linedata(:,4); Bc = j*linedata(:,5); a = linedata(:, 6);
nbr=length(linedata(:,1));nbus = max(max(nl), max(nr));
Z = R + j*X; y= ones(nbr,1)./Z; % admitansi cabang
for n = 1:nbr
if a(n) <= 0, a(n) = 1; else end
Ybus=zeros(nbus,nbus); % inisialisasi Ybus
% pembentukan elemen off diagonal
for k=1:nbr;
Ybus(nl(k),nr(k))=Ybus(nl(k),nr(k))-y(k)/a(k);
Ybus(nr(k),nl(k))=Ybus(nl(k),nr(k));
end
end
% pembentukan elemen diagonal
for n=1:nbus
for k=1:nbr
if nl(k)==n
Ybus(n,n) = Ybus(n,n)+y(k)/(a(k)^2) + Bc(k);
elseif nr(k)==n
Ybus(n,n) = Ybus(n,n)+y(k) +Bc(k);
else, end
end
end
Ybus;
%-------------------------------------------------------------------Load Flow dengan Newton-Raphson
ns=0; ng=0; Vm=0; delta=0; yload=0; deltad=0;
nbus = length(busdata(:,1));
for k=1:nbus
n=busdata(k,1);
kb(n)=busdata(k,2);Vm(n)=busdata(k,3);delta(n)=busdata(k, 4);
Pd(n)=busdata(k,5); Qd(n)=busdata(k,6); Pg(n)=busdata(k,7); Qg(n) = busdata(k,8);
Qmin(n)=busdata(k, 9); Qmax(n)=busdata(k, 10);
Qsh(n)=busdata(k, 11);
if Vm(n) <= 0 Vm(n) = 1.0; V(n) = 1 + j*0;
else delta(n) = pi/180*delta(n);
V(n) = Vm(n)*(cos(delta(n)) + j*sin(delta(n)));
P(n)=(Pg(n)-Pd(n))/basemva;
Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;
S(n) = P(n) + j*Q(n);
end
end
for k=1:nbus
if kb(k) == 1, ns = ns+1; else, end
if kb(k) == 2 ng = ng+1; else, end
ngs(k) = ng;
nss(k) = ns;
end
Ym=abs(Ybus); t = angle(Ybus);
m=2*nbus-ng-2*ns;
maxerror = 1; converge=1;
iter = 0;
% Mulai Iterasi
clear A DC J DX
while maxerror >= accuracy & iter <= maxiter % Tes untuk Maks. Daya yang Tidak Sesuai
for i=1:m
for k=1:m
A(i,k)=0; %Inisialisasi Matrix Jacobian
end, end
iter = iter+1;
for n=1:nbus
nn=n-nss(n);
lm=nbus+n-ngs(n)-nss(n)-ns;
J11=0; J22=0; J33=0; J44=0;
for i=1:nbr
if nl(i) == n | nr(i) == n
if nl(i) == n, l = nr(i); end
if nr(i) == n, l = nl(i); end
J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));
if kb(n)~=1
J22=J22+ Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));
J44=J44+ Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
else, end
if kb(n) ~= 1 & kb(l) ~=1
lk = nbus+l-ngs(l)-nss(l)-ns;
ll = l -nss(l);
% element off diagonal J1
A(nn, ll) =-Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));
if kb(l) == 0 % element off diagonal J2
A(nn, lk) =Vm(n)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));end
if kb(n) == 0 % element off diagonal J3
A(lm, ll) =-Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n)+delta(l)); end
if kb(n) == 0 & kb(l) == 0 % element off diagonal J4
A(lm, lk) =-Vm(n)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));end
else end
else , end
end
Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33;
Qk = -Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11;
if kb(n) == 1 P(n)=Pk; Q(n) = Qk; end % Swing bus P
if kb(n) == 2 Q(n)=Qk;
if Qmax(n) ~= 0
Qgc = Q(n)*basemva + Qd(n) - Qsh(n);
if iter <= 7 % Antara Iterasi Ke-2 dan Ke-6
if iter > 2 % MVAR Bus-Bus Generator dites.
if Qgc < Qmin(n), % Jika tidak dalam batas Vm(n)
Vm(n) = Vm(n) + 0.01; % Maka Dirubah ke Langkah 0.01pu
elseif Qgc > Qmax(n), % untuk Memberi MVAR dengan Batas
Vm(n) = Vm(n) - 0.01;end % yang telah Ditentukan
else, end
else,end
else,end
end
if kb(n) ~= 1
A(nn,nn) = J11; %element diagonal J1
DC(nn) = P(n)-Pk;
end
if kb(n) == 0
A(nn,lm) = 2*Vm(n)*Ym(n,n)*cos(t(n,n))+J22; %element diagonal J2
A(lm,nn)= J33; %element diagonal J3
A(lm,lm) =-2*Vm(n)*Ym(n,n)*sin(t(n,n))-J44; %element diagonal J4
DC(lm) = Q(n)-Qk;
end
end
DX=A\DC';
for n=1:nbus
nn=n-nss(n);
lm=nbus+n-ngs(n)-nss(n)-ns;
if kb(n) ~= 1
delta(n) = delta(n)+DX(nn); end
if kb(n) == 0
Vm(n)=Vm(n)+DX(lm); end
end
maxerror=max(abs(DC));
if iter == maxiter & maxerror > accuracy
fprintf('\nPERINGATAN : Solusi Iteratif tidak Konvergen Setelah')
fprintf('%g', iter), fprintf(' iterasi.\n\n')
fprintf('Tekan Enter untuk Mengakhiri Iterasi dan Cetak Hasil Komputasi\n')
converge = 0; pause, else, end
end
if converge ~= 1
tech= (' SOLUSI ITERATIF TIDAK KONVERGEN'); else,
tech=(' Solusi Aliran Daya dengan Metode Newton-Raphson');
end
V = Vm.*cos(delta)+j*Vm.*sin(delta);
deltad=180/pi*delta;
i=sqrt(-1);
k=0;
for n = 1:nbus
if kb(n) == 1
k=k+1;
S(n)= P(n)+j*Q(n);
Pg(n) = P(n)*basemva + Pd(n);
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);
Pgg(k)=Pg(n);
Qgg(k)=Qg(n); %june 97
elseif kb(n) ==2
k=k+1;
S(n)=P(n)+j*Q(n);
Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);
Pgg(k)=Pg(n);
Qgg(k)=Qg(n); % June 1997
end
yload(n) = (Pd(n)- j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2);
end
busdata(:,3)=Vm'; busdata(:,4)=deltad';
Pgt = sum(Pg); Qgt = sum(Qg); Pdt = sum(Pd); Qdt = sum(Qd); Qsht = sum(Qsh);
%clear A DC DX J11 J22 J33 J44 Qk delta lk ll lm
%clear A DC DX J11 J22 J33 Qk delta lk ll lm
% %---------------------------------------------------------------------------------------Data BusOut
% disp(tech)
% fprintf(' Maksimum Daya Tidak Sesuai = %g \n', maxerror)
% fprintf(' Nomor Iterasi = %g \n\n', iter)
% head =[' Bus Voltage Angle ------Load------ ---Generation--- Injected'
% ' No. Mag. Degree MW Mvar MW Mvar Mvar '
% ' '];
% disp(head)
% for n=1:nbus
% fprintf(' %5g', n), fprintf(' %7.3f', Vm(n)),
% fprintf(' %8.3f', deltad(n)), fprintf(' %9.3f', Pd(n)),
% fprintf(' %9.3f', Qd(n)), fprintf(' %9.3f', Pg(n)),
% fprintf(' %9.3f ', Qg(n)), fprintf(' %8.3f\n', Qsh(n))
% end
% fprintf(' \n'), fprintf(' Total ')
% fprintf(' %9.3f', Pdt), fprintf(' %9.3f', Qdt),
% fprintf(' %9.3f', Pgt), fprintf(' %9.3f', Qgt), fprintf(' %9.3f\n\n', Qsht)
%
%----------------------------------------------------------------Line Flow
%============================CONSTRAIN TEGANGAN=================
%voltageProblem=0;
VMin=min(Vm);
VMax=max(Vm);
if VMin<0.9 || VMax>1.1
voltageProblem=1;
else
voltageProblem=0;
end
an=length(GenRestric);
bahayaGenerator(1)=0;
for n=2:an
%bahayaGenerator(n)=0+bahayaGenerator(n-1);
if Qg(GenRestric(n))<busdata(GenRestric(n),9) || Qg(GenRestric(n))>busdata(GenRestric(n),10)
bahayaGenerator(n)=1;
else
bahayaGenerator(n)=0;
end
end
%===============================================================
SLT = 0;
% fprintf('\n')
% fprintf(' Line Flow and Losses \n\n')
% fprintf(' --Line-- Power at bus & line flow --Line loss-- Transformer\n')
% fprintf(' from to MW Mvar MVA MW Mvar tap\n')
for n = 1:nbus
busprt = 0;
for L = 1:nbr;
if busprt == 0
P(n)*basemva;%fprintf(' \n'), fprintf('%6g', n), fprintf(' %9.3f', P(n)*basemva)
Q(n)*basemva;%abs(S(n)*basemva);fprintf('%9.3f', Q(n)*basemva), fprintf('%9.3f\n', abs(S(n)*basemva))
busprt = 1;
else, end
if nl(L)==n k = nr(L);
In = (V(n) - a(L)*V(k))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(n);
Ik = (V(k) - V(n)/a(L))*y(L) + Bc(L)*V(k);
Snk = V(n)*conj(In)*basemva;
Skn = V(k)*conj(Ik)*basemva;
SL = Snk + Skn;
SLT = SLT + SL;
elseif nr(L)==n k = nl(L);
In = (V(n) - V(k)/a(L))*y(L) + Bc(L)*V(n);
Ik = (V(k) - a(L)*V(n))*y(L)/a(L)^2 + Bc(L)/a(L)^2*V(k);
Snk = V(n)*conj(In)*basemva;
Skn = V(k)*conj(Ik)*basemva;
SL = Snk + Skn;
SLT = SLT + SL;
else, end
if nl(L)==n | nr(L)==n
%fprintf('%12g', k),
real(Snk);imag(Snk);%fprintf('%9.3f', real(Snk)), fprintf('%9.3f', imag(Snk))
abs(Snk);%fprintf('%9.3f', abs(Snk)),
real(SL);%fprintf('%9.3f', real(SL)),
if nl(L) ==n & a(L) ~= 1
imag(SL);a(L);%fprintf('%9.3f', imag(SL)), fprintf('%9.3f\n', a(L))
else,imag(SL); %fprintf('%9.3f\n', imag(SL))
end
else, end
end
end
SLT = SLT/2;
% fprintf(' \n'), fprintf(' Total loss ')
% real(SLT);imag(SLT);fprintf('%9.4f', real(SLT)), fprintf('%9.4f\n', imag(SLT))
%===============================resul constrain========================
if voltageProblem==1 || sum(bahayaGenerator)>0
ProblemSistem=1;
else
ProblemSistem=0;
end
%======================================================================
RugiRugi=real(SLT);
% %clear Ik In SL SLT Skn Snk
🔗 参考文献
🍅更多创新智能优化算法模型和应用场景可扫描关注
🌟机器学习/深度学习类:BP、SVM、RVM、DBN、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、SAE、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、XGBoost、LightGBM、TCN、BiTCN、ESN、Transformer、模糊小波神经网络、宽度学习等等均可~
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌟组合预测类:CNN/TCN/BiTCN/DBN/Transformer/Adaboost结合SVM、RVM、ELM、LSTM、BiLSTM、GRU、BiGRU、Attention机制类等均可(可任意搭配非常新颖)~
🌟分解类:EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD、JMD等分解模型均可~
🌟路径规划类:旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻、公交车时间调度、水库调度优化、多式联运优化等等~
🌟小众优化类:生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位、冷链、时间窗、多车场等、选址优化、港口岸桥调度优化、交通阻抗、重分配、停机位分配、机场航班调度、通信上传下载分配优化、微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度,虚拟电厂,能源消纳,风光出力,控制策略,多目标优化,博弈能源调度,鲁棒优化等等均可~
🌟 无人机应用方面:无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌟通信方面:传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌟信号处理方面:信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌟电力系统方面: 微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度,虚拟电厂,能源消纳,风光出力,控制策略,多目标优化,博弈能源调度,鲁棒优化
🌟原创改进优化算法(适合需要创新的同学):原创改进2025年的波动光学优化算法WOO以及三国优化算法TKOA、白鲸优化算法BWO等任意优化算法均可,保证测试函数效果,一般可直接核心
告诫读者和自己第一,科学态度。历史学是一门科学,要学会做历史研究,就得有科学态度。科学态度不是与生俱来的,必须认真培养,关键是培养我们在研究中认真负责一丝不苟的精神。第二,献身精神。从事历史研究,就像从事其他任何科学研究一样,要有一种为科学研究而献身的精神,要热爱我们的研究事业,要有潜心从事这项工作的意志。没有献身精神,当然做不好科研工作。只想拿一个学位,那是很难学好做研究的。要拿学位,这一点可以理解,但我们读书,是为了自己获得真才实学。有了真才实学将来不论做什么工作,都是有用的。当然学位也是要的,但关键的是学问而不是学位。第三,查阅收集学术信息、资料的能力。青年学生要从事学术研究,就要培养能熟练地掌握查阅搜集学术信息、资料的能力。例如学习与研究英帝国史,就得了解国内外有关这个专业的基本情况,了解有关资料情况。像你们在北京地区学习,至少要大致了解北京地区有关英帝国史的中英文资料,熟悉与专业密切相关的主要图书馆,了解馆藏情况。这就需要经常去图书馆。我们这个专业不需要到田间考察,到工厂调研,但要去图书馆,去图书馆就是我们的调查研究。熟悉有关图书馆的情况是我们学习的一部分。今天,网络飞速发展,掌握网上查阅信息的技巧是非常必要的。第四,处理资料的能力。搜集的资料会越来越多,怎样安排它们也是一门学问。各学科各个研究人员的方式可能会有所不同,但总的原则是要有条理,便于记忆,便于查阅。第五,对资料的鉴别意识与鉴别能力。我们在使用研究资料时不能拿着就用,要有意识鉴别一下,材料是否可靠,什么样的材料更有价值。读书时,也不是拿着什么书就通读到底。有的书翻一翻即可,有的书则需认真读。区别哪些书翻一翻即可,哪些书得认真读,也不是一件容易的事,青年学生不是一下子就能做到这一点的,需逐渐培养这种能力。还有一点就是要学会使用计算机,能比较熟练地进行文字处理。
