# Выбор оптимальной топологии сети и расчет минимальной суммарной длинны соединительного кабеля с помощью программы, страница 5

L_opt = 0;

for(int i=0; i<4; i++)

{

//=========== 1-е здание ========================

L21 = abs(hub[2].x-mas_comp[i].x)+

abs(Form1->hub[2].y-Form1->mas_comp[i].y)+

(Form1->mas_comp[i].z)+

Form1->hub[2].z;

if(L21 < m21)

{

m21 = L21;

hub[0].x = mas_comp[i].x;

hub[0].y = mas_comp[i].y;

hub[0].z = mas_comp[i].z;

hub[0].nom = mas_comp[i].nom;

}

//=========== 2-е здание ========================

L23 = abs(hub[2].x-mas_comp[i+4].x)+

abs(Form1->hub[2].y-Form1->mas_comp[i+4].y)+

(Form1->mas_comp[i+4].z)+

Form1->hub[2].z;

if(L23 < m23)

{

m23 = L23;

hub[1].x = mas_comp[i+4].x;

hub[1].y = mas_comp[i+4].y;

hub[1].z = mas_comp[i+4].z;

hub[1].nom = mas_comp[i+4].nom;

}

//=========== 4-е здание ========================

L24 = abs(hub[2].x-mas_comp[i+12].x)+

abs(Form1->hub[2].y-Form1->mas_comp[i+12].y)+

(Form1->mas_comp[i+12].z)+

Form1->hub[2].z;

if(L24 < m24)

{

m24 = L24;

hub[3].x = mas_comp[i+12].x;

hub[3].y = mas_comp[i+12].y;

hub[3].z = mas_comp[i+12].z;

hub[3].nom = mas_comp[i+12].nom;

}

L_opt = m21 + m23 + m24;

}

//\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$

//конец оптимизации по оптоволокну

//\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$

}

if(M_flag == 1)

{

//########################################################

//оптимизация по витой паре

//########################################################

int d[16],m=10000;

L_opt=0;

for(int i=0; i<16; i++)

d[i]=0;

//=========== 1-е здание ========================

for(int j=0; j<4; j++)

for(int i=0; i<4; i++)

{

d[j] = d[j]+ abs(mas_comp[j].x - mas_comp[i].x)+

abs(mas_comp[j].y - mas_comp[i].y)+

abs(mas_comp[j].z - mas_comp[i].z);

}

for(int i=0; i<4; i++)

if(d[i]<m)

{

m = d[i];

hub[0].x = mas_comp[i].x;

hub[0].y = mas_comp[i].y;

hub[0].z = mas_comp[i].z;

hub[0].nom = mas_comp[i].nom;

hub[0].Lsegm = m;

}

for(int i=0; i<16; i++)

d[i]=0;

//=========== 2-е здание ========================

m = 10000;

for(int j=4; j<8; j++)

for(int i=4; i<8; i++)

{

d[j] = d[j]+ abs(mas_comp[j].x - mas_comp[i].x)+

abs(mas_comp[j].y - mas_comp[i].y)+

abs(mas_comp[j].z - mas_comp[i].z);

}

for(int i=4; i<8; i++)

if(d[i]<m)

{

m = d[i];

hub[1].x = mas_comp[i].x;

hub[1].y = mas_comp[i].y;

hub[1].z = mas_comp[i].z;

hub[1].nom = mas_comp[i].nom;

hub[1].Lsegm = m;

}

for(int i=0; i<16; i++)

d[i]=0;

//=========== 3-е здание ========================

m = 10000;

hub[2].Lsegm = 0;

for(int i=8; i<12; i++)

hub[2].Lsegm = hub[2].Lsegm +

abs(hub[2].x - mas_comp[i].x)+

abs(hub[2].y - mas_comp[i].y)+

abs(hub[2].z - mas_comp[i].z);

for(int i=0; i<16; i++)

d[i]=0;

//=========== 4-е здание ========================

m = 10000;

for(int j=12; j<16; j++)

for(int i=12; i<16; i++)

{

d[j] = d[j]+ abs(mas_comp[j].x - mas_comp[i].x)+

abs(mas_comp[j].y - mas_comp[i].y)+

abs(mas_comp[j].z - mas_comp[i].z);

}

for(int i=12; i<16; i++)

if(d[i] < m)

{

m = d[i];

hub[3].x = mas_comp[i].x;

hub[3].y = mas_comp[i].y;

hub[3].z = mas_comp[i].z;

hub[3].nom = mas_comp[i].nom;

hub[3].Lsegm = m;

}

//########################################################

//конец оптимизации по витой паре

//########################################################

}

//\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$

// расчет параметров сети

//\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$

if(M_flag != 1)

{

int k=0;

for(int j=0; j<4; j++)

{

hub[j].Lsegm = 0;

for(int i=0; i<4; i++)

hub[j].Lsegm = hub[j].Lsegm +

abs(hub[j].x - mas_comp[i+k].x)+

abs(hub[j].y - mas_comp[i+k].y)+

abs(hub[j].z - mas_comp[i+k].z);

k = k+4;

}

}

else

{