|
0.png (34.24 KB, 下載次數(shù): 100)
下載附件
2016-5-8 19:56 上傳
全部資料(壓縮包)下載:
程序.rar
(24.68 KB, 下載次數(shù): 12)
2016-5-8 19:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
cumcm2012B附件6_可參考的相關(guān)概念.doc
(77.5 KB, 下載次數(shù): 8)
2016-5-8 19:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
哈哈!三天終于熬過頭了,今天也休息過來了,來做個分享!
國賽本科兩個題,我們考慮了自己的劣勢,對于創(chuàng)新類的題做起來比較惱火,最終選擇了A題。
A題入手需要有一些相關(guān)的地理知識,例如方位角,時角等等。其實這些內(nèi)容在2012年B題的附件里都有解釋,暑假期間老師讓我們做了題,當時比較認真的做。第一問上午就解出來了,后來一直卡在后面,個人matlab編程水平不是很高超,所以隊友列出的非線性方程解得不是很好。拖了隊友的后腿。最后一問在學長的點撥下做了出來。論文尊重隊友意見,就不分享了。程序還是可以共享的。
做完了就是做完了!不考慮結(jié)果了。
上圖便于大家理解吧,空間想象你能給力不好的可以靠這個圖來思考的
211716kf44v9yfqfzq8vtp.gif (60.41 KB, 下載次數(shù): 102)
下載附件
2016-5-8 21:47 上傳
0.png (67.19 KB, 下載次數(shù): 97)
下載附件
2016-5-8 19:56 上傳
下面是部分程序預覽(完整版本請下載本帖附件):
- function [date,WE,NS]=fmain()
- %參數(shù)賦初值
- maxgen=90; %進化代數(shù),即迭代次數(shù)
- sizepop=200; %種群規(guī)模
- pcross=0.6; %交叉概率選擇
- pmutation=0.2; %變異概率選擇
- lenchrom=[1 1 1]; %每個變量的字符長度,如果是浮點,則長度都變?yōu)?
- bound=[1 365;2 10;0 90];
- c1=1.5;
- c2=1.5;
- popmax=[365;10;90];
- popmin=[1;2;0];
- Vmax=[60,2,15];
- Vmin=[-60,-2,-15];
- %附件4的影子的測量長度
- LL1=textread('D.txt');
- %種群初始化
- for i=1:sizepop
- chrom(i,:)=Code(lenchrom,bound);
- V(i,:)=5*rand(1,length(lenchrom));
- x=chrom(i,:);
- fitness(i,1)=fun(x,LL1);
- end
- [bestfitness,bestindex]=min(fitness);
- zbest=chrom(bestindex,:); %群體極值位置
- gbest=chrom; %個體位置
- fitnessgbest=fitness; %個體適應度值
- fitnesszbest=bestfitness; %群體極值
- %開始迭代
- for i=1:maxgen
- A=[fitness,chrom];
- A=sortrows(A,1); %按fitness小到大排序
- A=A(1:ceil(sizepop/2),:);%保留前面一半
- fitness=A(:,1);
- chrom=A(:,2:end);
- gbest=chrom;
- %采用pso算法進行更新
- for j=1:ceil(sizepop/2)
- %速度更新
- V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-chrom(j,:))+c2*rand*(zbest-chrom(j,:));
- if V(j,1)>Vmax(1)
- V(j,1)=Vmax(1);
- end
- if V(j,2)>Vmax(2)
- V(j,2)=Vmax(2);
- end
- if V(j,3)>Vmax(3)
- V(j,3)=Vmax(3);
- end
- if V(j,1)<vmin(1)
- V(j,1)=Vmin(1);
- end
- if V(j,2)<vmin(2)
- V(j,2)=Vmin(2);
- end
- if V(j,3)<vmin(3)
- V(j,3)=Vmin(3);
- end
-
- %粒子更新
- chrom(j,:)=chrom(j,:)+1*V(j,:);
- if chrom(j,1)>popmax(1)
- chrom(j,1)=popmax(1);
- end
- if chrom(j,2)>popmax(2)
- chrom(j,2)=popmax(2);
- end
- if chrom(j,3)>popmax(3)
- chrom(j,3)=popmax(3);
- end
- chrom(j,find(chrom(j,:)<popmin(3)))=popmin(3);
- %新粒子適應度值
- fitness(j)=fun(chrom(j,:),LL1);
- end
-
- %對更新后群體進行選擇和交叉,以生成剩下一半的個體;
- chrom(ceil(sizepop/2)+1:sizepop,:)=Cross(lenchrom,chrom,fitness,(sizepop-ceil(sizepop/2)),bound);
- %對其進行變異
- chrom(ceil(sizepop/2)+1:sizepop,:)=Mutation(pmutation,lenchrom,chrom(ceil(sizepop/2)+1:sizepop,:),(sizepop-ceil(sizepop/2)),[i maxgen],bound);
- %計算變異后的適應度
- for j=ceil(sizepop/2)+1:sizepop
- fitness(j)=fun(chrom(j,:),LL1);
- end
- %對個群體級值進行更新
- [newbestfitness,newbestindex]=min(fitness);
- if fitnesszbest>newbestfitness
- fitnesszbest=newbestfitness;
- zbest=chrom(newbestindex,:);
- end
- trace(i)=fitnesszbest;
- end
- fitnesszbest
- zbest
- time=[31 28 31 30 31 30 31 31 30 31 30 31];
- ssum=0;
- i=0;
- while ssum<round(zbest(1))
- i=i+1;
- ssum=ssum+time(i);
- end
- date=[i,round(zbest(1))-(ssum-time(i))];
- WE=120+(zbest(2)-8.9)*15; %求經(jīng)度附件4的基準時間8.9
- NS=zbest(3);
復制代碼
</round(zbest(1))
</popmin(3)))=popmin(3);
</vmin(3)
</vmin(2)
</vmin(1)
|
|