Cómo aplicar varios algoritmos en el despacho real de ascensores
Implementación La siguiente es una introducción detallada al método específico de mi implementación. Aunque me tomó casi 2 días, no es muy complicado. Aquí me baso en el principio de introducir nuevas ideas. eche un vistazo:
Definiremos una clase llamada Case para almacenar algunos datos que se probarán y luego definiremos una clase llamada CaseUtil para implementar nuestra solución.
En primer lugar, déjame hablar de ideas específicas: aquí solo considero el programa ascendente (en realidad es el mismo de arriba a abajo, hay que pensarlo). Por ejemplo, supongamos que el piso actual es 29 30 31,3. Entonces, ¿qué hacemos?
En primer lugar, en cualquier caso, supongamos que el tiempo de llegada de la última capa, es decir, la capa 31, es (31-1) * 4 (stopNums-1) * 10. Cabe señalar que aquí para simplificar seguiremos los datos basados en el análisis, 4 en realidad representa el tiempo que tarda el ascensor en pasar por cada piso, mientras que 10 representa el tiempo que tarda el ascensor en detenerse en cada piso. ¿Qué es stopNums arriba? Este es el número de paradas cuando el ascensor llega al piso 31, menos 1, que es el número de paradas a partir del piso 31. Es muy probable que la persona que llegue al último nivel sea la última en llegar. Según este ejemplo, el ejemplo anterior se puede ver fácilmente. Simplemente deténgase 2 veces en 28 y 31. Finalmente quienes llegan al suelo son las personas del piso 30. Por supuesto, en el ejemplo de ahora, en realidad es diferente porque los valores específicos son diferentes. Así que aquí utilicé una idea aproximada y está muy cerca de nuestra solución óptima, lo que también me inspiró. Aunque el último nivel no es necesariamente el último lugar, está lo suficientemente cerca y el tiempo invertido solo está relacionado con una variable stopNums, es decir, se puede concluir que:
Ascensor Cuantas menos paradas, menos tiempo que se tarda en llegar al último nivel, y de igual forma, menos tiempo se tarda en llegar al tiempo óptimo.
Suponiendo que tenemos una manera de calcular la mejor solución de parada en función del número actual de paradas, ¿cómo podemos obtener la mejor solución real? El siguiente fragmento de código logra nuestro objetivo muy bien.