数学建模旅游问题C4(6)

2018-12-29 21:26

302006

e = 5;

Maxtime = 200; n = length(D); m = n;

Ta = Tao0*ones(n,n) - Tao0*eye(n); TM = []; LM = 100000; ant = zeros(m,n+1); ata = zeros(m,n); for i = 1:m for j = i+1:n

ata(i,j) = 1/D(i,j); ata(j,i) = ata(i,j); end end

for time = 1:Maxtime for k = 1:m

city(k,:) = 1:n; end s = 1; for i = 1:m

ant(i,s) = unidrnd(n); ant(i,n+1) = ant(i,s); city(i,ant(i,s)) = 0; end while s < n

p = zeros(m,n); for i = 1:m A(i) = 0; for j = 1:n

if city(i,j) ~= 0

A(i) = A(i) + (Ta(ant(i,s),j)^alpha)*(ata(ant(i,s),j)^beta); end end

for j = 1:n

if city(i,j) ~= 0

p(i,j) = (Ta(ant(i,s),j)^alpha)*(ata(ant(i,s),j)^beta)/A(i); end end

pp = unifrnd(0,1); j = 1; while pp>0

pp = pp - p(i,j); j = j + 1;

最佳旅游路线设计

25

302006

end j = j - 1; ant(i,s+1) = j; for k = 1:n

if city(i,k) == j; city(i,k) = 0; break; end end end s = s + 1; end

L = compu(ant,D); [Lmin,t] = min(L); if Lmin < LM LM = Lmin; TM = ant(t,:); end

deltaTa = zeros(m,n); for i = 1:m for j = 1:n-1

deltaTa(ant(i,j),ant(i,j+1)) = deltaTa(ant(i,j),ant(i,j+1)) + Q/L(i); end end

for j = 1:n-1

deltaTa(TM(j),TM(j+1)) = deltaTa(TM(j),TM(j+1)) + Q/LM; end for i = 1:m for j = 1:n

Ta(i,j) = rho*Ta(i,j) + deltaTa(i,j); end end

trace(time) = LM; end figure(1); plot(trace); toc;

function D = Distance(C) n = length(C); D = zeros(n,n); for i = 1:n for j = i+1:n

D(i,j) = norm(C(:,i) - C(:,j));

最佳旅游路线设计

26

302006

D(j,i) = D(i,j); end end

function L = compu(ant,D); for i = 1:length(D) L(i) = 0;

for j = 1:length(ant)-1

L(i) = L(i) + D(ant(i,j),ant(i,j+1)); end end

程序3:问题一的MATLAB遗传算法程序 function [ y , road ] = GATSP1 % 程序说明:

% 本程序为遗传算法求解旅行商问题 %

% 变量说明: % 输入:

% D:城市位置矩阵n*2。 % 输出:

% y:近似最短路径的总长度; % road:近似最短路径。 % tic D=[

0.00 6.73 15.97

28.96 32.82 29.87 33.02 35.14 36.21 37.55 18.03 22.27

9.90 12.02

36.58

11.03 37.49

12.97 39.14 6.98 14.58 12.20 10.15

21.39

22.23 24.29

29.25 22.25

29.85 29.27

18.91

13.71

21.31

26.06

35.98 34.47

7.00 14.60 17.75

35.72 29.65 27.53 26.46 38.15 25.05 22.87

37.37

18.22

25.40

32.42

34.54 35.61

31.30

12.27 13.34

19.87 20.94

16.10 15.03

27.52 28.59

29.18 28.11

5.13 3.01 1.94 0.00 20.48 28.40 25.65 31.46

30.05

17.47 13.34

18.54 15.28

20.48

0.00 5.20 10.38

22.81

34.24 31.54

34.32

5.20 0.00 7.60 20.03

15.25

15.35 12.27

15.28

22.88

16.97

30.53

6.73 0.00 9.24 3.17 5.29 6.36 8.30 12.18 15.97

9.24 0.00 6.07 8.19 9.26 11.20

9.90 3.17 6.07 0.00 2.12 3.19 5.13 15.35 12.02 11.03 12.97 18.91 13.71

5.29 8.19 2.12 0.00 1.07 3.01 17.47 6.36 9.26 3.19 1.07 0.00 1.94 18.54 8.30 11.20 12.18

12.20

6.98 7.00 10.15

最佳旅游路线设计

27

302006

21.31 14.58 14.60 17.75 19.87 20.94

22.88

10.38

7.65 14.67 15.27 23.86 23.94 26.06 21.39 24.29 18.22 16.10 15.03 16.97

22.81

0.00 20.08 22.35 21.75 11.43 13.08 28.96 22.23 22.25 25.40 27.52 28.59

30.53

18.03

20.08 0.00 7.02 7.62 21.07 16.29 35.98 29.25 29.27 32.42 34.54 35.61

37.55

25.05

22.35 7.02 0.00 0.60 14.05 9.27 36.58 29.85 29.87 33.02 35.14 36.21

38.15

25.65

21.75 7.62 0.60 0.00 13.45 8.67 37.49 32.82 35.72 29.65 27.53 26.46 28.40 34.24 11.43 21.07 14.05

13.45

0.00 4.78

39.14

34.47

37.37

31.30

29.18

28.11

30.05

34.32

13.08

16.29

9.27 8.67 4.78 0.00

];

NIND = 100; %种群数量; MAXGEN = 500; %最大遗传代数; pc = 0.8; %交叉概率; pm = 0.1; %变异概率;

N = length(D(:,1)); %求城市数量 %随机生成初始种群 for i = 1:NIND B(i,:) = manu(N);

F(i) = Distance(B(i,:),N,D); end SelCh = B; F = F';

FitnV = (10000./F); %计算适应度

for gen = 1:MAXGEN

for t=1:floor(NIND/30) %寻找每代的一部分最优群种以便遗传给下一代 for i = 1:NIND if F(i) == min(F)

bestSelCh(t,:) = SelCh(i,:); bestFit(t) = F(i); break; end end end

SelCh = select ('rws', SelCh, FitnV); %选择

for i = 1:0.1*NIND %生成一部分子代 Chrom(i,:) = manu(N);

C(i) = Distance(Chrom(i,:),N,D); G(i) = 10000/C(i); 最佳旅游路线设计

7.60 0.00 12.43

20.03

12.43

15.25

7.65

22.27

14.67

22.87

15.27

31.46 23.86 31.54

23.94

28

302006

end

SelCh = reins(SelCh,Chrom,1,1,F,G'); %插入 SelCh = Crossover (SelCh,N,NIND,pc); %交叉 SelCh = Muta (SelCh,N,NIND,pm); %变异 for i = 1:NIND

F(i) = Distance(SelCh(i,:),N,D); end

for t=1:floor(NIND/30) %遗传的最优个体替换适应度最差的新个体 for i = 1:NIND if F(i) == max(F)

SelCh(i,:) = bestSelCh(t,:); F(i) = bestFit(t); break; end end end

FitnV = (10000./F); %计算适应度 trace (gen, 1) = min(F); %寻找每一代的最优值 for i = 1:NIND

if F(i) == trace (gen, 1) key = SelCh(i,:); break; end end

trace (gen, 2) = mean(F); %寻找每一代的平均值 if gen == 1

y = trace (gen, 1); road = key; else

if y > trace (gen, 1) y = trace (gen, 1);

road = key; %寻找当前最优路径 end end end toc

%作图,观察遗传代数与路径长度的关系 figure(2); hold on;

plot(trace(:,1)); plot(trace(:,2),'r'); title('性能追踪'); xlabel('进化代数');

最佳旅游路线设计

29


数学建模旅游问题C4(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版六年级上册语文期末复习1.2(日积月累语境测试题)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: