EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1236|回复: 0

[资源共享] 分享下数模2015年A题的Matlab程序

[复制链接]

79

主题

20

回帖

375

E币

技术员

Rank: 2

积分
178
发表于 2017-4-21 16:10:16 | 显示全部楼层 |阅读模式
195643kegg3xgz9c3nztc3.png

全部资料(压缩包)下载:

程序.rar (24.68 KB, 下载次数: 0)
cumcm2012B附件6_可参考的相关概念.doc (77.5 KB, 下载次数: 0)

哈哈!三天终于熬过头了,今天也休息过来了,来做个分享!
国赛本科两个题,我们考虑了自己的劣势,对于创新类的题做起来比较恼火,最终选择了A题。

A题入手需要有一些相关的地理知识,例如方位角,时角等等。其实这些内容在2012年B题的附件里都有解释,暑假期间老师让我们做了题,当时比较认真的做。第一问上午就解出来了,后来一直卡在后面,个人matlab编程水平不是很高超,所以队友列出的非线性方程解得不是很好。拖了队友的后腿。最后一问在学长的点拨下做了出来。论文尊重队友意见,就不分享了。程序还是可以共享的。

做完了就是做完了!不考虑结果了。
上图便于大家理解吧,空间想象你能给力不好的可以靠这个图来思考的
214719y3l15a3j66nkaqaq.gif
195613rq8v8lo68ywv72v3.png





下面是部分程序预览(完整版本请下载本帖附件):
  1. function [date,WE,NS]=fmain()  

  2. %参数赋初值
  3. maxgen=90;            %进化代数,即迭代次数
  4. sizepop=200;           %种群规模
  5. pcross=0.6;            %交叉概率选择
  6. pmutation=0.2;         %变异概率选择
  7. lenchrom=[1 1 1];        %每个变量的字符长度,如果是浮点,则长度都变为1
  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; %求经度附件4的基准时间8.9
  103. NS=zbest(3);
复制代码



</round(zbest(1))
</popmin(3)))=popmin(3);
</vmin(3)
</vmin(2)
</vmin(1)

积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-20 05:48 , Processed in 0.040939 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表