机器人路径规划 转自《机器人控制系统的设计与matlab仿真》

主程序:

clear all;
close all;

t=31;     %Number of Cities is t-1
s=500;    %Number of Samples

pc=0.90;    %交叉概率
pm=0.20;    %变异概率

pop=zeros(s,t);
for i=1:s
   pop(i,1:t-1)=randperm(t-1);
end

for k=1:1:100       %循环100次
if mod(k,10)==1
    k
end
pop=chap10_1dis(pop);

c=15;
pop=chap10_1select(pop,c);

p=rand;
if p>=pc
   pop=chap10_1cross(pop);      %交叉
end
if p>=pm
   pop=chap10_1mutate(pop);     %变异
end

end
pop

min(pop(:,t))
J=pop(:,t);
fi=1./J;

[Oderfi,Indexfi]=sort(fi);   % Arranging fi small to bigger
BestS=pop(Indexfi(s),:);     % Let BestS=E(m), m is the Indexfi belong to max(fi)

I=BestS;

x=[87 91 83 71 64 68 83 87 74 71 58 54 51 37 41 2 7 22 25 18 4 13 18 24 25 41 45 44 58 62];
y=[7 38 46 44 60 58 69 76 78 71 69 62 67 84 94 99 64 60 62 54 50 40 40 42 38 26 21 35 35 32];

%x=[87 58 91 83 62 71 64 68 83 87 74 71 58 54 51 37 41 2 7 22 25 18 4 13 18 24 25 41 45 44];
%y=[7 35 38 46 32 44 60 58 69 76 78 71 69 62 67 84 94 99 64 60 62 54 50 40 40 42 38 26 21 35];

for i=1:1:t-1
	x1(i)=x(I(i));
	y1(i)=y(I(i));
end
x1(t)=x(I(1));
y1(t)=y(I(1));

figure(1);
plot(x1,y1,'-or');

适应度函数:

function [pop]=qiujuli(pop)
[s,t]=size(pop);
for i=1:1:s
   dd=0;
   for j=1:1:t-2
      dd=dd+chap10_1calculate(pop(i,j),pop(i,j+1));
   end
%   dd=dd+ga_tsp_juli(pop(i,1),pop(i,t-1));
   pop(i,t)=dd;     %矩阵最后一行  存储距离的大小
end

距离计算函数:

function [d]=juli(m,n)
x=[87 91 83 71 64 68 83 87 74 71 58 54 51 37 41 2 7 22 25 18 4 13 18 24 25 41 45 44 58 62];
y=[7 38 46 44 60 58 69 76 78 71 69 62 67 84 94 99 64 60 62 54 50 40 40 42 38 26 21 35 35 32];
%%%城市的距离用一对(x,y)表示。

%m=m+1;
%n=n+1;
d=sqrt((x(m)-x(n))^2+(y(m)-y(n))^2);

选择算子函数:

function [pop]=select(pop,k)

[s,t]=size(pop);
m11=(pop(:,t));     %列向量,pop最后一列表示距离远近
%m11
m11=m11';               %m11为1*500行向量
mmax=zeros(1,k);    %k=c=15
mmin=zeros(1,k);

num=1;
while num<k+1
   [a,mmax(num)]=max(m11);
   m11(mmax(num))=0;
   num=num+1;
end

num=1;
while num<k+1
   [b,mmin(num)]=min(m11);
   m11(mmin(num))=a;
   num=num+1;
end

for i=1:k
   pop(mmax(i),:)=pop(mmin(i),:);           %利用最小值替换最大值
end



交叉算子函数:

function [pop]=cross(pop)       %交叉
[s,t]=size(pop);

pop1=pop;

for i=1:2:s
   m=randperm(t-3)+1;
   crosspoint(1)=min(m(1),m(2));
   crosspoint(2)=max(m(1),m(2));

%   middle=pop(i,crosspoint(1)+1:crosspoint(2));
%   pop(i,crosspoint(1)+1:crosspoint(2))=pop(i+1,crosspoint(1)+1:crosspoint(2));
%   pop(i+1,crosspoint(1)+1:crosspoint(2))=middle;
   

%%%%截取crosspoint(1)前面的部分进行交叉
   for j=1:crosspoint(1)
      while find(pop(i,crosspoint(1)+1:crosspoint(2))==pop(i,j))
         zhi=find(pop(i,crosspoint(1)+1:crosspoint(2))==pop(i,j));
         y=pop(i+1,crosspoint(1)+zhi);
         pop(i,j)=y;
      end
   end
   
   
%%%%截取crosspoint(2)后面的部分进行交叉
   for j=crosspoint(2)+1:t-1
      while find(pop(i,crosspoint(1)+1:crosspoint(2))==pop(i,j))
         zhi=find(pop(i,crosspoint(1)+1:crosspoint(2))==pop(i,j));
         y=pop(i+1,crosspoint(1)+zhi);
         pop(i,j)=y;
   end
end
end
[pop]=chap10_1dis(pop);

for i=1:s
    if pop1(i,t)<pop(i,t)
       pop(i,:)=pop1(i,:);
    end
end

变异算子函数:

function [pop]=mutate(pop)

[s,t]=size(pop);

pop1=pop;

for i=1:2:s
   m=randperm(t-3)+1;       %去除城市队列的头和尾,头尾是一个城市
   mutatepoint(1)=min(m(1),m(2));
   mutatepoint(2)=max(m(1),m(2));

   mutate=round((mutatepoint(2)-mutatepoint(1))/2-0.5);
   for j=1:mutate
      zhong=pop(i,mutatepoint(1)+j);
      pop(i,mutatepoint(1)+j)=pop(i,mutatepoint(2)-j);
      pop(i,mutatepoint(2)-j)=zhong;
   end
end

[pop]=chap10_1dis(pop);
for i=1:s
   if pop1(i,t)<pop(i,t)
      pop(i,:)=pop1(i,:);
   end
end


  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机器人控制系统设计MATLAB仿真主要是指利用MATLAB软件进行机器人控制系统设计仿真机器人控制系统设计的目标是实现对机器人的精确控制和运动规划,使其能够完成各种任务。 在机器人控制系统设计中,首先需要对机器人模型进行建模和参数化,包括机械结构、惯性参数和传感器模型等。然后,根据机器人的控制要求和任务需求,选择适当的控制策略和算法,例如经典的PID控制、模糊控制、最优控制等。这些算法可以根据机器人的特性进行调整和优化,以达到最佳控制效果。 MATLAB作为一款强大的科学计算软件,提供了丰富的工具箱和函数,可以方便地进行机器人控制系统设计仿真和分析。在MATLAB中,可以利用Simulink工具进行系统建模和仿真,通过连接各种模块和信号流进行系统的搭建和模拟运行。同时,可以利用MATLAB控制系统工具箱进行控制器的设计和调整,例如根据系统的频域响应进行控制器的频率域设计,或者利用优化算法进行最优控制器的参数寻优。 通过MATLAB仿真,可以验证控制系统设计的性能,包括运动轨迹的平滑性、目标追踪的精度、抗干扰能力等。同时,还可以通过仿真分析控制系统的系统稳定性、鲁棒性和鲁棒稳定性等指标。 总之,机器人控制系统设计MATLAB仿真是一种快速、高效、可靠的设计方法,可以帮助工程师和研究人员实现对机器人控制系统的全面设计和评估。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值