Problemas de programación en C relacionados con la selección del sitio del método del centro de gravedad, expertos, por favor, infórmeme
Hasta donde yo sé:
Fórmula: x0 = ( ∑ xiwi ) / ( ∑ wi )
y0 = ( ∑ yiwi ) / ( ∑ wi )
El modelo de ubicación de una sola instalación tiene diferentes nombres, tales como: método del centro de gravedad exacto, método de cuadrícula, método del centro de gravedad, etc. Porque los factores de selección de ubicación solo incluyen las tarifas de transporte y el volumen de transporte de carga. En ese momento, este modelo El método es relativamente simple.
Tomamos el costo más bajo desde el punto de almacén hasta cada punto de destino como objetivo de inspección:
Es decir:
Min TC=∑ViRidi i atraviesa todo destinos Ubicación...(0)
Entre ellos: TC——costo total de transporte;
Vi——volumen de transporte en el punto i;
Ri— —al punto i Tarifa de transporte;
di - la distancia desde la ubicación del almacén pendiente hasta el punto i.
Establezca las coordenadas indeterminadas del almacén como (X0, Y0) en el plano de coordenadas
∑ViRiXi/di
X0= ...(1) p >
∑ViRi/di
∑ViRiYi/di
Y0= …(2)
∑ViRi/di
Entre ellos, di se puede representar mediante la fórmula intercoordenada
di =SQR((X0-Xi)2 (Y0-Yi)2) ... (3)
El proceso de solución de este método:
1. Determinar las coordenadas de cada punto de destino y determinar el volumen de transporte de carga y la distancia en línea recta en cada punto
2. Independientemente del factor de distancia, utilice la fórmula del centro de gravedad para estimar el punto de ubicación inicial:
∑ViRiXi
X0= …(4)
∑ViRi
∑ViRiYi
Y0 …(5)
∑ViRi
3. Según la fórmula (3), utilice (X0, Y0) obtenido en el paso 2 para calcular di;
4. Sustituya di en la fórmula ( 1), (2), obtenga las coordenadas (X0, Y0) corregidas;
5 Vuelva a calcular di en función de las coordenadas (X0, Y0) corregidas;
6. Repita los pasos 4 y 5 hasta que las coordenadas (X0, Y0) ya no cambien o cambien dentro del rango de error durante el proceso de iteración continua. ;
7. Finalmente, si es necesario, use la fórmula (0) para calcular el costo total óptimo del sitio preferido.
#include lt;stdio.hgt;
#include lt;math.hgt;
struct xuanzhi
{
doble x, y, v, r;
}xz[5]={{3, 8, 2000, 0.050}, {8, 2, 3000, 0.050}, {2, 5, 2500, 0,075}, {6, 4, 1000, 0,075}, {8, 8, 1500, 0,075}}
principal()
{
;estructura xuanzhi;
int i;
doble d[5]
doble x0=0.0, y0=0.0, min=0.0, TC =0.0, t=0.0, m=0.0, w=0.0, x1=0.0, y1=0.0, m1=0.0, m2=0.0, w2=0.0, t1=0.0, m3=0.0, w3=0.0;
for(i=0;ilt;5;i)
{
m =xz[i].v*xz[i].r*xz[i ].x;
w =xz[i].v*xz[i].r
m1 =xz[i].v*xz[i].r*; xz[i].y;
}
x0=m/w;
y0=m1/w; i=0; ilt; 5; i )
{
d[i]=sqrt((xz[i].x-x0)*(xz[i].x -x0) (xz[i].y-y0)*(xz[i].y-y0));
m3 =xz[i].v*xz[i].r*xz [i].x/d[i];
t1 =xz[i].v*xz[i].r*xz[i].y/d[i];
w3 =xz[i].v*xz[i].r/d[i]
}
x1=m3/w3; p> y1=t1/w3;
hacer
{
x0=x1
y0=y1;
for(i=0;ilt;5;i)
{
d[i]=sqrt((xz[i].x-x0)*(xz [i].x-x0) (xz[i].y-y0)*(xz[i].y-y0));
m2 =xz[i].v*xz[i ].r*xz[i].x/d[i];
t =xz[i].v*xz[i].r*xz[i].y/d[i] ;
w2 =xz[i].v*xz[i].r/d[i];
}
x1=m2/w2
;
y1=t/w2
m2=0.0
t=0.0; >
} while(fabs(x0-x1)-0.00000001gt; 0amp; amp; fabs(y0-y1)-0.00000001gt;
printf("x0=12lf, y0=); 12lf\n",x0,y0);
for(i=0;ilt;5;i)
{
d[i]=sqrt ((xz[i].x-x0)*(xz[i].x-x0) (xz[i].y-y0)*(xz[i].y-y0));
min=xz[i].v*xz[i].r*d[i];
TC =min
}
printf; ("min TC=12lf\n", TC
getch()
}
);