⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insert.m

📁 TSP问题,即旅行商问题,matlab环境下可以运行
💻 M
字号:
function [x,changex,l]=insert(x0,l0)
global customer;
global depot;
global demand;


NumberRoute=length(l0);  
a=ceil(NumberRoute*rand);
b=ceil(NumberRoute*rand);
while a==b
a=ceil(NumberRoute*rand);
b=ceil(NumberRoute*rand);
end
%在路线a上选定顾客c1
c1_index=ceil(l0(a)*rand);
c1=x0(a,c1_index+1);
   x1(a,1:c1_index)=x0(a,1:c1_index);
   x1(a,c1_index+1:l0(a))=x0(a,c1_index+2:l0(a)+1);
l1(a)=l0(a)-1;

if l0(b)==1
  index=1;
else 
    for j=1:l0(b)-1
             all(j)=distance(demand,c1,x0(b,j+1))+distance(demand,c1,x0(b,j+2));
    end
    [dis,index]=min(all);
end

c2=x0(b,index+1);
x1(b,1:index+1)=x0(b,1:index+1);
x1(b,index+2)=c1;
x1(b,index+3:l0(b)+2)=x0(b,index+2:l0(b)+1);
l1(b)=l0(b)+1;

for v=1:NumberRoute
    if v~=a & v~=b
        x1(v,1:l0(v)+1)=x0(v,1:l0(v)+1);
        l1(v)=l0(v);
    end
end

if l1(a)==0
    x(1:a-1,:)=x1(1:a-1,:);
    x(a:NumberRoute-1,:)=x1(a+1:NumberRoute,:);
    l(1:a-1)=l1(1:a-1);
    l(a:NumberRoute-1)=l1(a+1:NumberRoute);
    
else
    x=x1;
    l=l1;
end
changex=[3 c1 c2];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -