Boletín de problemas 1
Fecha de entrega: viernes 15
de febrero de 2002
Problema 1 [10%]
Envíe un correo electrónico
al profesor adjunto de su tutorial con la información
que se especifica a continuación. Puede añadir
otros datos que considere interesantes para el profesor.
- Nombre
- Nombre de usuario de Athena
- Número de curso y año
- Experiencia en informática,
sobre todo en otros lenguajes de programación
- Lo que quiere aprender de este
curso
Problema 2 [20%]
Escriba una aplicación que
solicite al usuario la introducción de tres enteros
positivos como longitudes de tres segmentos de línea,
y determine si forman un triángulo perpendicular.
Lea las entradas utilizando un JOptionPane como se muestra
en las páginas 69-71 del texto. No es necesario
comprobar la validez de los datos en la entrada; asuma
que el usuario introduce correctamente los números
enteros positivos. [Consejo: imagine que a, b, c son
los tres lados de un triángulo perpendicular
y que c es mayor que a y b. Deben cumplir que a2
+ b2 = c2]
Problema 3: diseño del
servicio de autobús Logan Express [70%]
Introducción
En este ejercicio pondrá
en marcha una versión simplificada del modelo
utilizado por la Massachusetts Port Authority para
diseñar y planificar el servicio de autobús
Logan Express. El modelo responde a las siglas
Fracas (Fare and Route Analysis Computer Aided System)
y ha sido creado por uno de nosotros (Kocur) para la
planificación de las rutas de transporte público
general. Propone estructuras de ruta óptimas,
frecuencia del servicio y tarifas para lograr un conjunto
de usuarios, objetivos de déficit y de beneficio
del usuario.
Las tareas que deberá realizar
su programa son:
- Definir un conjunto de parámetros
para utilizar en el modelo
- Leer un reducido número
de entradas del usuario para definir la realización
del análisis.
- Efectuar una serie de cálculos
intermedios
- Calcular el modelo de servicio
óptimo (rutas, frecuencias, tarifas)
- Calcular estadísticas
de los rendimientos producidos (número de usuarios,
costes, ingresos, etc.)
- Mostrar resultados
Comentarios generales sobre el
trabajo:
- No es necesario que compruebe
la validez de los datos para los cálculos,
lo cual se haría en un programa para producción,
pero no en esta tarea.
- Todas las variables de punto
flotantes deben ser de tipo double.
- Las ecuaciones de este trabajo
son una simplificación del modelo real, por
tanto, a veces las aproximaciones serán evidentes.
- Puede escribir toda la tarea
en un único método main(). Si tiene
experiencia previa como programador y conoce los métodos
(funciones), es mejor dividir el programa en varios
métodos.
El servicio de autobús Logan
Express funciona desde los estacionamientos que hay
a unas 20 millas del aeropuerto de Logan, y tiene 3
rutas (sur, oeste y norte de Boston). Se realizó
este análisis para establecer su número
y las tarifas y la frecuencia del servicio.
Trabajo
1. Parámetros definidos
al inicio del programa.
Defina las siguientes variables
al principio de su programa principal. Todas son constantes
excepto x, b e y, que se leerán
como variables de entrada (véase la siguiente
sección). No tiene que declarar las constantes
final. Se dan como ejemplo los valores
típicos de x, b e y.
|
Nombre de la variable
|
Valor
|
Definición
|
Unidades
|
|
Title
|
Boston
|
Título del análisis
|
|
|
a
|
2
|
Duración media del
viaje
|
Días
|
|
L1
|
20
|
Límite interior del
área de servicio
|
Millas
|
|
L2
|
40
|
Límite exterior del
área de servicio
|
Millas
|
|
W
|
81
|
Circunferencia del área
en el límite exterior
|
Millas
|
|
p
|
0.021
|
Densidad del viaje
|
Viajes/mi2/día
|
|
j
|
0.25
|
Velocidad de acceso (local)
en automóvil
|
Millas/minuto
|
|
b
|
(0)
|
Variación del tiempo
de viaje en autobús
|
Minutos
|
|
k
|
0.4
|
Ratio espera/intervalo
|
|
|
c
|
130
|
Coste de funcionamiento del
autobús
|
Céntimos/minuto
|
|
T
|
1050
|
Duración de la jornada
|
Minutos
|
|
x
|
(0)
|
Variación del coste
de aparcamiento en el aeropuerto
|
Céntimos
|
|
s
|
47
|
Capacidad del autobús
|
Pasajeros
|
|
v
|
0.5
|
Velocidad del autobús
|
Millas/minuto
|
|
m
|
0.8
|
Fracción de viajes
en la dirección de mayor tránsito
|
|
|
a0
|
0.68
|
Cuota de mercado de referencia
del autobús si da el mismo servicio que
el automóvil
|
|
|
a2
|
0.0125
|
Coeficiente de espera del
autobús
|
|
|
a3
|
0.005
|
Coeficiente de tiempo de
desplazamiento del autobús
|
|
|
a4
|
0.0001
|
Coeficiente de la tarifa
del autobús
|
|
|
a5
|
0.01
|
Coeficiente de tiempo del
acceso en automóvil
|
|
|
y
|
(2)
|
Peso objetivo
|
|
El esquema del servicio es:

Las definiciones de las variables
son:
Título del análisis.
Nombre del área que se va a analizar. Se trata
de una cadena.
Duración del viaje.
Promedio del número de días que el automóvil
se deja en el aparcamiento.
Límite interior del área
de servicio. El punto más lejano desde el
que los pasajeros utilizan el servicio Logan Express;
más cercano a Logan que al aparcamiento. (Véase
el esquema, variable L1)
Límite exterior del área
de servicio. Punto en el cual los viajes de pasajeros
a Logan descienden a un nivel muy bajo; la densidad
se aproxima a cero. (Véase el esquema, variable
L2)
Circunferencia del área
en el límite exterior. Define la anchura
del sector (Véase el esquema, W).
Densidad del viaje. Número
de viajes por milla cuadrada de ida y vuelta a Logan.
Se trata de un parámetro para una distribución
que presenta una alta densidad cerca del aeropuerto
y disminuye a medida que aumenta la distancia a Logan.
Velocidad de acceso en automóvil.
Velocidad del viaje en automóvil para pasajeros
que conducen desde sus hogares hasta el aparcamiento
de Logan Express.
Variación del tiempo
de viaje en autobús. Si los autobuses de
Logan Express utilizan un carril reservado o tienen
un tratamiento preferente, el tiempo de viaje se reducirá.
Los tiempos más rápidos se introducen
como un número positivo.
Ratio espera/intervalo. Tiempo
de espera medio del pasajero expresado como una fracción
del intervalo de autobuses (minutos entre autobuses). Los
pasajeros conocen el horario, por lo que este parámetro
suele ser menor de 0.5.
Coste de funcionamiento del
autobús. Lo que le cuesta a Massport explotar
un autobús, en céntimos/minuto, incluidos
gastos generales y de mano de obra.
Duración de la jornada.
Duración de una jornada de servicio del Logan
Express, por lo general de 5am a 11pm. En minutos.
Variación del coste de
aparcamiento en el aeropuerto. Si sube la tarifa
del aparcamiento del aeropuerto de Logan, aumentará
el número de viajeros del Logan Express. Los
incrementos en el coste del aparcamiento se introducen
como números positivos.
Capacidad del autobús.
Número máximo de pasajeros que caben
en el autobús. Por lo general, el número
de asientos del autobús.
Velocidad del autobús.
Velocidad media del autobús desde el aparcamiento
del Logan Express hasta el aeropuerto de Logan en millas/minuto.
Fracción de viajes en
la dirección de mayor tránsito. Durante
los periodos de mayor tránsito, las circulación
de los autobuses está desequilibrada. La circulación
de mayor tránsito es la de llegada a Logan por
la mañana y la de salida por la tarde. Se utiliza
para calcular la capacidad necesaria del autobús.
Cuota de mercado de referencia
del autobús. Si el autobús y
el vehículo privado dan el mismo servicio (en
cierto sentido), esto nos da la cuota de mercado del
autobús. Para fijarla, se llevan a cabo
algunos análisis estadísticos, ya que
los vehículos privados no tienen tiempo de espera
y el público no percibe los costes de explotación
del automóvil de la misma forma que una tarifa
de autobús. La cuota de mercado real del
autobús se calcula a partir de una ecuación;
véase más abajo.
Coeficiente de tiempo de espera.
En el modelo de cuota de mercado se utilizan todos
los coeficientes. A medida que disminuye el tiempo de
espera de los pasajeros, aumenta la cuota de mercado
del autobús. Este coeficiente lineal, calculado
estadísticamente, pronostica el efecto. Véase
la ecuación de cuota de mercado más abajo.
Coeficiente de tiempo de desplazamiento
del autobús. A medida que disminuye, este
coeficiente pronostica el aumento en la cuota de mercado
del autobús.
Coeficiente de la tarifa del
autobús. Cuando la tarifa del autobús
varía , arriba o abajo, este coeficiente prevé
el aumento o la disminución del número
de viajeros en el autobús.
Coeficiente de tiempo de acceso
en automóvil. Según lo lejos que se
encuentre un pasajero del aparcamiento del Logan Express,
este coeficiente pronostica la disminución de
la cuota de mercado en función de la distancia
desde el aparcamiento. Utiliza la distancia perpendicular
recorrida (véase a en el esquema:
esto supone distancia recorrida perdida).
El tiempo de acceso en automóvil se mide en minutos;
el tiempo medio de acceso se calcula partiendo de la
geometria y el coeficiente se aplica a dicho tiempo.
Peso objetivo. Se utiliza
para compensar los objetivos de déficit frente
a los objetivos del número de viajeros. A medida
que aumenta el peso objetivo, el número de viajeros
y el déficil disminuye. Cuando disminuye,
el número de viajeros y el déficil aumenta.
Debe ser estrictamente mayor que 1 y puede aumentar
sin límite.
2. Lectura de entradas
Lea x y b utilizando
un JOptionPane tal y como se muestra en las páginas
69-71 del libro de texto. No es necesario que
compruebe la validez de las entradas x y b.
Lea el mínimo y el máximo
de y para detallar la correlación entre
número de viajeros y déficit. Utilice
como valores de prueba 1.1 y 2.1. Imagine que y
aumenta 0.1 cada vez que se ejecuta el análisis;
sin duda, necesitará una variable para almecenar
el incremento. No es necesario comprobar la validez
de las entradas.
3. Cálculos intermedios.
Tras definir e inicializar las
constantes y los valores de entrada, realice los siguientes
cálculos. No hace falta que derive o estudie
estos cálculos (en caso de interés, al
final mostramos una referencia a un documento). Téngase
en cuenta que A0 es diferente que a0
a1= a0 +
a4x/2 + a3b
[Couta de
mercado revisada del autobús debido al tiempo,
aparcamiento]
v= (L1+5)/(L1+5-bv)
[Velocidad del autobús revisada debido a la variación
de horario del bus]
A0= (4 L2(L23
L13) 3 (L24
L14)) / (6 L2(L22
L12) 4 (L23
L13))
L0= 6L2s
/ (pa4m[3 L2(L22
L12) 2 (L23
L13)])
B0= 3L2L1
[4 L2(L23 L13)
3 (L24 L14)]
/ [3 L2(L22
L12) 2 (L23
L13)] 2
C0= L2 L1
[3 L2(L22 L12)
2 (L23 L13)]
/ [4 L2(L23
L13) 3 (L24
L14)] 2
E0= ca4a5(2y-1)
/ (2jk2vpa22a1y)
F0= 768ca4j2ka2(2y-1)
/ (vpa1a52y)
G0= (y-1) / [(2y-1)a4]
Más abajo se dan valores
de ejemplo de estos valores intermedios a modo de ayuda
para la realización de pruebas y el depurado.
A0= 27.5
L0= 209821.4
B0= 4.125
C0= 0.000008
E0= 1092.4
F0= 3277.3
G0= 3333.3
Observe que E0, F0
y G0 son funciones de la variable y,
la cual variará entre el yMin y el yMax
que leyó como entrada en el paso 2 anterior.
Tendrá que comenzar un bucle en este punto para
el cálculo de estos tres valores intermedios
y de los modelos de servicio óptimo del paso
4 siguiente que dependen de E0, F0,
G0 e y.
4. Modelo de servicio óptimo
Una vez finalizados los cálculos
intermedios, es el mometo de hallar el modelo de servicio
óptimo.
- Hay dos grupos de resultados.
El primero se calcula sin límite de capacidad
en el número de viajeros del autobús.
Estos análisis pueden utilizarse para determinar
el tamaño óptimo del autobús.
- El segundo grupo de resultados
se calcula utilizando la capacidad real del autobús.
Si la capacidad del autobús no supone una restricción
en la explotacion (si la ocupación del autobús
es menor que su capacidad), estos resultados serán
los mismos que los del primer grupo.
Los resultados son:
Intervalo (h). El tiempo
óptimo entre autobuses, en minutos, en cada ruta.
Espacio entre rutas (g). El
espacio óptimo entre rutas, en radianes.
Número de rutas (n).
El número de rutas, que se deriva simplemente
al tomar el ángulo del área de servicio
en radianes (véase en esquema precedente) y dividiéndolo
por el espacio de la ruta. En este análisis simplificado
no será una cifra exácta. (Se requiere
un análisis más sofisticado para generar
un número entero).
Tarifa del autobús (f).
Es la tarifa óptima. (En la práctica
se redondearía a un número más
exacto; nosotros no nos molestamos).
Factor de carga del autobús
(q). Es la fracción de la capacidad
del autobús empleada en la dirección de
mayor tránsito; está entre 0.0 y 1.0 y
se calcula dividiendo el número de viajeros por
la capacidad del autobús.
Si la capacidad del autobús
no es un límite:
h= (3E0B0)1/3
g= (3F0C0)1/3
n= 2W/(g L2)
f= G0 (a1
a2kh a5gA0/(4j))
q= gh (a1 a2kh
a4f a5gA0/(4j))
/ (a4L0)
Si q > 1.0, entonces la capacidad
del autobús es una limitación, y el servicio
óptimo viene dado por:
hq= h q-1/2
gq= g q-1/2
nq= 2W/(gq
L2)
fq= (1/a4)
(a1 a2khq
a5gqA0/(4j))
L0/ (gqhq)
Vuelva a calcular el factor de
carga q con la misma ecuación de antes. Debería
ser 1.0, pero puede existir algún error de aproximación.
En este punto, ya se ha hallado
el número de viajeros, las rutas y las tarifas
óptimas, y se ha calculado el factor de carga
del autobús.
5. Estadísticas de rendimiento
Ahora calculamos las estadísticas
de rendimiento, como el número de viajeros, ingresos,
costes, etc. Las medidas son:
Cuota de mercado del autobús
(Share). Cuota del autobús correspondiente
al total de viajes de pasajeros desde al área
de servicio a Logan, ida y vuelta.
Número de viajeros del
autobús (Riders). Número de viajeros
en ambas direcciones, diario.
Ingresos del autobús
(Revenue). Producto del número de viajeros
y la tarifa del autobús.
Coste del autobús (Cost).
Coste de la explotación diaria del autobús.
Déficit. Coste del
autobús menos los ingresos.
Número de autobuses necesarios
(NumBus). Mínimo necesario para cumplir con
el horario. Redondee los valores fraccionarios.
Las ecuaciones son las siguientes: utilice
el valor limitado o ilimitado de las variables de servicio,
según corresponda:
Share= (a1 a2kh
a4f a5gA0/(4j))
Riders= WTs (Share) / (L2a4mL0)
Revenue= f (Riders)/ 100
Cost= 4W(L1+5)cT / (100ghvL2)
Deficit= Cost Revenue
NumBus= 100 (Cost)/ (cT)
Redondee al siguiente número entero; utilice
Math.ceil().
6. Resultados
Su programa debería producir
los siguientes resultados. Las cifras son sólo
un ejemplo; no son los números reales que el
programa va a calcular. Utilice int variables
para el número de viajeros, el déficit,
el intervalo, la tarifa, y la carga por autobús
de modo que se impriman de forma compacta. Emplee
variables de la clase double para el peso objetivo
(y), el número de rutas, la cuota de mercado
y el número de autobuses. (Conviene que
los autobuses sean un valor integral) Utilice
Math.round() de forma creativa para alinear las columnas
de las variables double (por ejemplo, redondee
el valor, dividido por 1000, para obtener 3 decimales).
Las columnas quedarían del siguiente modo:
Título: Boston
<utilice la variable Título en su programa>
Riders Deficit Hdwy Fare
Rtes Share Buses Obj wgt
1000 22000
30 400 4.117 0.241 22.0
1.1
etc.
Cuando el programa haya producido
estos resultados, muestre un JOptionPanel para invitar
al usuario a realizar otro análisis. Si dice
yes o y (lo que usted decida
poner), indique al usuario que opte por x, b,
minimum y y maximum y y vuelva a ejecutar
el análisis. Recuerde utilizar el método
equals() (vea la página 65 de su libro de texto). Cuando
el programa esté finalizado, recuerde llamar
a System.exit(0).
7. Fase de prueba
- Compruebe que los resultados
son razonables; deberían ser parecidos a los
ejemplos dados en la tarea.
- Ejecute el programa cambiando
entre los parámetros b y x. Asegúrese
de que los resultados varían en la dirección
apropiada cuando cambie los parámetros. Observe
que los cambios son relativamente pequeños.
- Cambie algunos pocos parámetros
cuyo efecto pueda anticipar, y compruebe que el modelo
responde correctamente.
Referencia: Kocur, G. y C. Hendrickson,
Design of Local Bus Service with Demand Equilibration,
Transportation Science, Vol. 16, No. 2, 1982.
Entrega del trabajo
Requisitos de entrega
- Problema 1: solamente por correo
electrónico. No es necesario entregar una copia
en papel.
- Problemas 2 y 3: copia en papel
y copia electrónica de TODOS los códigos
fuente (todos los archivos con la extensión
.java).
- Incluya en TODOS los archivos
que presente su nombre, el nombre de usuario, la sección,
el nombre del profesor ayudante, el número
de trabajo y una relación de las personas con
las que haya comentado el boletín de problemas.
- NO entregue copias electrónicas
o en papel de código compilado (archivos .class).
Sanciones
- Por pérdida de copia
en papel: -10% de la puntuación del boletín
de problemas.
- Por pérdida de copia
electrónica: -30% de la puntuación del
boletín de problemas.
- Por entrega fuera del plazo:
-20% de la puntuación del boletín de
problemas si es un día de retraso. Por
más de un día de retraso = NO SE PUNTUARÁ.
|