重心迭代法 迭代五次
Ti 最后应该出现五个 但是只有一个相同的TI
迭代五次 出现五个XDI YDI值 以及五个TI值 XDI YDI出现五个不同值并且正确 TI无法出现
A=[100 90 5 1200;110 80 5 800;120 30 2 600;130 10 2 450;85 40 5 900;
80 80 2 500;95 100 2 400;83 40 2 560;125 8 5 870;75 101 2 490;
85 10 2 560;50 70 2 550;30 40 5 850] %矩阵每列代表J的x J的y 运费率 需求量
N=0
x=0
y=0
for j=1:13
n0=A(j,3)*A(j,4) %运费率*需求量
N=N+n0
x0=A(j,1)*A(j,3)*A(j,4) %节点J的x*运费率*需求量
x=x+x0 %第一个坐标至第十三个叠加
y0=A(j,2)*A(j,3)*A(j,4)
y=y+y0
end
xd0=x/N %初次p0坐标 p0重心
yd0=y/N
DJ0=zeros(13,1); %使得dj成为一个13*1的矩阵
for j=1:13
dj0=sqrt((xd0-A(j,1))^2+(yd0-A(j,2))^2) %P0到各节点J的距离
DJ0(j)=dj0;
end
DJ0 %第一次计算得出d1的值
T0=0
for j=1:13
t0=A(j,3)*A(j,4)*DJ0(j,1) %累加求出T0的运输总成本
T0=T0+t0
end
T0 %第一次计算未使用dj得出的总运输费
DJe=DJ0
for i=1:5
for e=0:4
Xdi=0
Ydi=0
Ni=0
for j=1:13
xdi=A(j,1)*A(j,3)*A(j,4)/DJe(j,1) %分别计算每一个xj,yj,dj对应的分母中单项
ydi=A(j,2)*A(j,3)*A(j,4)/DJe(j,1) %再使用下一步累加
ni=A(j,3)*A(j,4)/DJe(j,1)
Ni=Ni+ni %分子
Xdi=Xdi+xdi
Ydi=Ydi+ydi %循环累加得出的分母
end
XDi=Xdi/Ni %每次计算得出的P0点坐标
YDi=Ydi/Ni
DJe=zeros(13,1);
for j=1:13
dji=sqrt((XDi-A(j,1))^2+(YDi-A(j,2))^2)
DJe(j)=dji;
end
DJe %每次迭代计算的dj形成的矩阵
Ti=0
DJw=DJe
for j=1:13
ti=A(j,3)*A(j,4)*DJw(j,1)
Ti=Ti+ti
end
end
Ti %计算得出的总运输费
end