注册地址 登录
数学建模社区-数学中国 返回首页

kelanlangzi的个人空间 http://www.madio.net/?249054 [收藏] [复制] [分享] [RSS]

日志

模拟退火算法解决飞机巡航问题

已有 978 次阅读2011-4-11 18:49

clc,clear
load sj.txt %加载敌方100 个目标的数据,数据按照表格中的位置保存在纯文本
% 文件sj.txt 中
x=sj(:,1:2:8);x=x(:);
y=sj(:,2:2:8);y=y(:);
sj=[x y];
d1=[70,40];
sj=[d1;sj;d1];
sj=sj*pi/180;
%距离矩阵d
d=zeros(102);
for i=1:101
for j=i+1:102
temp=cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2));
d(i,j)=6370*acos(temp);
end
end
d=d+d';
S0=[];Sum=inf;
rand('state',sum(clock));
for j=1:1000
S=[1 1+randperm(100),102];
temp = 0;
for i=1:101
temp=temp+d(S(i),S(i+1));
end
if temp<Sum
S0=S;Sum=temp;
end
end
e=0.1^30;L=20000;at=0.999;T=1;
%退火过程
for k=1:L
%产生新解
c=2+floor(100*rand(1,2));
c=sort(c);
c1=c(1);c2=c(2);
%计算代价函数值
df=d(S0(c1-1),S0(c2))+d(S0(c1),S0(c2+1)) - d(S0(c1-1),S0(c1))-d(S0(c2),S0(c2+1));
%接受准则
if df<0
S0=[S0(1:c1-1),S0(c2:-1:c1),S0(c2+1:102)];
Sum=Sum+df;
elseif exp(-df/T)>rand(1)
S0=[S0(1:c1-1),S0(c2:-1:c1),S0(c2+1:102)];
Sum=Sum+df;
end
T=T*at;
if T<e
break;
end
end
% 输出巡航路径及路径长度
S0,Sum
%输出巡航时间和巡航路线图
t = Sum/1000
sj=sj*180/pi;
plot(sj(:,1),sj(:,2),'.')
hold on
for i=1:101
    plot([sj(S0(i),1),sj(S0(i+1),1)],[sj(S0(i),2),sj(S0(i+1),2)])
end


图片

 

运行结果:

S0 =

  Columns 1 through 18

     1    95    35    36    43    93    52    46    59    83    74    30    20    42    15    51    80    50

  Columns 19 through 36

    98    38     9     5    54    55    96    44   100   101    99    21    56     6    89    12    53    75

  Columns 37 through 54

    33    73    13    24    32    37    49    28    25    68     7    71    22    81    58    23    86    90

  Columns 55 through 72

    66    34    29    26    62    63    19     8    39    78    47    57    88    61    16    91    41     4

  Columns 73 through 90

    70    94    64    11    69    76    60    79    77    85    65    97    31    40    18    84    10    27

  Columns 91 through 102

    14    72    48    82    87    92     2    67    45     3    17   102

>> Sum

Sum =

  4.4394e+004

>> t

t =

   44.3936

坐标数据:

53.7121      15.3046      51.1758      0.0322      46.3253      28.2753      30.3313      6.9348
56.5432      21.4188      10.8198      16.2529      22.7891      23.1045      10.1584      12.4819
20.1050      15.4562      1.9451      0.2057      26.4951      22.1221      31.4847      8.9640
26.2418      18.1760      44.0356      13.5401      28.9836      25.9879      38.4722      20.1731
28.2694      29.0011      32.1910      5.8699      36.4863      29.7284      0.9718      28.1477
8.9586      24.6635      16.5618      23.6143      10.5597      15.1178      50.2111      10.2944
8.1519      9.5325      22.1075      18.5569      0.1215      18.8726      48.2077      16.8889
31.9499      17.6309      0.7732      0.4656      47.4134      23.7783      41.8671      3.5667
43.5474      3.9061      53.3524      26.7256      30.8165      13.4595      27.7133      5.0706
23.9222      7.6306      51.9612      22.8511      12.7938      15.7307      4.9568      8.3669
21.5051      24.0909      15.2548      27.2111      6.2070      5.1442      49.2430      16.7044
17.1168      20.0354      34.1688      22.7571      9.4402      3.9200      11.5812      14.5677
52.1181      0.4088      9.5559      11.4219      24.4509      6.5634      26.7213      28.5667
37.5848      16.8474      35.6619      9.9333      24.4654      3.1644      0.7775      6.9576
14.4703      13.6368      19.8660      15.1224      3.1616      4.2428      18.5245      14.3598
58.6849      27.1485      39.5168      16.9371      56.5089      13.7090      52.5211      15.7957
38.4300      8.4648      51.8181      23.0159      8.9983      23.6440      50.1156      23.7816
13.7909      1.9510      34.0574      23.3960      23.0624      8.4319      19.9857      5.7902
40.8801      14.2978      58.8289      14.5229      18.6635      6.7436      52.8423      27.2880
39.9494      29.5114      47.5099      24.0664      10.1121      27.2662      28.7812      27.6659
8.0831      27.6705      9.1556      14.1304      53.7989      0.2199      33.6490      0.3980
1.3496      16.8359      49.9816      6.0828      19.3635      17.6622      36.9545      23.0265
15.7320      19.5697      11.5118      17.3884      44.0398      16.2635      39.7139      28.4203
6.9909      23.1804      38.3392      19.9950      24.6543      19.6057      36.9980      24.3992
4.1591      3.1853      40.1400      20.3030      23.9876      9.4030      41.1084      27.7149


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-25 08:58 , Processed in 0.388964 second(s), 27 queries .

回顶部