⑴ 求货郎担问题的matlab算法
货郎担问题有很多解法,模拟退火,遗传算法,动态规划等。
基于matlab TSP问题遗传算法的实现
%TSP问题(又名:旅行商问题,货郎担问题)遗传算法通用matlab程序
%D是距离矩阵,n为种群个数,建议取为城市个数的1~2倍,
%C为停止代数,遗传到第 C代时程序停止,C的具体取值视问题的规模和耗费的时间而定
%m为适应值归一化淘汰加速指数 ,最好取为1,2,3,4 ,不宜太大
%alpha为淘汰保护指数,可取为0~1之间任意小数,取1时关闭保护功能,最好取为0.8~1.0
%R为最短路径,Rlength为路径长度
function [R,Rlength]=geneticTSP(D,n,C,m,alpha)
[N,NN]=size(D);
farm=zeros(n,N);%用于存储种群
for i=1:n
farm(i,:)=randperm(N);%随机生成初始种群
end
R=farm(1,:);%存储最优种群
len=zeros(n,1);%存储路径长度
fitness=zeros(n,1);%存储归一化适应值
counter=0;
while counter<c
for i=1:n
len(i,1)=myLength(D,farm(i,:));%计算路径长度
end
maxlen=max(len);
minlen=min(len);
fitness=fit(len,m,maxlen,minlen);%计算归一化适应值
rr=find(len==minlen);
R=farm(rr(1,1),:);%更新最短路径
FARM=farm;%优胜劣汰,nn记录了复制的个数
nn=0;
for i=1:n
if fitness(i,1)>=alpha*rand
nn=nn+1;
FARM(nn,:)=farm(i,:);
end
end
FARM=FARM(1:nn,:);
[aa,bb]=size(FARM);%交叉和变异
while aa<n
if nn<=2
nnper=randperm(2);
else
nnper=randperm(nn);
end
A=FARM(nnper(1),:);
B=FARM(nnper(2),:);
[A,B]=intercross(A,B);
FARM=[FARM;A;B];
[aa,bb]=size(FARM);
end
if aa>n
FARM=FARM(1:n,:);%保持种群规模为n
end
farm=FARM;
clear FARM
counter=counter+1
end
Rlength=myLength(D,R);
function [a,b]=intercross(a,b)
L=length(a);
if L<=10%确定交叉宽度
W=1;
elseif ((L/10)-floor(L/10))>=rand&&L>10
W=ceil(L/10);
else
W
http://blog.renren.com/share/231644124/531791903
⑵ 做数学建模用到的遗传算法,难不难,要怎么学要不要用专门的工具箱
要看你用遗传算法解决什么问题,一般情况下,有两个方向使用遗传算法,一是自己编写遗传算法代码解决问题,二是用Matlab遗传算法工具箱。前者可以学习王小平的《遗传算法——理论、应用与软件实现》这本书,后者可以学习 雷英杰的《MATLAB遗传算法工具箱及应用》这本书,网上都可以找到电子版。
你要是用遗传算法解决旅行商问题这样的组合优化问题,建议你自己编码实现吧,网上可以找到很多代码参考。
⑶ 遗传算法解决旅行商问题(TSP)一:初始化和适应值
旅行商问题(Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。
设有n个城市,城市i和城市j之间的距离是 。设
那么TSP问题使下面的目标最小:
首先,设置一下参数:
这里假设有10个城市,其坐标定义于pos变量,第一行是各个城市的x坐标,第二行是各个城市的y坐标,比如第一个城市的坐标为(1,1),第三个城市的坐标为(2,2)。之后计算处各个城市之间的距离。
种群中每个个体,都表示着一个访问城市的路径,这意味着每个个体都要覆盖所有城市,但是只能经过一个城市一次。
根据种群中每个个体中城市的顺序,可以求出这个个体所代表的距离,距离越大,适应度越小,因此用距离的倒数作为个体的适应度值。
⑷ tSp Concorder算法原理
tsp问题遗传算法将多目标按照线性加权的方式转化为单目标,然后应用传统遗传算法求解
其中w_i表示第i个目标的权重,f_k表示归一化之后的第i个目标值。我们很容易知道,这类方法的关键是怎么设计权重。比如,Random Weight Genetic Algorithm (RWGA) 采用随机权重的方式,每次计算适应度都对所有个体随机地产生不同目标的权重,然后进行选择操作。Vector-Evaluated Genetic Algorithm (VEGA) 也是基于线性加权的多目标遗传算法。如果有K个目标,VEGA 会随机地将种群分为K个同等大小子种群,在不同的子种群按照不同的目标函数设定目标值,然后再进行选择操作。VEGA 实质上是基于线性加权的多目标遗传算法。VEGA 是第一个多目标遗传算法,开启了十几年的研究潮流。
1.TSP问题是指假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。本文使用遗传算法解决att30问题,即30个城市的旅行商问题。旅行商问题是一个经典的组合优化问题。一个经典的旅行商问题可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。从图论的角度来看,该问题实质是在一个带权完全无向图中,找一个权值最小的Hamilton回路。由于该问题的可行解是所有顶点的全排列,随着顶点数的增加,会产生组合爆炸,它是一个NP完全问题。TSP问题可以分为对称和不对称。在对称TSP问题中,两座城市之间来回的距离是相等的,形成一个无向图,而不对称TSP则形成有向图。对称性TSP问题可以将解的数量减少了一半。所以本次实验的TSP问题使用att48数据,可在tsplib中下载数据包。演化算法是一类模拟自然界遗传进化规律的仿生学算法,它不是一个具体的算法,而是一个算法簇。遗传算法是演化算法的一个分支,由于遗传算法的整体搜索策略和优化计算是不依赖梯度信息,所以它的应用比较广泛。我们本次实验同样用到了遗传算法(用MATLAB编写)来解决TSP问题。