📄 salesman-fitness.m
字号:
load('usborder.mat','x','y','xx','yy');
plot(x,y,'Color','red'); hold on;
cities = 40;
locations = zeros(cities,2);
n = 1;
while (n <= cities)
xp = rand*1.5;
yp = rand;
if inpolygon(xp,yp,xx,yy)
locations(n,1) = xp;
locations(n,2) = yp;
n = n+1;
end
end
plot(locations(:,1),locations(:,2),'bo');
distances = zeros(cities);
for count1=1:cities,
for count2=1:count1,
x1 = locations(count1,1);
y1 = locations(count1,2);
x2 = locations(count2,1);
y2 = locations(count2,2);
distances(count1,count2)=sqrt((x1-x2)^2+(y1-y2)^2);
distances(count2,count1)=distances(count1,count2);
end;
create_permutations.m
type create_permutations.m
type crossover_permutation.m
type mutate_permutation.m
type traveling_salesman_fitness.m
%distances defined earlier
FitnessFcn = @(x) traveling_salesman_fitness(x,distances);
type traveling_salesman_plot.m
%locations defined earlier
my_plot = @(options,state,flag) traveling_salesman_plot(options, ...
state,flag,locations);
options = gaoptimset('PopulationType', 'custom','PopInitRange', ...
[1;cities]);
options = gaoptimset(options,'CreationFcn',@create_permutations, ...
'CrossoverFcn',@crossover_permutation, ...
'MutationFcn',@mutate_permutation, ...
'PlotFcn', my_plot, ...
'Generations',500,'PopulationSize',60, ...
'StallGenLimit',200,'Vectorized','on');
numberOfVariables = cities;
[x,fval,reason,output] = ga(FitnessFcn,numberOfVariables,options)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -