找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4060|回復: 0
打印 上一主題 下一主題
收起左側(cè)

分享下數(shù)模2015年A題的Matlab程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114320 發(fā)表于 2016-5-8 19:58 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


全部資料(壓縮包)下載:

程序.rar (24.68 KB, 下載次數(shù): 12)

cumcm2012B附件6_可參考的相關(guān)概念.doc (77.5 KB, 下載次數(shù): 8)


哈哈!三天終于熬過頭了,今天也休息過來了,來做個分享!
國賽本科兩個題,我們考慮了自己的劣勢,對于創(chuàng)新類的題做起來比較惱火,最終選擇了A題。

A題入手需要有一些相關(guān)的地理知識,例如方位角,時角等等。其實這些內(nèi)容在2012年B題的附件里都有解釋,暑假期間老師讓我們做了題,當時比較認真的做。第一問上午就解出來了,后來一直卡在后面,個人matlab編程水平不是很高超,所以隊友列出的非線性方程解得不是很好。拖了隊友的后腿。最后一問在學長的點撥下做了出來。論文尊重隊友意見,就不分享了。程序還是可以共享的。

做完了就是做完了!不考慮結(jié)果了。
上圖便于大家理解吧,空間想象你能給力不好的可以靠這個圖來思考的







下面是部分程序預覽(完整版本請下載本帖附件):
  1. function [date,WE,NS]=fmain()  

  2. %參數(shù)賦初值
  3. maxgen=90;            %進化代數(shù),即迭代次數(shù)
  4. sizepop=200;           %種群規(guī)模
  5. pcross=0.6;            %交叉概率選擇
  6. pmutation=0.2;         %變異概率選擇
  7. lenchrom=[1 1 1];        %每個變量的字符長度,如果是浮點,則長度都變?yōu)?
  8. bound=[1 365;2 10;0 90];
  9. c1=1.5;
  10. c2=1.5;
  11. popmax=[365;10;90];
  12. popmin=[1;2;0];
  13. Vmax=[60,2,15];
  14. Vmin=[-60,-2,-15];

  15. %附件4的影子的測量長度
  16. LL1=textread('D.txt');


  17. %種群初始化
  18. for i=1:sizepop
  19.     chrom(i,:)=Code(lenchrom,bound);
  20.     V(i,:)=5*rand(1,length(lenchrom));
  21.     x=chrom(i,:);
  22.     fitness(i,1)=fun(x,LL1);
  23. end

  24. [bestfitness,bestindex]=min(fitness);
  25. zbest=chrom(bestindex,:);   %群體極值位置
  26. gbest=chrom;                %個體位置
  27. fitnessgbest=fitness;       %個體適應度值
  28. fitnesszbest=bestfitness;   %群體極值
  29. %開始迭代
  30. for i=1:maxgen
  31.     A=[fitness,chrom];
  32.     A=sortrows(A,1);         %按fitness小到大排序
  33.     A=A(1:ceil(sizepop/2),:);%保留前面一半
  34.     fitness=A(:,1);
  35.     chrom=A(:,2:end);
  36.     gbest=chrom;
  37.     %采用pso算法進行更新
  38.     for j=1:ceil(sizepop/2)
  39.         %速度更新
  40.         V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-chrom(j,:))+c2*rand*(zbest-chrom(j,:));
  41.         if  V(j,1)>Vmax(1)
  42.             V(j,1)=Vmax(1);
  43.         end
  44.         if  V(j,2)>Vmax(2)
  45.             V(j,2)=Vmax(2);
  46.         end
  47.         if  V(j,3)>Vmax(3)
  48.             V(j,3)=Vmax(3);
  49.         end
  50.         if  V(j,1)<vmin(1)
  51.             V(j,1)=Vmin(1);
  52.         end
  53.          if  V(j,2)<vmin(2)
  54.              V(j,2)=Vmin(2);
  55.          end
  56.          if  V(j,3)<vmin(3)
  57.              V(j,3)=Vmin(3);
  58.         end
  59.      
  60.         %粒子更新
  61.         chrom(j,:)=chrom(j,:)+1*V(j,:);
  62.         if chrom(j,1)>popmax(1)
  63.            chrom(j,1)=popmax(1);
  64.         end
  65.         if chrom(j,2)>popmax(2)
  66.            chrom(j,2)=popmax(2);
  67.         end
  68.         if chrom(j,3)>popmax(3)
  69.            chrom(j,3)=popmax(3);
  70.         end
  71.         chrom(j,find(chrom(j,:)<popmin(3)))=popmin(3);
  72.         %新粒子適應度值
  73.         fitness(j)=fun(chrom(j,:),LL1);
  74.     end
  75.    
  76.     %對更新后群體進行選擇和交叉,以生成剩下一半的個體;
  77.     chrom(ceil(sizepop/2)+1:sizepop,:)=Cross(lenchrom,chrom,fitness,(sizepop-ceil(sizepop/2)),bound);
  78.     %對其進行變異
  79.     chrom(ceil(sizepop/2)+1:sizepop,:)=Mutation(pmutation,lenchrom,chrom(ceil(sizepop/2)+1:sizepop,:),(sizepop-ceil(sizepop/2)),[i maxgen],bound);
  80.     %計算變異后的適應度
  81.     for j=ceil(sizepop/2)+1:sizepop
  82.         fitness(j)=fun(chrom(j,:),LL1);
  83.     end
  84.     %對個群體級值進行更新
  85.     [newbestfitness,newbestindex]=min(fitness);
  86.     if fitnesszbest>newbestfitness
  87.        fitnesszbest=newbestfitness;
  88.        zbest=chrom(newbestindex,:);
  89.     end
  90.     trace(i)=fitnesszbest;
  91. end
  92. fitnesszbest
  93. zbest

  94. time=[31 28 31 30 31 30 31 31 30 31 30 31];
  95. ssum=0;
  96. i=0;
  97. while ssum<round(zbest(1))
  98.       i=i+1;
  99.       ssum=ssum+time(i);
  100. end
  101. date=[i,round(zbest(1))-(ssum-time(i))];
  102. WE=120+(zbest(2)-8.9)*15; %求經(jīng)度附件4的基準時間8.9
  103. NS=zbest(3);
復制代碼




</round(zbest(1))
</popmin(3)))=popmin(3);
</vmin(3)
</vmin(2)
</vmin(1)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表