MATLAB風光柴儲微網粒子群算法

? ? ? ? ?本程序實現了風光柴儲微網中的粒子群優化(PSO)算法,用于優化微網的能源調度問題。具體來說,程序考慮了光伏發電、風力發電、柴油機發電(柴儲),并使用粒子群算法來優化這些能源的調度,以滿足負載需求。以下是對代碼的詳細說明:

1.?PSO算法參數設置
  • 最大迭代次數?maxgen:設定粒子群算法的最大迭代次數為2000次。
  • 種群規模?N:設定粒子群中的粒子數量為100。
  • 粒子速度限制?v_max,?v_min:粒子速度的上限和下限,分別為2和-2。
  • 慣性權重?w_max,?w_min:控制粒子群在搜索空間中探索的幅度。
  • 學習因子?c1,?c2:分別表示個體認知學習因子和社會學習因子。
2.?初始化
  • 負載?P_load:表示微網的負荷需求。
  • 光伏發電?solar:光伏電池板的發電量,按時間分布。
  • 風力發電?pv:風力發電機組的發電量,按時間分布。
  • 發電總量?P_pv:光伏和風力發電總和。

? ? ?粒子群的初始化過程中,粒子位置 x 和速度 v 被隨機生成。粒子的位置對應了微網中不同能源的發電量(包括風力、光伏、柴油發電機組等),這些位置的初始值是根據各能源的最大發電能力進行約束的。

3.?適應度計算

每個粒子的適應度是通過調用 fitness 函數來計算的。適應度函數衡量了粒子方案的優劣,旨在通過最小化成本、最大化系統效率或實現其他優化目標。

4.?主循環

在每次迭代中,粒子的位置和速度會根據以下公式進行更新:

  • 速度更新:結合了慣性項、個體認知項和社會認知項。
  • 位置更新:通過粒子的當前速度更新位置。

每個粒子的邊界都會根據各個能源的最大值和最小值進行限制,并采用反轉速度的方式進行邊界處理,以確保粒子不會越過邊界。

5.?粒子群更新

每個粒子在更新其位置和速度后,會重新評估其適應度。如果當前粒子的適應度比之前的最優適應度更好,則更新該粒子的最佳位置。全局最優解(即整個群體中最優的粒子)會在每次迭代后更新。

6.?結果可視化

程序會繪制多個圖表展示優化結果:

  • 圖1:展示已消納的功率與總光伏發電功率的關系。
  • 圖2:展示已消納的功率與總風電發電功率的關系。
  • 圖3:展示光伏發電的已消納功率。
  • 圖4:展示風電發電的已消納功率。

這些圖表幫助分析不同能源的調度效果,以及微網在負荷需求下的能源使用情況。

7 主程序代碼
clc;
clear;
%rng default;
%pso參數設置
format long;
maxgen=2000;%迭代次數
N=100;%種群規模
%c1=2;%自我學習因子
%c2=2;%群體學習因子
v_max=2; v_min=-2;%個體速度
w_max=0.9;w_min=0.1;
dmaxp=10;
dminp=0;
wminp=-10;
wmaxp=10;
s=1;
P_load=[52 50 50 51 56 63 70 75 76 80 78 74 72 72 76 80 85 88 90 87 78 71 65 56 ];%負載
%P_load=[152 150 150 151 156 163 170 175 176 180 178 174 172 172 176 180 185 188 190 187 178 171 165 156 ];
solar=[0 0 0 0 1 3 5 10 15 16 17 20 20 20 18 15 15 10 10 5 0 0 0 0 ]%光伏
pv=[75 65 60 55 50 57 60 66 50 58 60 60 57 50 61 58 55 65 56 60 72 66 75 76 ];%風力
P_pv=pv+solar;
%初始化種群
for i=1:N;for j=1:96;%4個維度v(i,j)=0.0;if j<=24;x(i,j)=rand()*pv(j);elseif j>24&&j<=48;x(i,j)=rand()*solar(j-24);elseif    j>48&&j<=72;x(i,j)=dminp+rand()*(dmaxp-dminp);elseif   j>72&&j<=96;  x(i,j)=wminp+rand()*(wmaxp-wminp);endend
end%計算各個粒子的適應度,并初始化Pi和Pg
for i=1:Np(i)=fitness(x(i,:),s);y(i,:)=x(i,:);%每個粒子的個體尋優值
end
Pbest=fitness(x(1,:),s);
pg=x(1,:);%Pg為全局最優
for i=2:Nif fitness(x(i,:),s)<fitness(pg,s)Pbest=fitness(x(i,:),s);pg=x(i,:);%全局最優更新end
end
%進入主循環
for t=1:maxgenfor i=1:Nw=w_max-(w_max-w_min)*t/maxgen;%慣性權重更新c1=(0.5-2.5)*t/maxgen+2.5; %認知c2=(2.5-0.5)*t/maxgen+0.5; %社會認識 
v(i,:)=w*v(i,:)+c1*rand()*(y(i,:)-x(i,:))+c2*rand()*(pg-x(i,:));
for m=1:96if(v(i,m)>v_max)v(i,m)=v_max;elseif(v(i,m)<-v_max)v(i,m)=-v_max;end
endx(i,:)=x(i,:)+v(i,:);%對粒子邊界處理for n=1:96if n<25if x(i,n)<0x(i,n)=0;v(i,n)=-v(i,n); elseif x(i,n)>pv(n)x(i,n)=pv(n);v(i,n)=-v(i,n); %反轉運動方向endelseif n>24&&n<49if x(i,n)<0x(i,n)=0;v(i,n)=-v(i,n);  elseif  x(i,n)>solar(n-24)x(i,n)=solar(n-24);v(i,n)=-v(i,n);                     endelseif n>49&&n<73if x(i,n)<dminpx(i,n)=dminp;v(i,n)=-v(i,n); elseif x(i,n)>dmaxpx(i,n)=dmaxp;v(i,n)=-v(i,n); endelse if x(i,n)<wminpx(i,n)=wminp;v(i,n)=-v(i,n); elseif x(i,n)>wmaxpx(i,n)=wmaxp;v(i,n)=-v(i,n); endendendend %對粒子進行評價,尋找最優值if fitness(x(i,:),t)<p(i)p(i)=fitness(x(i,:),t);y(i,:)=x(i,:);end if p(i)<PbestPbest=p(i);pg=y(i,:);s=t;end
endfor m=1:24pg1(m)=pg(m);
end
for m=25:48pg2(m-24)=pg(m);
end
for m=49:72pg3(m-48)=pg(m);
end
for m=73:96pg4(m-72)=pg(m);
end  figure(1);
plot( pg1,'r-')
hold on
plot( pv,'-')
xlim([1 24])
grid 
legend('已消納功率','總光伏功率');
xlabel('時間');
ylabel('功率');
title('風機發電出力')figure(2);
plot( pg2,'g-')
hold on
plot( solar,'-')
xlim([1 24])
grid
legend('已消納功率','總風電功率');
xlabel('時間');
ylabel('功率');
title('光伏發電出力')figure(3);
plot( pg3,'b-')
xlim([1 24])
grid       figure(4);
plot( pg4,'k-')
xlim([1 24])
grid   %plot (P_load,'-')
grid on

8 代碼獲取

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72295.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72295.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72295.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決Windows版Redis無法遠程連接的問題

&#x1f31f; 解決Windows版Redis無法遠程連接的問題 在Windows系統下使用Redis時&#xff0c;很多用戶會遇到無法遠程連接的問題。尤其是在配置了Redis并嘗試通過工具如RedisDesktopManager連接時&#xff0c;可能會報錯“Cannot connect to ‘redisconnection’”。今天&am…

解決 HTTP 請求中的編碼問題:從亂碼到正確傳輸

文章目錄 解決 HTTP 請求中的編碼問題&#xff1a;從亂碼到正確傳輸1. **問題背景**2. **亂碼問題的原因**2.1 **客戶端編碼問題**2.2 **請求頭缺失**2.3 **服務器編碼問題** 3. **解決方案**3.1 **明確指定請求體編碼**3.2 **確保請求頭正確**3.3 **動態獲取響應編碼** 4. **調…

VS Code 配置優化指南

目錄 一、安裝與基礎設置1. 安裝 VS Code2. 中文語言包 二、插件推薦三、常見配置項與優化1. 用戶 / 工作區設置2. 全局配置 / Settings Sync3. 常用設置示例 四、性能優化五、調試與終端配置1. 調試配置2. 內置終端配置 六、快捷鍵配置七、美觀與主題八、總結 VS Code&#xf…

基于NXP+FPGA永磁同步電機牽引控制單元(單板結構/機箱結構)

永磁同步電機牽引控制單元&#xff08;單板結構/機箱結構&#xff09; 永磁同步電機牽引控制單元&#xff08;TCU-PMSM&#xff09;用于牽引逆變器-永磁同步電機構成的牽引電傳動系統&#xff0c;采用軸控方式。執行高性能永磁同步電機復矢量控制策略&#xff0c;具有響應迅速…

/etc/sysconfig/jenkins 沒有這個文件

在 CentOS 或其他基于 Red Hat 的 Linux 系統中&#xff0c;/etc/sysconfig/jenkins 文件通常用來存儲 Jenkins 的配置參數&#xff0c;例如 JENKINS_HOME 的路徑。但是&#xff0c;如果你發現沒有這個文件&#xff0c;你可以通過以下幾種方式來解決或確認&#xff1a; 檢查 J…

conda 安裝軟件報錯 Found conflicts! Looking for incompatible packages.

問題描述&#xff1a; 利用 conda 安裝某包 conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc時發現報錯&#xff1a; Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with…

MySQL 衍生表(Derived Tables)

在SQL的查詢語句select …. from …中&#xff0c;跟在from子句后面的通常是一張擁有定義的實體表&#xff0c;而有的時候我們會用子查詢來扮演實體表的角色&#xff0c;這個在from子句中的子查詢會返回一個結果集&#xff0c;這個結果集可以像普通的實體表一樣查詢、連接&…

STM32配套程序接線圖

1 工程模板 2 LED閃爍 3LED流水燈 4蜂鳴器 5按鍵控制LED 6光敏傳感器控制蜂鳴器 7OLED顯示屏 8對射式紅外傳感器計次 9旋轉編碼器計次 10 定時器定時中斷 11定時器外部時鐘 12PWM驅動LED呼吸燈 13 PWM驅動舵機 14 PWM驅動直流電機 15輸入捕獲模式測頻率 16PWMI模式測頻率占空…

鴻蒙初級考試備忘

Module類型 Module按照使用場景可以分為兩種類型&#xff1a; Ability類型的Module&#xff1a; 用于實現應用的功能和特性。每一個Ability類型的Module編譯后&#xff0c;會生成一個以.hap為后綴的文件&#xff0c;我們稱其為HAP&#xff08;Harmony Ability Package&#x…

語音識別踩坑記錄

本來想在原來的語音識別的基礎上增加本地擴展本地詞典&#xff0c; 采用的語音識別是Vosk識別器&#xff0c;模型是 vosk-model-small-cn-0.22 // 初始化Vosk識別器 if (recognizer null) {using (Model model new Model(modelPath)){string grammar "{""…

SpringCloud 學習筆記1(Spring概述、工程搭建、注冊中心、負載均衡、 SpringCloud LoadBalancer)

文章目錄 SpringCloudSpringCloud 概述集群和分布式集群和分布式的區別和聯系 微服務什么是微服務&#xff1f;分布式架構和微服務架構的區別微服務的優缺點&#xff1f;拆分微服務原則 什么是 SpringCloud &#xff1f;核心功能與組件 工程搭建父項目的 pom 文件 注冊中心Rest…

計算機網絡-網絡規劃與設計

基本流程 需求分析—》通信規范分析—》邏輯網絡設計—》物理網絡設計—》實施階段 需求分析&#xff1a; 確定需求&#xff0c;包括&#xff1a;業務需求、用戶需求、應用需求、計算機平臺需求、網絡通信需求等。 產物&#xff1a;需求規范 通信規范分析&#xff1a; 現有…

《AI浪潮中的璀璨新星:Meta Llama、Ollama與DeepSeek的深度剖析》:此文為AI自動生成

《AI浪潮中的璀璨新星&#xff1a;Meta Llama、Ollama與DeepSeek的深度剖析》&#xff1a;此文為AI自動生成 引言&#xff1a;AI 大模型的群雄逐鹿時代 在科技飛速發展的當下&#xff0c;AI 大模型領域已成為全球矚目的焦點&#xff0c;競爭激烈程度堪稱白熱化。從 OpenAI 推出…

基礎知識《HTTP字段與狀態碼詳細說明》

HTTP 協議字段與狀態碼完整指南 一、HTTP 字段&#xff08;請求頭與響應頭&#xff09; HTTP 頭字段用于傳遞客戶端和服務器之間的元數據&#xff0c;分為 請求頭&#xff08;Request Headers&#xff09; 和 響應頭&#xff08;Response Headers&#xff09;。 1. 常見請求頭…

DeepSeek linux服務器(CentOS)部署命令筆記

Linux&#xff08;CentOS&#xff09;FinalShellOllama遠程訪問&#xff0c;本地部署deepseek 自備CentOS服務器&#xff0c;并且已經使用FinalShell連接到服務器 一、準備工作 1.更新服務器 apt-get update-y 2.下載Ollama curl -fsSL https://ollama.com/install.sh | …

C#通過API接口返回流式響應內容---分塊編碼方式

1、背景 上一篇文章《C#通過API接口返回流式響應內容—SSE方式》闡述了通過SSE&#xff08;Server Send Event&#xff09;方式&#xff0c;由服務器端推送數據到瀏覽器。本篇是通過分塊編碼的方式實現 2、效果 3、具體代碼 3.1 API端實現 [HttpGet] public async Task Chu…

SSL 原理及實驗

引言 為了實現遠程辦公或者遠程客戶訪問內網的資源 &#xff08;1&#xff09;回顧歷史&#xff1a; 起初先出現SSL(Secure Sockets Layer&#xff09;&#xff0d;安全套接層協議。 美國網景Netscape公司1994年研發&#xff0c;介于傳輸層TCP協議和應用層協議之間的一種協議…

C++ 布爾類型(bool)深度解析

引言 在 C 編程里&#xff0c;布爾類型&#xff08;bool&#xff09;是一種基礎且極為關鍵的數據類型。它專門用于表達邏輯值&#xff0c;在程序的條件判斷、循環控制等諸多方面都發揮著重要作用。接下來&#xff0c;我們將對 C 中的布爾類型展開全面且深入的探討。 一、布爾…

UE5.5 Niagara發射器更新屬性

發射器屬性 在 Niagara 里&#xff0c;Emitter 負責控制粒子生成的規則和行為。不同的 Emitter 屬性決定了如何發射粒子、粒子如何模擬、計算方式等。 發射器 本地空間&#xff08;Local Space&#xff09; 控制粒子是否跟隨發射器&#xff08;Emitter&#xff09;移動。 ?…

各省水資源平臺 水資源遙測終端機都用什么協議

各個省水資源平臺 水資源遙測終端機 的建設大部分從2012年開始啟動&#xff0c;經過多年建設&#xff0c;基本都已經形成了穩定的通訊要求&#xff1b;河北瑾航科技 遙測終端機&#xff0c;兼容了大部分省市的通訊協議&#xff0c;如果需要&#xff0c;可以咨詢和互相學習&…