es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener el tiempo por trayecto (en lugar de la distancia) en Anylogic?

Estoy desarrollando un modelo de simulación en Anylogic donde hay una flota de vehículos que brinda servicios de viajes compartidos a los viajeros. Para determinar si un vehículo puede recoger a cierto viajero, tengo una función que determina qué tan lejos está el viajero del vehículo, que se basa en esto: “getDistanceByRoute” y luego lo divido por una velocidad promedio para obtener un valor de “tiempo de espera” (si el tiempo de espera calculado está por debajo de un valor definido, se autoriza al vehículo a recogerlo). En verdad, lo que realmente importa es el tiempo de espera y no la distancia. Pero en este momento, no puedo encontrar una función que calcule el tiempo en lugar de la distancia. La velocidad del vehículo dependerá del tipo de carretera que el vehículo esté utilizando y eso se calcula completamente dentro del Mapa SIG por Anylogic. Pero no conozco esta velocidad de la carretera hasta que el vehículo ya esté viajando por la carretera, idealmente debería conocerla previamente en el cálculo para determinar el “tiempo de espera” real (en lugar de una estimación basada en la distancia calculada y la velocidad promedio definida).
¿Alguien puede ayudar, por favor?
¡Gracias por su tiempo!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hola,

    Para calcular el tiempo de espera en lugar de la distancia, puede utilizar la siguiente fórmula:

    tiempo de espera = distancia / velocidad del vehículo

    Para obtener la velocidad del vehículo, puede utilizar la función getSpeedLimitByCoord, la cual devuelve el límite de velocidad de la carretera en las coordenadas especificadas. Puede utilizar esta función para calcular la velocidad del vehículo en la carretera en la que actualmente está viajando.

    Aquí tienes un ejemplo de código:

    double distancia = getDistanceByRoute(viajero, vehículo);
    double límiteVelocidad = getSpeedLimitByCoord(vehículo.getX(), vehículo.getY());
    double velocidadVehículo = límiteVelocidad / 3.6; // convertir de km/h a m/s
    double tiempoEspera = distancia / velocidadVehículo;

    Luego puede utilizar el tiempo de espera para decidir si el vehículo puede recoger al viajero o no. ¡Espero que esto ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.