久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2467|回復: 0
打印 上一主題 下一主題
收起左側

PSO求解最大崩潰路徑 MATLAB源程序

[復制鏈接]
跳轉到指定樓層
樓主
這是我個人的程序庫中的程序,是本人在大二時為求解電網崩潰節點概率所寫。根據每個節點的崩潰概率,求解最大崩潰路徑,據此在設計方案時盡可能避免路徑的產生。


隨即結果與最優結果對比,同時給出相應崩潰概率

MATLAB源程序:
  1. %% 該函數演示多目標perota優化問題
  2. %清空環境
  3. %close all
  4. %clear,clc

  5. load qzjz            %權值矩陣

  6. %% 初始參數

  7. %初始化程序
  8. Dim=20;               %粒子維數
  9. PopSize=100;           %種群個數
  10. MaxIt=500;            %迭代次數
  11. c1=0.5;               %算法參數
  12. c2=0.7;               %算法參數
  13. wmax=1.2;             %慣性因子
  14. wmin=0.1;             %慣性因子
  15. NumToNext=1;                %記錄最優適應值個數
  16. NumToQuit=1;                %記錄最優適應度重復出現的個數
  17. w=0;

  18. for i=1:PopSize            %粒子初始化
  19.     Group(i,:)=randperm(20);
  20. end
  21. v=zeros(1,Dim);              %速度初始化

  22. %定義位置
  23. x=[10 10 5 20 30 20 10 20 25 5 20 5 10 10 0 30 15 15 0 5 10];
  24. y=[2.5 3 2 2 0 1.5 1 0.5 1 0.5 0 0 0.5 0 1.5 0.5 1.5 2 2 1.5 2.5];

  25. % 粒子適應度值
  26. IndivdualFitness=ones(1,PopSize);   %單個粒子適應度

  27. %計算初始目標向量
  28. for i=1:PopSize
  29.     for j=1:Dim-1   
  30.         IndivdualFitness(i) = IndivdualFitness(i)*qzjz(Group(i,j),Group(i,j+1));  %粒子概率
  31.     end
  32. end

  33. % 最優值初始化
  34. IndivdualBestFitness=IndivdualFitness; %粒子最大適應度
  35. IndivdualBestPath=Group;           %個體最佳值

  36. GlobalBestPath=Group(1,:);         %粒子群最佳位置

  37. %記錄上一次各粒子的適應值
  38. OldIndivdualFitness=IndivdualFitness;

  39. %記錄初始最優適應值
  40. OldGlobalBestFitness=max(IndivdualBestFitness);

  41. %隨機解
  42. sign={'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'};
  43. figure;
  44. subplot(2,2,1);
  45. plot(x,y,'r*');
  46. for i=1:Dim
  47.     text(x(i)+0.1,y(i)+0.1,sign{i}) %利用點的坐標添加對應標注
  48. end
  49. line(x,y);
  50. title('隨機解')
  51. grid on;

  52. %% 循環迭代
  53. for iter=1:MaxIt
  54.    
  55.     % 權值更新
  56.     w=wmax-(wmax-wmin)*iter/MaxIt;

  57.     %% 群體更新
  58.     for i=1:PopSize
  59.         %速度更新
  60.         v=w*v+c1*rand(1,1)*(IndivdualBestPath(i,:)-Group(i,:))+c2*rand(1,1)*(GlobalBestPath-Group(i,:));
  61.      
  62.         %位置更新
  63.         Group(i,:)=Group(i,:)+v;
  64.         Group(i,:)=ceil(Group(i,:));  
  65.        index0=[];
  66.         for j=1:Dim
  67.             flag=0;                        %沒有不符合條件的值
  68.             if ((Group(i,j)<=0)||(Group(i,j)>Dim))
  69.                 flag=1;
  70.             end
  71.             for k=j+1:Dim
  72.                 if Group(i,j)==Group(i,k)
  73.                     flag=1;
  74.                     break;
  75.                 end
  76.             end
  77.             if flag==1
  78.                 index0=[index0,j];
  79.             end
  80.         end
  81.         
  82.         t=1;
  83.         m=randperm(Dim);
  84.         NumOfSize=size(index0,2);
  85.         for j=1:Dim
  86.             flag=0;                    %新產生的隨機數與原矩陣中不相同
  87.             for k=1:Dim
  88.                 flag0=0;
  89.                 for q=1:NumOfSize
  90.                     if k==index0(q)
  91.                         flag0=1;
  92.                     end
  93.                 end
  94.                 if flag0==1
  95.                     continue;
  96.                 end
  97.                 if m(1,j)==Group(i,k)
  98.                     flag=1;
  99.                     break;
  100.                 end
  101.             end
  102.             
  103.             if flag==0
  104.                 Group(i,index0(t))=m(1,j);
  105.                 t=t+1;
  106.             end
  107.             if t>length(index0)
  108.                 break;
  109.             end
  110.         end
  111.     end
  112.     %% 計算更新后個體適應度
  113.     IndivdualFitness(:)=1;
  114.     for i=1:PopSize
  115.         for j=1:Dim-1 %控制類別
  116.             IndivdualFitness(i) = IndivdualFitness(i)*qzjz(Group(i,j),Group(i,j+1));  %計算粒子i 概率
  117.         end
  118.     end
  119.    
  120.     IsChange=IndivdualFitness>=OldIndivdualFitness;  %判斷新粒子路徑的適應值是否大于原來的
  121.     IndivdualBestPath(find(IsChange),:) = Group(find(IsChange),:);%更新個體最佳路徑
  122.     OldIndivdualFitness = OldIndivdualFitness.*( ~IsChange) + IndivdualFitness.*IsChange;%更新個體最佳路徑距離
  123.    
  124.     [GlobalBestFitness,Index]=max(IndivdualFitness);
  125.     GlobalBestPath=Group(Index,:);
  126.     if GlobalBestFitness>OldGlobalBestFitness
  127.         NumToNext=NumToNext+1;
  128.         OldGlobalBestFitness(1,NumToNext)=GlobalBestFitness;
  129.     else
  130.         NumToQuit=NumToQuit+1;
  131.     end
  132.     if NumToQuit>=20                    %重復20次種群最優適應度為改變就退出迭代
  133.         break;
  134.     end
  135. end

  136. %最優解
  137. for i=1:Dim
  138.     x1(i)=x(GlobalBestPath(i));
  139.     y1(i)=y(GlobalBestPath(i));
  140. end
  141. subplot(2,2,2);
  142. plot(x,y,'r*');
  143. for i=1:Dim
  144.     text(x(i)+0.1,y(i)+0.1,sign{i}) %利用點的坐標添加對應標注
  145. end
  146. line(x1,y1);
  147. title('最優解');
  148. grid on;


  149. %適應值曲線
  150. subplot(2,2,3:4);
  151. s=size(OldGlobalBestFitness,2);
  152. plot(1:s,OldGlobalBestFitness,'p');
  153. line(1:s,OldGlobalBestFitness);


  154. %%給出計算結果
  155. disp('最優路徑為:');
  156. for i=1:Dim
  157.         fprintf('%d',GlobalBestPath(i));
  158.     if i~=Dim
  159.         fprintf('%s','-');
  160.     end
  161. end
  162. fprintf('\n');
復制代碼

下載:
PSO求解最大崩潰路徑.zip (2.25 KB, 下載次數: 8)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久小视频 | 日韩欧美精品一区 | 日韩欧美在线一区 | 久久国产亚洲 | 欧美黄 片免费观看 | 国产精品久久久久久久久久免费看 | 一区二区三区免费看 | 亚洲国产成人精品久久 | 国产精品一区二区av | 91精品国产一区二区三区香蕉 | 特级a欧美做爰片毛片 | 亚洲 欧美 另类 综合 偷拍 | 国产高清视频一区 | 久久久久久91 | 男人天堂网址 | 久久精品成人 | 福利片在线观看 | 欧美性猛交一区二区三区精品 | 欧美男人亚洲天堂 | 男女网站免费观看 | 国产av毛片 | 欧美一区二区三区视频在线观看 | 超碰成人免费 | 久久久久久美女 | 永久www成人看片 | 国产精品日本一区二区不卡视频 | 免费看一级毛片 | 亚洲一区二区三区在线免费 | 精品真实国产乱文在线 | 久久久久久久久久一区二区 | 日韩成人中文字幕 | 午夜精品久久久久久久久久久久久 | 国产一区二区在线免费视频 | 午夜ww| 午夜视频在线免费观看 | 日本一区二区三区在线观看 | 国产精品久久久99 | 久久精品影视 | 中文字幕日韩专区 | 福利片一区二区 | 欧美精品一区二区在线观看 |