适用平台:Matlab+Yalmip+Cplex
程序针对由风光机组、燃料/光伏电池、余热锅炉、燃气锅炉、蓄电池以及电/热负荷构成的热电联供型微网/综合能源系统,考虑风电、光伏功率以及热、电负荷的随机性,应用机会约束规划理论建立经济运行优化模型,并提出一种基于随机模拟技术的粒子群优化算法求解模型。程序中算例丰富、注释清晰、干货满满,可扩展性和创新性很高!下面对文章和程序做简要介绍!
程序创新点:
1)对含有随机变量的不等式约束,以概率的形式进行描述,使其能够在一定的置信水平下成立,根据系统实际的运行要求设置置信水平;
2)在粒子群优化方法中引入随机模拟,即Monte Carlo模拟,从而为系统决策提供依据或对系统决策进行检验;
主要工作:
热电联供系统具有节能、环保、经济等特点,有着良好的发展前景和应用价值。文中针对由风电机组、光伏电池,燃料电池,余热锅炉,燃气锅炉,蓄电池以及热电负荷构成的热电联供型微网系统,考虑风电、光伏功率以及热电负荷的随机性,应用机会约束规划理论建立经济运行优化模型,并提出一种基于随机模拟技术的粒子群优化算法求解模型,根据不同的微源配置,对系统的运行方案进行优化。实例分析结果表明,所提出的方法可以提供微源优化配置建议,实现微源动态经济调度,有效降低系统运行费用。
(1)机会约束规划(CCP)理论
CCP主要针对约束条件中含有随机变量,且必须在观测到随机变量的实现之前作出决策的情况。考虑到所做决策在不利的情况发生时可能不满足约束条件而采取一种原则:允许所作决策在一定程度上不满足约束条件,但是该决策应该使约束条件成立的概率不小于某一置信水平。
(2)含随机变量的约束条件处理方法
与传统的优化方法不同,由于风电,光伏功率以及热电负荷具有随机性,某些约束条件不再具有确定性。本文根据CCP理论建立模型,对含有随机变量的不等式约束,以概率的形式进行描述,使其能够在一定的置信水平下成立。
文中共有4种运行方式,在目标函数中将该设备成本函数增减即可!复现时考虑了确定性模型和考虑随机约束模型,分析利用机会约束规划理论建立模型的方法,给出常规粒子群和含CCP理论的粒子群算法区别,对比明显!
程序结果:
线性模型结果:
含随机变量结果:
部分程序:
%% 粒子参数
CostFunction=@(x) CostFun(x); % 成本函数
w=1; % Inertia Weight
wdamp=0.99; % Inertia Weight Damping Ratio
c1=1.5; % Personal Learning Coefficient
c2=2.0; % Global Learning Coefficient
VarSize=[1 nVar]; % Size of Decision Variables Matrix
% 容量限制
VelMax=0.1*(VarMax-VarMin);VelMin=-VelMax;
%% 初始种群
empty_particle.Position=[];empty_particle.Cost=[];
empty_particle.Velocity=[];empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];particle=repmat(empty_particle,nPop,1);
GlobalBest.Cost=inf;
for i=1:nPop
% 初始位置
particle(i).Position=unifrnd(VarMin,VarMax,VarSize);%随机初始化变量
% 初始容量
particle(i).Velocity=zeros(VarSize);%速度
% 计算
particle(i).Cost=CostFunction(particle(i).Position);%目标
% 更新最优位置
particle(i).Best.Position=particle(i).Position;%更新个体最优
particle(i).Best.Cost=particle(i).Cost;
%更新全局最优
if particle(i).Best.Cost<GlobalBest.Cost
GlobalBest=particle(i).Best; BestCost=zeros(MaxIt,1);
%% 粒子群主循环
for it=1:MaxIt
for i=1:nPop
% 更新速度
particle(i).Velocity = w*particle(i).Velocity ...
+c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
+c2*rand(VarSize).*(GlobalBest.Position-particle(i).Position);
% 速度约束
particle(i).Velocity = max(particle(i).Velocity,VelMin);
particle(i).Velocity = min(particle(i).Velocity,VelMax);
% 更新位置
particle(i).Position = particle(i).Position + particle(i).Velocity;
% 变量越限镜像处理
IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
% 变量越限处理
particle(i).Position = max(particle(i).Position,VarMin);
particle(i).Position = min(particle(i).Position,VarMax);
% 新目标
particle(i).Cost = CostFunction(particle(i).Position);
部分内容源自网络,侵权联系删除!
欢迎感兴趣的小伙伴点击文末阅读原文获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!
更多创新性预测及优化程序请点击公众号首页:《预测优化》|《综合能源》链接!