Figura 1: El editor de diagramas de bloques
El editor dispone de opciones para grabar y cargar modelos. Se pide:
a) Extender este editor para que sea capaz de exportar modelos al lenguaje OOCSMP. Se debe tener en cuenta que OOCSMP reordena las ecuaciones de forma automática. Básicamente se debería generar una ecuación por cada bloque del modelo. La información de control de los modelos OOCSMP, tales como el intervalo elemental de tiempo, el tiempo final, el método de integración, etc., se podría añadir manualmente al modelo generado por el editor.
b) Comprobar que la generación de código OOCSMP funciona, modelando "el problema del círculo". Este problema consiste en resolver la ecuación d2x/dt2 = -x. Con x(0) = 1 y dx/dt (0) = 0. Conviertan esta ecuación en un sistema de dos ecuaciones de primer grado y dibujen su modelo en el editor, generen código OOCSMP y añadan una gráfica de fase de x con respecto a dx/dt. El resultado debe ser un círculo. Discutan el resultado de modificar el intervalo elemental de tiempo.
Parte optativa:
c) Extender los bloques que proporciona el editor para incluir otros, tales como seno, coseno, limitador, etc.
d) Extender el editor para que detecte modelos inválidos, que contengan bucles cerrados. Un modelo es válido si todos sus bucles contienen al menos un bloque con memoria, tal como un integrador.
e) Extender el editor para que se pueda introducir la información de control del modelo, tal como el intervalo elemental de tiempo, el tiempo final, el método de integración, etc.
NOTA: El lenguage Python es un lenguaje intuitivo, orientado a objetos y de muy alto nivel. Es muy adecuado para la construcción de prototipos, debido a su sencillez para construir interfaces de usuario. Es de libre disposición (se puede descargar aquí) y tiene versiones para Windows, Linux y McIntosh.
Donde X e Y representan las poblaciones del predador (X) y la presa (Y). Las 4 constantes m, n, p y q son positivas. Se supone que las presas tienen una fuente ilimitadad de comida. Esto es, en ausencia de predador su población (Y) aumentaría indefinidamente al paso indicado por la constante p. Esta constante puede ser interpretada como la tasa de nacimientos de las presas. En presencia del predador, la población Y se ve disminuida en función del número de encuentros (constante q).Esta constante puede ser interpretada como la tasa de mortandad de las presas en caso de un encuentro con un predador. En ausencia de presa, el número de predadores (X) disminuye en función de la constante m. Esta constante puede ser interpretada como la tasa de mortandad de los predadores. En presencia de presas, el número de predadores se ve incrementado proporcionalmente al número de encuentros (constante n). Esta constante se puede interpretar como el grado de aprovechamiento de un encuentro con una presa.X' = -mX + nXY
Y' = pY - qXY
Para este ejercicio, se pide:
a) Calcular una situación de equilibrio cuando X = 10, Y = 50, m = 0.1 y p = 0.1
b) Modelar y simular el problema mediante dinámica de sistemas y/o mediante OOCSMP. Para el caso de dinámica de sistemas se puede usar una versión gratuita del programa VenSim.
c) Modelar el problema mediante un sistema de agentes y/o un autómata celular. Para este apartado es posible usar cualquier lenguaje de simulación o de propósito general. Se aconseja usar OOCSMP. Téngase en cuenta que en ambos casos ha de modelarse el movimiento de predadores y de presas. En el caso más sencillo modélese como un movimiento aleatorio. Téngase también en cuenta los parámetros m, n, p y q. Compárense los resultados con los del apartado b).
Parte optativa:
d) Una generalización de las ecuaciones de volterra para un número cualquiera de especies predadores, presas y especies intermedias puede encontrarse aquí (información adicional puede obtenerse también aquí). Extiendan el modelo del apartado c) y modelen situaciones con distinto número de predadores y presas comparando los resultados con las simulaciones de las ecuaciones en OOCSMP.
e) En el apartado c) modélese el problema como un sistema de agentes y un autómata celular. Compárense los resultados.
Se pide:
a) Modelen el estado por el que puede pasar una personas mediante un
autómata.
b) Modelen y simulen el problema mediante dinámica de sistemas,
se puede usar una versión gratuita del programa VenSim.
c) Modelen y simulen el problema mediante OOCSMP.
d) Comentar los resultados. Discútase el efecto del grado de
virulencia y mortandad de la enfermedad.
Parte optativa:
e) Simulen el efecto de una vacunación en la población. Esto es, en cierto momento, un número de personas pasa del estado sano al estado inmune. Discutan su efecto. Discutan el efecto de vacunas periódicas en la población.
f) Modelen el problema anterior mediante un sistema de agentes y/o un autómata celular. Comparen y discutan los resultados. Para este apartado es posible usar cualquier lenguaje de simulación o de propósito general. Se aconseja usar OOCSMP. Téngase en cuenta que en ambos casos ha de modelarse el movimiento de las personas de la población. En el caso más sencillo modélese como un movimiento aleatorio. Estudiese el efecto de crear un foco de la enfermedad en una cierta zona de la población.
g) Generalizen el modelo para incluir más de un tipo de enfermedad y más de un tipo de vacuna.
Modelo 1)
Supongan que conocemos una medida del "tamaño" de los Requisitos
de
un proyecto en Puntos de Función. Modelaremos el grado en
el que el Software está desarrollado como los Puntos de Función
que quedan por implementar. Un equipo de desarrollo construye Software
de acuerdo a un determinado ratio, que depende de:
a) la productividad Nominal: Son los puntos de función
que una persona puede implementar en un día de trabajo. Supóngase
0.1 Puntos de Función por persona-día.
b) la cantidad de gente que hay trabajando. Supóngase
que inicialmente hay 10 personas.
c) la sobrecarga por comunicación que hay
entre las personas trabajando. Se supone que entra cada persona hay un
canal de comunicación y que esto resta eficiencia al trabajo que
hacen. Modélese esta sobrecarga como Coverhead*n2
. Donde n es el número de peronas y Coverhead es una
constante que para este caso pondremos como 0.06.
El ratio de desarrollo de software se puede modelar
como: Productividad Nominal*(1-Sobrecarga_Comunicación/100)*N.
Si los Puntos de función que hay que implementar
son 500, ¿cuánto tiempo tardaremos en terminar el proyecto?.
Encuentren el número de personas que hacen este tiempo mínimo.
Tengan en cuenta que si el número de personas es muy alto, entonces
el coste de comunicación prevalece sobre la productividad nominal.
Modelo 2)
Extiendan el modelo 1 para modelar la contratación de nuevo personal en cierto momento del desarrollo, así como la sobrecarga que produce en el personal experimentado el enseñar a este nuevo personal. Para ello, distinguiremos entre "Personal Experimentado" y "Personal nuevo". El nuevo personal tarda 20 días en obtener la productividad del personal experimentado. Se necesita un 25% del personal experimentado para enseñar a una persona nueva. Supongan que el personal experimentado produce 1.2 veces la productividad nominal, y que el personal nuevo produce a 0.8 la productividad nominal. Tengan en cuenta que para implementar este modelo se debe modificar el ratio de desarrollo de Software adecuadamente.
Supongan que llevamos 90 días de proyecto, y éste va retrasado, y que se está considerando añadir un cierto número de personas en el día 100 del desarrollo. ¿Cuántas personas añadirían?, discutan el efecto del nuevo personal en la productividad.
Parte Optativa)
a) Extiendan el modelo 2 para modelar algunas de las fases por las que pasa el desarrollo de software: Partiendo del tamaño de los requisitos en puntos de función, pasamos a la fase de diseño, y de la de diseño a la de implementación. Supongan además que no podemos empezar la fase implementación antes de tener el 75% de la fase de diseño terminada. Supongan también distintos equipos trabajando en el diseño y la implementación.
b) Extiendan el modelo anterior para reflejar los errores cometidos en la fase de diseño y en la de implementación. Supongan una determinada tasa de errores por punto de función. Modelen también el descubrimiento de errores, supongan una determinada tasa de descubrimiento de errores, de forma que habrá errores que pasen desapercibidos en la fase de diseño, y pasen a la fase de implementación. En la fase de implementación también pueden cometerse errores, y de la misma forma habrá errores que pasen desapercibidos.
Se pide:
a) Modelen el sistema mediante agentes o autómatas celulares.
Para este apartado es posible usar cualquier lenguaje de simulación
o de propósito general. Se aconseja usar OOCSMP.
b) Simulen y midan el tiempo medio de evacuación, así
como la distribución de la gravedad de los heridos, y el número
de muertos.
c) Midan el resultado de cambiar la ubicación de las puertas
y su número. ¿Cuál es la situación óptima
de 4 puertas en el caso de una habitación cuadrada?.
Parte Optativa:
d) Supongan que la emergencia se produjo debido a un incendio, y que el humo reduce la visión de las personas a un radio de 10 casillas. Comparen los resultados con los de visibilidad total, y experimenten con distintos grados de "espesor de humo".
e) Modelen que el edificio esté formado por varias habitaciones,
de tal forma que hay puertas interiores y puertas que son salida del edificio.
Realizar el modelo en CSMP.