Programación en lenguaje C en modelado matemático
Los requisitos previos para esta pregunta no están claros. Intento dar una descripción del método. La respuesta se basa en las siguientes suposiciones:
1. tiempo;
2. Cualquier pieza de trabajo se puede procesar en cualquier máquina
3. Se conoce el tiempo de procesamiento de la pieza de trabajo
p>
Se utiliza un algoritmo de prioridad de trabajos cortos para minimizar el tiempo total de mecanizado.
Para obtener una descripción detallada de este algoritmo, consulte cualquier libro "Principios del sistema operativo"
Pasos de la solución:
1. Clasifique las piezas de trabajo según el tiempo de procesamiento. , lo que requiere tiempo El más pequeño ocupa el primer lugar;
2. Configure una matriz U de tamaño M para representar el tiempo utilizado por cada máquina
3. matriz de tamaño N para representar el tiempo necesario para procesar la pieza de trabajo actual
4. Establezca una matriz de tamaño M para representar el tiempo de funcionamiento de cada máquina
4. Establezca las matrices U, R y N. Establezca cada elemento en 0;
5 Realice las siguientes operaciones en cada elemento en los datos de la pieza de trabajo:
Encuentre el elemento x con. valor más pequeño de la matriz N;
Reste el valor del elemento x del valor de cada elemento en la matriz N como su nuevo valor
Sume el valor de cada elemento en la matriz R; al valor del elemento x como su nuevo valor;
Establezca el valor del elemento x al tiempo de procesamiento requerido de la pieza de trabajo;
Modifique el valor en la matriz U: U[x ] =R[x] N[x];
p>6. Suma los valores de cada elemento en la matriz U y el resultado es el tiempo total más corto
¡Te deseo buena suerte!
----- --------------------------------- -----------------
El programa está escrito en lenguaje JAVA, se omite la operación de clasificación y se supone que el número de máquinas es 3
public static void main(String[] arg)lanza una excepción
{
int[] W=new int[]{1, 2, 3, 55 , 56, 77, 77, 88, 99, 100}; //El tiempo de trabajo requerido para la pieza de trabajo
int[] U=new int[]{0, 0, 0} //Total; tiempo dedicado a procesar piezas de trabajo por cada máquina, incluido el tiempo de espera
int[] R=new int[]{0, 0, 0} // El tiempo de funcionamiento de cada máquina
; int[] N=new int[]{0, 0, 0}; //Cada máquina ha terminado de procesar el tiempo actual requerido para el trabajo
for(int i=0; ilt; W.length ; i)
{
/**Encontrar la máquina más antigua disponible en la máquina actual. Para una máquina, m representa el nombre en clave de la máquina y x representa el tiempo que lleva. para que la máquina complete el trabajo actual*/
int m=0;
for(int j=1; jlt; .length;j)if(N[j]lt ;N[m])m=j;
int x=N[m];
//Coloque la matriz N en El valor de cada elemento menos el valor del elemento x es usado como su nuevo valor;
//Agrega el valor de cada elemento en la matriz R al valor del elemento x como su nuevo valor;
for(int j=0;jlt ;N.length;j)
{
N[j]-=x;
R[ j] =x
}
//Establezca el valor del elemento x (máquina m) al tiempo de procesamiento requerido de la pieza de trabajo
N[m] =W[i];
U[m] =(R[m] N[m]);
}
int total=0;
for(int i =0; ilt; U.longitud; i )total =U[i];
intln("El tiempo total es igual a: " total);
}