XDI YDI出现五个不同值并且正确 TI无法出现

重心迭代法 迭代五次

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


img

img

img