viernes, 31 de enero de 2020

Apuntes - 31/Enero/2020


Adivinar un número - Programa #2

Sorteo - Programa #1

Tipos de Algoritmos - Investigación

¿Qué es un algoritmo?

Se denomina algoritmo a una combinación de pasos lógicos dispuestos de forma organizada para resolver un problema. Los algoritmos ayudan a ordenar el trabajo en numerosas disciplinas. En informática se utilizan para expresar las ‘instrucciones’ con las que se realizan las funciones, y se suele expresar mediante diferentes tipos de diagrama. El esquema más conocido es el diagrama de flujo, que muestra paso por paso como se debe proseguir, y principalmente, las preguntas que el operador se debe hacer para proseguir con el siguiente paso y así llegar al final del proceso. Si algún paso falla, el algoritmo permite “retroceder ordenadamente” la cantidad de pasos que sean necesarios para corregir el error.

Clasificación y Tipos de algoritmos

Se ha clasificado a los algoritmos de diversas formas, de acuerdo con algunos de sus atributos. Por ejemplo:

A) Según el sistema de signos con el que describen los pasos a seguir, se reconocen:

  • Algoritmos cualitativos: cuando se hace a través de palabras, es decir, las instrucciones son verbales. Sucede, por ejemplo, con recetas de cocina.
  • Algoritmos cuantitativos: cuando se hace a través de cálculos numéricos. Se puede hacer un algoritmo, por ejemplo, para obtener la raíz cuadrada de un número.

B) Según su función, los algoritmos pueden ser:

  • Algoritmos de ordenamiento: secuencian los elementos que ingresan a partir de un cierto orden, en general, según un orden numérico o léxico.
  • Algoritmos de búsqueda: al contrario de realizar operaciones o secuenciar elementos, se dedica a encontrar dentro de una lista que ingresa, uno o varios elementos en particular que cumplan con el conjunto de condiciones dadas.
  • Algoritmos de encaminamiento: deciden de qué modo se deberá transmitir algo que llega, y cómo seguirá un conjunto de pasos encadenados. Se dividen fundamentalmente entre adaptativos y estáticos, los primeros con cierta capacidad de aprendizaje y ajuste a la circunstancia, mientras que los segundos funcionan mecánicamente, siempre del mismo modo. Es importante decir que los algoritmos de encaminamiento cuentan con una propia subdivisión, según el camino que se toma para que la transmisión llegue de manera efectiva (ejemplos de estos tipos son: por el camino más corto, de manera óptima, basado en el flujo, etc.).

C) También los algoritmos han sido clasificados según la estrategia que se utiliza para llegar al resultado. Veamos algunos ejemplos:

  • Algoritmos probabilísticos: no se puede estar seguro de la exactitud de la respuesta que darán. Se agrupan en distintos subtipos, pero con esa premisa: o bien presentan soluciones aproximadas del problema, o bien presentan soluciones que pueden ser correctas pero también erróneas.
  • Algoritmo cotidiano: es el que se da en la vida común de las personas, no se aplica en sistemas informáticos ni en nada ajeno al día a día. Muchas de las decisiones que se toman desde que uno se despierta por la mañana pertenecen a este grupo.
  • Algoritmo heurístico: abandona alguno de los objetivos como recurso para terminar llegando a la solución. En general, son utilizados cuando no existe una solución mediante las vías tradicionales.
  • Algoritmo de escalada: se comienza con una solución insatisfactoria (que no cumple la entrada y la salida), y se la va modificando aproximándose a lo que se busca. En algún momento, estaremos cerca de (o llegaremos a) la solución correcta.
  • Algoritmo voraz: Con la idea de llegar a una solución óptima definitiva, elige analizar cada paso como único y elegir la solución óptima para ese paso.
  • Algoritmo determinista: es completamente lineal (cada paso tiene un paso sucesor y un paso predecesor) y por lo tanto predictivo, si se conocen sus entradas y su forma de proceder. El algoritmo de Euclides, que permite averiguar el máximo común divisor entre dos números, responde a este tipo. Se distinguen de los no deterministas, donde el algoritmo tiene un comportamiento en forma de árbol.

martes, 28 de enero de 2020

Apuntes - 28/Enero/2020



Metodologia de una simulación - Investigación


Definición del Sistema

Para tener una definición exacta del sistema que se desea simular, es necesario realizar un análisis preliminar de este, con el fin de determinar:

  • La interacción que tiene con otros sistemas.

  • Las restricciones del sistema.

  • La frontera del sistema y el alcance.

  • Las variables que actúan dentro del sistema y sus interrelaciones.

  • Y los resultados que se espera obtener del estudio.


Además hay que planificar el estudio en términos de personal, costo y tiempo.


Formulación del modelo

En esta fase se define y construye el modelo preliminar con el cual se obtendrán los resultados deseados. En la formulación del modelo es importante definir todas las variables que forman parte del sistema, sus relaciones lógicas y los diagramas de flujo que describan en forma completa al modelo.

Colección de datos

Es posible que la obtención de datos sea fácil de conseguir y en otros casos sea un poco dificultoso; esto puede influenciar en el desarrollo y formulación del modelo. Por consiguiente, en esta etapa es muy importante que se definan con claridad y exactitud los datos que el modelo va a necesitar para producir los resultados esperados. Además, se debe seleccionar la información útil para determinación de las distribuciones de probabilidad asociadas a cada una de las variables aleatorias necesarias para la simulación [Eduardo García]. Aunque en algunos casos la información requerida se suele obtener de registros contables, órdenes de trabajo, órdenes de compra, opiniones de expertos y si no hay otro medio se hace por experimentación.


Construcción del programa que representa el modelo

La construcción del programa que represente al modelo se encuentra mucho más clara, ya que en el modelo matemático se determina y/o clarifica las entidades, atributos, variables, entre otras. Pero, por la mayoría de las veces, la construcción del programa que represente al modelo, no es una tarea fácil de lograr, ya que en esta fase, además de modelar, se tiene que especificar partes del programa en su ejecución, cosa que no se puede hacer mención en el paso anterior.

Una de las ventajas de este paso es que en este nivel ya debemos pensar en cómo funcionaría nuestra simulación y de acuerdo a esta idea lo plasmaríamos en nuestra construcción. En esta fase es donde empieza a actuar el programador de la simulación Por la mayoría de las veces la fase de formulación del modelo matemático y la fase de construcción del programa que represente el modelo van siempre desarrollados paralelamente, ya que ambas se basan entre sí.


Validación

Teniendo en cuenta la definición presentado en el apartado anterior. Ahora llevando a nuestro tema podríamos decir que la validación del modelo, es la fase que en la que se lleva a cabo las pruebas necesarias para ver el comportamiento que tiene esta, si es perjudicial o no con su entorno.

A pesar de que se haga varias pruebas para la validación del modelo, hay ciertas dificultades o desventajas que se tiene, tales como:


  • No existe validación general , ya que cada modelo se valida con respecto a sus objetivos.
  • Otra idea que se tiene con respecto a esto es que la idea de simulación es construir modelos sencillos y para objetivos específicos y concretos, y esto es una definición muy lejana a la validación general
  • Puede no existir un mundo real con el cual comparar, ya que la mayoría de las veces se  tiene, al momento de simular, un lugar de donde podemos apoyarnos. Ahora en el caso que nos pidan desarrollar una nueva funcionalidad de un sistema o servicio, ya no tendríamos en que apoyarnos.
  • A veces los datos obtenidos del mundo real no son precisos, La validación supone comparar los  datos obtenidos de la simulación con los obtenidos en un caso del mundo real, pero hay veces en que en el mundo real hay, pequeños o grandes, márgenes de error. En este caso no existirían garantías de que la simulación logre resultados agradables.


En esta etapa el validador debe tener un excelente juicio y saber el entorno en el cual se está desarrollando esta simulación. Es en esta etapa donde se valora las diferencias entre el funcionamiento del simulador y el sistema real. Según la gran enciclopedia Wikipedia, dice que existen 5 formas más comunes de validar un modelo, las cuales son:


  • La opinión de expertos sobre los resultados de la simulación.

  • La exactitud con que se predicen datos históricos.

  • La exactitud en la predicción del futuro.

  • La comprobación de falla del modelo de simulación al utilizar datos que hacen fallar al sistema real.

  • La aceptación y confianza en el modelo de la persona que hará uso de los resultados que arroje el experimento de simulación.


Experimentación

Básicamente los experimentos de simulación buscan respuestas a casuísticas que puedan suceder o afectar el programa. Responden a la pregunta ¿Qué pasaría si? Claro está que este tipo de pregunta se puede experimentar en cualquier parte del ciclo de vida del programa de simulación, pero en cualquier parte significaría solucionar diferentes alternativas de solución ante un determinado problema y/o mejora que pueda existir en el desarrollo o diseño del programa.

Este método ha sido reconocido oficialmente como uno de los pasos a seguir dentro del desarrollo de un programa de simulación, pero rara vez aplicada.

En la monografía hecha para el General Ricardo Torrón Durán, dice que:

En general las respuestas que buscamos mediante los experimentos servirán de soporte a una decisión racional sobre el sistema.

En general las respuestas que buscamos mediante los experimentos servirán de soporte a una decisión racional sobre el sistema. El ing. Efrain Muretti plantea tres formas de análisis más comunes en el desarrollo del experimento, las cuales son:


  1. Comparación de las medias y varianzas de las alternativas analizadas: Se le denomina mayormente como diseño de experimentos de un factor simple. Para  poder cumplir con este tipo de análisis, es necesario tener el tamaño de la muestra y las condiciones iniciales. 
  2. Determinación de la importancia y el efecto de diferentes variables en los resultados de la simulación: Toma como base el análisis de la varianza y técnicas de regresión como medios para así poder encontrar y evaluar la importancia y/o el efecto de varias variables en los resultados.
  3. Búsqueda de los valores óptimos de un conjunto de variables: Se utiliza algoritmos heurísticos de búsquedas



Interpretación

En esta etapa del estudio, se interpretan el resultado que se obtienen de la simulación y en base a esto se toma una decisión. Sin duda los resultados que arroja la simulación ayudan a soportar decisiones del tipo semi-estructurado, es decir, la computadora por sí sola no toma una decisión, sino que la información que proporciona ayuda a tomar mejores decisiones y por consiguiente obtener mejores resultados.


Documentación

En esta fase final son requeridos dos tipos de documentación para hacer un mejor uso del modelo de simulación. La primera se refiere a la documentación de tipo técnico, es decir, este documento permitirá el uso del modelo generado en caso de que se requieran ajustes futuros. En ella se deben incluir los supuestos del modelo, las distribuciones asociadas a sus variables, todos sus alcances y limitaciones. La segunda se refiere al manual del usuario, con el cual se facilita la interacción y el uso del modelo desarrollado a través de una terminal de computadora.

Pasos para realizar una simulacion - Investigación


COMO HACER UNA SIMULACIÓN

En un proyecto de simulación la construcción del modelo ocupa como máximo la quinta parte del tiempo total del estudio. Esto quiere decir que la construcción de un modelo es solo el paso final en un estudio para hacer una simulación.

Para nuestros días la aparición de computadores con altas capacidades de procesamiento nos ha entregado una solución de tipo práctico cuando deseamos organizar situaciones complejas, con comportamientos aleatorios en su interior y con intrincadas relaciones entre los elementos que conforman dicho sistema. La simulación es una animación mediante programas para computador, de situaciones reales, con el objetivo de analizar su estructura o forma física y encontrar soluciones que conlleven a mejores características de las mismas desde el punto de vista productivo o del orden.

Es importante que se sigan ciertos pasos para hacer la simulación, que es un problema considerable que requiere que alguien lo organice para resolverlo.

Cuando se desea hacer una simulación las personas deben preguntarse qué es lo que se desea simular y de cuánto tiempo se dispone para hacer este trabajo. El primer aspecto está relacionado con el planteamiento de un objetivo y el segundo, con la determinación de la utilidad del mismo, porque el comienzo y el fin de un proyecto de simulación han de estar enmarcados en una cantidad finita de tiempo que permitirá implementar prontamente los resultados del análisis realizado mediante el proyecto de simulación.

PASO 1: ELABORAR UN PLAN DE ESTUDIO.

En este paso se desarrollaran cuatro fases que son: Definir objetivos, Identificar limitaciones y restricciones, conocer las especificaciones, desarrollar planeación y definir resultados. En cada una de las fases se guiará al simulador mediante el cuestionamiento, es posible que algunas preguntas no tengan lugar; sin embargo la fase ha de quedar completamente clara.

Definir Objetivos: Este paso es muy importante, sin la claridad absoluta no tiene sentido ningún esfuerzo para lograr una simulación, no es raro encontrar proyectos de simulación en donde no se sabe a dónde se quiere llegar, un modelo construido sin norte es un proyecto sin frutos apreciables. Para definir los objetivos se pueden responder las siguientes preguntas.

• Qué y cómo desea medir el desempeño de la simulación?
• Quién utilizara el modelo?
• A quien se le presentará la información obtenida del modelo?
• Qué información se espera obtener del modelo?
•Qué tan importante es la decisión que se espera tomar a partir del modelo?

Identificar limitaciones o restricciones. 

Como en todo proyecto real existen limitaciones, es importante tenerlas presentes, para enmarcar el proyecto en la libertad que se dispone, sin contratiempos por limitaciones que no se han advertido; las limitaciones o restricciones son de tres tipos: Económicas, de tiempo y de información. Las siguientes preguntas ayudan a identificar las limitaciones o restricciones.

• Cuál es el presupuesto para el estudio?
• Cuáles son las habilidades que se poseen para realizar el estudio?
• Se tiene acceso a la información requerida?
• Qué tipo de computador se utilizara en el estudio?

Conocer las especificaciones. 

Las especificaciones se determinan cuando los objetivos y las restricciones ya se han definido e identificado. Son de tres: alcance, nivel de detalle, grado de exactitud; deben ser justas con el fin de dar los mejores resultados en términos de tiempo, recursos y utilidad.


  • Alcance: Determina un inicio y un final del proyecto.


  • Nivel de detalle: Se puede describir como la definición o densidad del modelo, las situaciones requieren detalles irrelevantes para analizar la estructura del problema por lo cual esta especificación ha de ser lo necesario para no extenderse en el modelado de características inútiles.
  • Grado de exactitud: Es lo que se puede esperar de los resultados del modelo, si el modelo ha sido construido con información basura el modelo arrojara información basura. La confiabilidad de la información con la que se construye el modelo determina la precisión de los resultados.

  •  Desarrollar planeación y definir resultados: En esta fase es indispensable que se organice un cronograma de actividades, para esto debe tenerse en cuenta que en general la mitad del tiempo total del proyecto está destinado a definir las diferentes cuestiones, y que solo del diez al veinte por ciento del tiempo total se dedicará a construir el modelo.


PASO 2: DEFINIR EL SISTEMA.

Este paso comprende dos cuestiones, la primera relacionada con la determinación de la información requerida y la segunda, relacionada con el uso apropiado de las fuentes de información.

Para determinar la información requerida es necesario responder el siguiente grupo de preguntas:

• Cómo está distribuida la planta y cuáles son sus dimensiones?
• Cuantos centros de trabajo tiene el proceso?
• Cuáles son los tiempos de proceso de cada centro de trabajo?
• Cuantos productos o subproductos se quieren introducir en el modelo?
• Quién requiere un recurso y cuando y donde lo necesita?
• Qué se desea medir?
• Cuáles serán los indicadores que se deberán tener en cuenta?
• Cuanto tiempo se simulará el proceso?
• Qué tan variable es el proceso; se podría estandarizar?
• Quién es la persona que utilizara el programa de simulación?

En cuanto al uso apropiado de las fuentes de información, las siguientes son los documentos o archivos más adecuados para adquirir información.

• Los diagramas de proceso.
• Los estudios de tiempo.
• Los planos de planta.
• Los diagramas de flujo.
• Los pronósticos de mercadeo.
• La historia que se tenga en reportes o en otro tipo de formato.

Se recomienda no usar suposiciones o en el caso de que esto sea inevitable usar la menor cantidad posible, en cuanto a los tiempos es de mucha utilidad por simplicidad de los modelos usarlos en forma estandarizada.

PASO 3: CONSTRUIR EL MODELO.

La construcción de modelos con el software ProModel, es el tema central del siguiente capítulo, en él se examinan las minuciosidades del manejo de esta herramienta para hacer esta tarea.

Por lo general, al construir el modelo todo el proceso de definición ha de estar completo, los modeladores pueden construir el modelo por etapas en las que se determinan entradas y salidas, con lo que se logra ensamblabilidad, con esto, los modelos cuando son muy grandes, pueden construirse paralelamente o seguidamente una etapa de la otra.

PASO 4: EJECUTAR EXPERIMENTOS.

En este paso, con la mirada puesta en el objetivo de la simulación se hacen replicaciones con el fin de observar los cambios que ocurren en los resultados. Existen dos tipos de simulaciones: terminales y no terminales.

Terminales: Son modelos que están perfectamente definidos en el tiempo, es decir su comienzo y final se pueden determinar por un número.
Para determinar los experimentos con este tipo de modelos las siguientes preguntas nos aclaran las situaciones:

• Cómo debería ser el estado inicial del modelo?
• Cuál es el evento que ocasionara la finalización del modelo?
• Cuántas replicaciones deberán hacerse?

No terminales: Modelos en los cuales el proceso nunca termina, hay que fijar algún tipo de finalización, por ejemplo, cierto periodo de tiempo. El ejemplo más usual es una empresa que fabrica puntillas.

PASO 5: ANALIZAR LOS RESULTADOS.

Mediante este paso se busca encontrar los cuellos de botella del proceso o de la simulación misma; las herramientas de análisis más fuertes se hallan en los gráficos y tablas de resultados que arroja el programa de simulación; esta tarea no es sencilla, y sin ella el trabajo de simulación no conllevaría a nada, por lo cual el analista ha de interpretar los datos con la mayor inteligencia y dominio de la situación que haya adquirido.

PASO 6: REPORTAR LOS RESULTADOS.

Esto es tan importante como la información obtenida y no constituye un paso de último momento sin relevancia, por el contrario la información reportada debe ser clara y concisa, la utilización de gráficos es una excelente opción. Aquí es importante reportar por lo menos los siguientes literales.

• De qué manera se construyó.
• De donde se extrajo la información.
• Como almacenar la información original.
• Identificar las variables y los atributos utilizados.
• Identificar a las personas que realizaron la simulación.
• Establecer la fecha de la simulación.