Pregunta schedulera

(Antiguo Software y RR&Co). Ahora dedicado exclusivamente a temas relacionados con TC.
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Pregunta schedulera

Mensaje por tonisegarra »

Hola amigos.
En el avión de vuelta de Basilea nos hemos entretenido haciendo un pequeño ejercicio schedullero (por cierto que en el avión había un texto en el que salía la palabreja esa). Tenemos un trayecto que va desde el bloque A al bloque E pasando por los bloques B, C y D en paralelo como una estación de paso con trs vías. Dos schedulles, el primero con salida en A y llegada a cualquiera de las tres vías B, C o D. el segundo con salida de cualquiera de esas tres mismas vías y llegada a E. Luego, pero eso no importa, cerramos el circuito con un óvalo y de E volvemos a A. El sucesor del primer schedulle es el segundo. Si elegimos la opción oldest los trenes siempre seguiran el mismo orden. para cambiar el orden elegimos change en lugar de oldest. Perfecto.
Ahora viene el problema. Si la estación de paso fuese de dos vías en lugar de tres eso no serviría de nada porque tanto en un caso como en otro saldrà el que esté detenido. Pero lo que queríamos era que el programa eligiese al azar si dejaba salir el tren que ya estaba en la estación o dejaba que prosiguiese el que acababa de llegar. Más o menos una opción aleatoria. No hemos sabido hacerlo.
¿Aguna ayuda?
Si no se entiende el problema lo decís y cuelgo el yrr.
Saludos
Toni
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,

Haciendo la salvedad de que el azar no existe en informática, para conseguir lo que buscas simplemente no marques ninguna opción.

Saludos,

JM
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Mensaje por tonisegarra »

Gracias, JM. Yo estaba convencido que había que marcar una de las opciones obligatoriamente.
Toni
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,

Si no marcas ni 'keep' ni 'change' ni 'oldest' lo que haces es dejar la decisión de cuál tren arrancar en manos del programa. Según el propio manual, esta elección es arbitraria.

Por mi experiencia, si las tres situaciones de salidas son equivalentes la elección podría clasificarse de aleatoria. (Aunque repito que en informática la aleatoriedad pura no existe)

Salud,

JM
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Mensaje por tonisegarra »

Hola de nuevo, JM.
Cuando utilizo la palabra azar o aleatorio lo hago en el sentido que acabas de explicar: que sea el programa el que tome una decisión que ti calificas de arbitraria. Es obvio que desde un punto de vista informáticono es exactamente aleatorio pero este mismo procedimiento se utiliza para genera números supuestamente aleatorios porque, como mínimo, lo parecen.
Puestos a preguntar. si en un de las dos vías tengo una vaporosa y por la otra entra una eléctrica (podría ser al revés), ¿de qué manera puedo dar preferencia a la élétrica? O, ampliando la pregunta, si tengo una locomotora cuya velocidad es de 80 km/h y una segunda de 100 km/h ¿cómo puedo dar salida preferente a la más rápida sea cual sea la que haya llegado primero y por lo tanto esté detenida?
Saludos para ti y para los lectores y posibles interlocutores.
Toni
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,

Hay diversos métodos para lograr lo que apuntas: que el tren rápido tenga preferencia sobre el lento.

Una de ellas sería tener diferentes Schedules de sálida, una para lentos y otra para rápidos. La Schedule de entrada tiene como sucesoras ambas, pero con la marca 'by order' (o sea por orden) y colocas primero la de los rápidos y luego la de los lentos.

Así cuando tras la llegada del tren se arranca la sucesora, primero se intentará con la de los rápidos y solamente en el caso de que no haya ningún tren rápido disponible, el Dispatcher recurrirá a arrancar un tren lento.

Salut,

JM
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Mensaje por tonisegarra »

Hola JM. Hice mal la pregunta. Lo que me dices en tu respuesta es lo que estoy haciendo. Pero, claro, esto me obliga a tener todos los schedulles duplicados. Lo que intentaba preguntar es si se podía hacer en una sola schedulle a base de condiciones. Perdona por haber hecho mal la pregunta, a veces uno da por supuesto que la gente entenderá lo que piensa en lugar de lo que dice.
Toni
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,

Deberás usar el operador Combi (tren rápido) como trigger de un flagman que cierre la salida de los bloques con trenes lentos. Y pensar toda la lógica correspondiente.

Yo, para el caso de la estación duplicaría la Schedule de salida.

Salut,

JM
Manuel Bel
Forero
Mensajes: 341
Registrado: Mar Abr 25, 2006 9:05 am
20
Ubicación: Alpedrete-Madrid

Mensaje por Manuel Bel »

Hola Toni, podrías colgar la .yrr o una imagen de la schedule.

Yo estoy intentando hacer esto en mi maqueta para que empiecen a funcionar los trenes y como sabes una imagen vale mas que mil palabras.

Saludos
Manuel Bel
Lenz, 2c
Alpedrete
Madrid
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Mensaje por tonisegarra »

Hola Manuel
Ten en cuenta que estamos probando el yrr para unos módulos. Tenemos una estación con tres vías en cada sentido (EN, estación norte 1,2 y 3; ES estación sur 1, 2 y 3) y dos falsos bucles de retorno (uno a la derecha BD que en el yrr está encima y otro a la izquierda BE que en el yrr es el de debajo). En estos bucles es donde hacemos los adelantamientos. En las estaciones NO. Más adelante quizás pondré unos switch que permitan parar en cada vía de la estación. De momento hay unos que tienes a la salidas de la estación y de los bucles que detienen los trenes si es necesario.
He dividido arbitrariamente las locomotoras (4 rápidas y 4 lentas). Entre la estación y el bucle hay tres bloques (cada uno de ellos de tres módulos, es decir de unos 3 metros). Como no tenemos necesidad de precisión no he puesto contactos de detención.
Los trenes se ponen en marcha cuando otro se detiene a su lado. Más adelante quizás ponga flagmans para que el tren salga antes que el que está entrando se haya detenido o, incluso que esté en el bloque anterior.
La pregunta que le hice a JM era para resolver lo siguiente. Si en uno de los bucles está detenida una locomotora lenta y llega otra también lenta entoonces es el programa el que decide cual de las dos sale. Hubiese preferido que hubiese diversas opciones pero tal como ha dicho JM me parece complicadillo.
Si hay algo que no entiendas me lo dices.
Y, aprovecho para darle las gracias a JM.
Toni
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,

En el YRR que has colgado veo que ya has puesto dos Schedules para la salida de los bucles. Así tendrás la preferencia para los trens rápidos.

Creeme que es la mejor opción en este caso.

A la vuelta de Jaca discutimos como hacer el rebase en un apartadero.
Está en este hilo: viewtopic.php?t=2079

No sé si lo habías mirado.

Salut,

JM
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Mensaje por tonisegarra »

Hola JM,
los dos schedulles ya los tenía hechos en el avión antes de tu respuesta. Lo que quería era ahorrármelos. Porque si quiero hacer lo mismo en las dos estaciones la cosa se multiplica.
He leído el hilo del enlace que me has puesto. Una discusión interesante. No la leí en su momento porque no tenía ni pensaba tener las nuevas versiones del TC.
Se me ocurre, sin embargo, que si antes del bloque A hay una estación o apartadero con dos vía en el sentido que irá de A a E esta estació pertenecerá a otra schedulle distinta o serà el comienzo de las schedulles de las que hablas tu. Por lo tanto la condición de decirle que esten libres los bloques A y "ante A" (como le llamas) se me antoja difícil porque puede que siempre haya alguna de las vías "ante A" ocupadas.
Y, ya que estamos, aprovecho para otra pregunta. Cuando se tiene que ejecutar una schedulle y por la razón que sea no se puede al cabo de una rato se desactiva o,al menos, me lo parece. ¿Puede hacerse que no se desactive o que lo haga después del tiempo que le digamos?
Salut
Toni
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,
tonisegarra escribió:...se tiene que ejecutar una schedulle y por la razón que sea no se puede...
Dependiendo del tipo de razón se puede hacer una cosa u otra. :wink:

:arrow: Si hay un tren válido presente pero este no puede arrancar porque la salida está cerrada por motivos de tráfico (o porque la hemos cerrado manualmente) la solución es marcar en las reglas de la Schedule 'train may stay in start block' (el tren puede permanecer en el bloque de inicio). La explicación que da el propio programa es "ejecutar la Schedule incluso aunque el tren no pueda salir del bloque actual". Está opción no caduca puesto que la Schedule ya está iniciada y el tren simplemente está en espera de que se despeje su salida.

:arrow: Pero si la razón por la que no se puede ejecutar la Schedule es que no hay un tren válido presente, entonces hay otra opción que aparece en la pestaña 'General' de las propiedades de la Schedule.
Es el 'Try again' (intentarlo otra vez) y aquí si que se le puede dar un tiempo.

Saludos,

JM
Avatar de Usuario
tonisegarra
Forero
Mensajes: 367
Registrado: Mar Jun 10, 2008 6:03 pm
17
Ubicación: Mataró

Mensaje por tonisegarra »

Hola JM, me parece que en mi caso sería la primera porque no se me ocurre que pueda suceder el segundo caso si yo doy la salida cuando llega otro tren y además le pongo el oldest. Siempre habrá alguno que pueda salir, ¿no?
Otro caso con el que me he encontrado es que se detenga un tren una vez iniciada la schedulle porque un bloque que ha de ocupar ya está ocupado. Poniendo en rules la primera de las dos opciones ¿quedaría solucionado?
Gracies, salut i trens.
Toni
Avatar de Usuario
jmcosta
Forero
Mensajes: 2721
Registrado: Jue Ene 01, 1970 1:00 am
56
Ubicación: L'Ametlla del Valles - Barcelona

Mensaje por jmcosta »

Hola Toni,

La opción buena -y la que yo marco siempre- es la del 'Train may stay...' Resuelve el 99% de las incidencias.

El 'Try again' queda para el 1% restante, pero es la única opción que aparece en la Bronze.

Salut,

JM
 
  • Contacto
  • Nombre de Usuario:
    Email:
    Asunto:
    Mensaje: