导航:首页 > 车辆百科 > 遗传算法车辆路径

遗传算法车辆路径

发布时间:2021-09-07 19:19:02

1、遗传算法路径规划是什么原理

遗传算法有相当大的引用。遗传算法在游戏中应用的现状在遗传编码时, 一般将瓦片的坐标作为基因进行实数编码, 染色体的第一个基因为起点坐标, 最后一个基因为终点坐标, 中间的基因为路径经过的每一个瓦片的坐标。在生成染色体时, 由起点出发, 随机选择当前结点的邻居节点中的可通过节点, 将其坐标加入染色体, 依此循环, 直到找到目标点为止, 生成了一条染色体。重复上述操作, 直到达到指定的种群规模。遗传算法的优点:1、遗传算法是以决策变量的编码作为运算对象,可以直接对集合、序列、矩阵、树、图等结构对象进行操作。这样的方式一方面有助于模拟生物的基因、染色体和遗传进化的过程,方便遗传操作算子的运用。另一方面也使得遗传算法具有广泛的应用领域,如函数优化、生产调度、自动控制、图像处理、机器学习、数据挖掘等领域。2、遗传算法直接以目标函数值作为搜索信息。它仅仅使用适应度函数值来度量个体的优良程度,不涉及目标函数值求导求微分的过程。因为在现实中很多目标函数是很难求导的,甚至是不存在导数的,所以这一点也使得遗传算法显示出高度的优越性。3、遗传算法具有群体搜索的特性。它的搜索过程是从一个具有多个个体的初始群体P(0)开始的,一方面可以有效地避免搜索一些不必搜索的点。另一方面由于传统的单点搜索方法在对多峰分布的搜索空间进行搜索时很容易陷入局部某个单峰的极值点,而遗传算法的群体搜索特性却可以避免这样的问题,因而可以体现出遗传算法的并行化和较好的全局搜索性。4、遗传算法基于概率规则,而不是确定性规则。这使得搜索更为灵活,参数对其搜索效果的影响也尽可能的小。5、遗传算法具有可扩展性,易于与其他技术混合使用。以上几点便是遗传算法作为优化算法所具备的优点。遗传算法的缺点:遗传算法在进行编码时容易出现不规范不准确的问题。

2、无人车辆利用遗传算法的路径规划程序,用c/c++要比java方便吗,我一直用java

一样,java改C++也很容易。嵌入式用java的也很多。不过用C,C++开发嵌入式更直接,代码编译完就能运行,用java需要一个虚拟机。手机、机顶盒都有java的。android可以用于嵌入式,也是java的。

3、没学过matlab,下面是遗传算法解决车辆路径算法,请解释一下选择,和交叉,谢谢!!!

[x,lumda]=eig(A);
这句是得到A的特征值和相应的特征向量.
会发现x是特征向量,是N*N的矩阵(N是A的大小),即3*3
而lumda也是一个3*3的矩阵,不过它只是对角线上有值。

只要找到对角线上绝对值最大的列。然后输出x相应的列就是最大特征根对应的特征值。

r=abs(sum(lumda)),先对lumda进行列求和。然后求绝对值,实际上就是求对角线元素的绝对值。
n=find(r==max(r)),首先先求出r中最大的值,然后再找到哪一列是最大的值。最后得到的n是最大特征值对应的列。

于是最大特征值为lumda中第n行第n列(lumda是方阵,其实就是求它的第n个对角元)
相应的特征向量,就是x中第n列。

4、你好,你的遗传算法解决车辆路径问题的matlab程序代码能给我一份吗,课程设计用,万分感谢

我那最后弄得是假的,弄个假代码,最后PS做的

5、急求车辆路径问题遗传算法的matlab代码!!!!

function [path,lmin]=ga(data,d)  %data为点集,d为距离矩阵,即赋权图
tic
%======================
sj0=data;%开环最短路线
%=================================
% sj0=[data;data(1,:)]; %闭环最短路线
%=========================
x=sj0(:,1);y=sj0(:,2);
N=length(x);
%=========================
% d(N,:)=d(1,:);%闭环最短路线
% d(:,N)=d(:,1);%距离矩阵d    
%======================
L=N;   %sj0的长度
w=800;dai=1000;
%通过改良圈算法选取优良父代A
for k=1:w
c=randperm(L-2);
c1=[1,c+1,L];
flag=1;
while flag>0
flag=0;
for m=1:L-3
for n=m+2:L-1
if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))<d(c1(m),c1(m+1))+d(c1(n),c1(n+1))
flag=1;
c1(m+1:n)=c1(n:-1:m+1);
end
end
end
end
J(k,c1)=1:L;
end
J=J/L;
J(:,1)=0;J(:,L)=1;
rand('state',sum(clock));
%遗传算法实现过程
A=J;
for k=1:dai %产生0~1 间随机数列进行编码
B=A;
c=randperm(w);
%交配产生子代B
for i=1:2:w
F=2+floor(100*rand(1));
temp=B(c(i),F:L);
B(c(i),F:L)=B(c(i+1),F:L);
B(c(i+1),F:L)=temp;
end; 
%变异产生子代C
by=find(rand(1,w)<0.1);
if length(by)==0
by=floor(w*rand(1))+1;
end
C=A(by,:);
L3=length(by);
for j=1:L3
bw=floor(1+fix(rand(1,3)*N));      %产生1-N的3个随机数
bw=sort(bw);
C(j,:)=C(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:L]);
end
G=[A;B;C];
TL=size(G,1);
%在父代和子代中选择优良品种作为新的父代
[dd,IX]=sort(G,2);
temp=[];
temp(1:TL)=0;
for j=1:TL
for i=1:L-1
temp(j)=temp(j)+d(IX(j,i),IX(j,i+1));
end
end
[DZ,IZ]=sort(temp);
A=G(IZ(1:w),:);
end
path=IX(IZ(1),:)
% for i=1:length(path)
% path(i)=path(i)-1;
% end
% path=path(2:end-1);
lmin=0;l=0;
for j=1:(length(path)-1)
    t1=path(j);t2=path(j+1);
    l=d(t1,t2);
    lmin=lmin+l;
end
xx=sj0(path,1);yy=sj0(path,2);
plot(xx,yy,'r-o');
axis equal
toc

代码亲自前几天还用来着,绝对可用


与遗传算法车辆路径相关的内容