✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
⛄ 内容介绍
1.1 粒子群算法
粒子群算法(Particle Swarm Optimization,PSO)是一种优化算法,其思想源于鸟群觅食的行为。在算法中,将待优化问题看作一个多维空间中的搜索问题,将每个可能的解看作一个粒子,每个粒子通过不断地调整自己的位置和速度,以寻找全局最优解。
具体来说,粒子群算法包括以下步骤:
初始化粒子群,包括每个粒子的位置和速度。
计算每个粒子的适应度函数值,并记录个体最优位置。
记录全局最优位置。
更新每个粒子的速度和位置,以寻找全局最优解。
根据一定的停止准则,判断是否结束算法。
其中,粒子的速度和位置更新公式如下:
v(i,j) = w * v(i,j) + c1 * rand() * (pbest(i,j) - x(i,j)) + c2 * rand() * (gbest(j) - x(i,j))
x(i,j) = x(i,j) + v(i,j)
在公式中,v(i,j)表示第i个粒子在第j个维度上的速度,w是惯性权重,c1和c2是加速常数,rand()是一个0到1之间的随机数,pbest(i,j)表示第i个粒子的个体最优位置,gbest(j)表示全局最优位置,x(i,j)表示第i个粒子在第j个维度上的位置。
通过不断迭代更新,粒子群算法可以找到全局最优解。粒子群算法具有收敛速度快、易于实现、适用于大规模优化问题等优点,被广泛应用于各种领域的优化问题中。
1.2 思路
基于粒子群算法实现微型燃气轮机冷热电联供系统优化运行,需要以下步骤:
确定冷热电联供系统的目标函数和约束条件,例如最小化总成本、最大化能量利用效率等。
将冷热电联供系统建模为数学模型,包括燃气轮机、热回收器、制冷机、锅炉等组件的数学表达式和相互之间的关系。
使用粒子群算法进行优化,将冷热电联供系统的设计变量作为粒子的位置,目标函数作为适应度函数,将系统的状态向全局最优方向演化。
根据优化结果,对冷热电联供系统进行调整,包括调整设备容量、优化运行策略等。
对优化后的系统进行模拟和实验验证,确保优化结果的可行性和有效性。
本程序只做了电负荷和冷负荷,选取了夏季典型日,只考虑了燃机轮机出力和空调出力,还有从电网购电,目标函数为联供系统一天运行最小费用,求解算法采用粒子群算法,最后得出一天内调度。
⛄ 部分代码
function pop=initpop(popsize,size,scope,PMTmax,PMTmin)
popsize=80;
size=2;
scope=24;
PMTmax=66;
PMTmin=33;
PL=[63 57 44 43 43 40 56 66 78 75 89 105 125 121 116 104 101 103 104 121 116 121 106 89];
QL=[139 136 122 128 128 128 131 142 138 138 150 169 183 187 189 183 171 161 154 165 156 148 141 132];
for j=1:0.5*popsize
for i=1:scope
PMT(1,i)=(j-1)/39*(PMTmax-PMTmin)+PMTmin;
VMT(1,i)=PMT(1,i)/2.91;
QMTco(1,i)=2*PMT(1,i);
Qairco(1,i)=QL(1,i)-QMTco(1,i);
if Qairco(1,i)<0;
Qairco(1,i)=0;
QMTco(1,i)=QL(1,i);
VMT(1,i)=QMTco(1,i)/(2*2.91);
end
PGrid(1,i)=PL(1,i)+Qairco(1,i)/2.3- VMT(1,i)*2.91;
pop(1,i,j)=VMT(1,i);
pop(2,i,j)= PGrid(1,i);
end
end
for j=0.5*popsize+1:popsize %按照电网出力均分的粒子(假设从40kw到120kw均分)
for i=1:scope
PGrid(1,i)=(j-40-1)/39*(150-40)+40;
VMT(1,i)=(PL(1,i)-PGrid(1,i)+QL(1,i)/2.3)*2300/4947;
if VMT(1,i)>PMTmax/2.91 %越上限按上限出力
VMT(1,i)=PMTmax/2.91;
end
if VMT(1,i)<PMTmin/2.91 %越下限按下限出力
VMT(1,i)=PMTmin/2.91;
end
QMTco(1,i)=2*PMT(1,i);
Qairco(1,i)=QL(1,i)-QMTco(1,i);%冷功率平衡
PGrid(1,i)=PL(1,i)+Qairco(1,i)/2.3- VMT(1,i)*2.91; %电功率平衡
pop(1,i,j)=VMT(1,i);
pop(2,i,j)= PGrid(1,i);
end
end