martes, 28 de febrero de 2012

21/02/2012 CLASE 4


SUCESO ESTOCASTICO

          Un proceso estocástico es un concepto matemático que sirve para caracterizar una sucesión de variables alatorias (estocásticas) que evolucionan en función de otra variable, generalmente el tiempo. Cada una de las variables aleatorias del proceso tiene su propia función de distribución de probabilidad y, entre ellas, pueden estar correlacionadas o no.
         Cada variable o conjunto de variables sometidas a influencias o impactos aleatorios constituye un proceso estocástico.

          - En teoria de probabilidades, un espacio probabilístico o espacio de probabilidad es un concepto matemático que sirve para modelizar un cierto experimento aleatorio. En general un espacio probabilístico está integrado por tres componentes. Primero, el conjunto Ω (llamado espacio muestral) de los posibles resultados del experimento, llamados sucesos elementales. Segundo, por la colección de todos los sucesos aleatorios (no solo los elementales), que es una σ-algebra sobre Ω. El par es lo que se conoce como un espacio medible. Por último, una media de probabilidad o función de probabilidad que asigna una probabilidad a todo suceso y que verifica los llamados axiomas de Kolgomorov.

          -Una variable es aleatoria si su valor está determinado por el azar. En gran número de experimentos aleatorios es necesarioario, para su tratamiento matemático, cuantificar los resultados de modo que se asigne un número real a cada uno de los resultados posibles del experimento. De este modo se establece una relación funcional entre elementos del espacio muestral asociado al experimento y números reales.

          -La teoría de colas es el estudio matemático del comportamiento de líneas de espera. Esta se presenta, cuando los "clientes" llegan a un "lugar" demandando un servicio a un "servidor", el cual tiene una cierta capacidad de atención. Si el servidor no está disponible inmediatamente y el cliente decide esperar, entonces se forma la línea de espera.

          Una cola es una línea de espera y la teoria de colas es una colección de modelos matemáticos que describen sistemas de línea de espera particulares o sistemas de colas. Los modelos sirven para encontrar un buen compromiso entre costes del sistema y los tiempos promedio de la línea de espera para un sistema dado.

          Los sistemas de colas son modelos de sistemas que proporcionan servicio. Como modelo, pueden representar cualquier sistema en donde los trabajos o clientes llegan buscando un servicio de algún tipo y salen después de que dicho servicio haya sido atendido. Podemos modelar los sistemas de este tipo tanto como colas sencillas o como un sistema de colas interconectadas formando una red de colas. En la siguiente figura podemos ver un ejemplo de modelo de colas sencillo. Este modelo puede usarse para representar una situación típica en la cual los clientes llegan, esperan si los servidores están ocupados, son servidos por un servidor disponible y se marchan cuando se obtiene el servicio requerido.

         El problema es determinar qué capacidad o tasa de servicio proporciona el balance correcto. Esto no es sencillo, ya que un cliente no llega a un horario fijo, es decir, no se sabe con exactitud en qué momento llegarán los clientes. También el tiempo de servicio no tiene un horario fijo.

        Los problemas de "colas" se presentan permanentemente en la vida diaria: un estudio en EEUU concluyó que, por término medio, un ciudadano medio pasa cinco años de su vida esperando en distintas colas, y de ellos casi seis meses parado en los semáforos.

METODO MONTECARLO

          El método de Montecarlo1 es un método no matemático estadístico numérico, usado para aproximar  expresiones matemáticas complejas y costosas de evaluar con exactitud. El método se llamó así en referencia al Casino de Montenarlo por ser “la capital del juego de azar”, al ser la ruleta un generador simple denúmeros aleatorios. El nombre y el desarrollo sistemático de los métodos de Montecarlo datan aproximadamente de 1944 y se mejoraron enormemente con el desarrollo de la computadora.

          El uso de los métodos de Montecarlo como herramienta de investigación, proviene del trabajo realizado en el desarrollo de la bomba atómica durante la Segunda Guerra Mundial en el Laboratorio Nacional de Los Álamos en EE.UU. Este trabajo conllevaba la simulación de problemas probabilísticos de hidrodinámica concernientes a la difusión de neutrones en el material de fisión. Esta difusión posee un comportamiento eminentemente aleatorio. En la actualidad es parte fundamental de los algoritmos de Raytracing para la generación de imágenes 3D.

          En la primera etapa de estas investigaciones, john von Neumman y Stanislaw Ulam refinaron esta ruleta rusa y los métodos "de división" de tareas. Sin embargo, el desarrollo sistemático de estas ideas tuvo que esperar al trabajo de Harris y  Herman Kahn en 1948. Aproximadamente en el mismo año, Enrico Fermi, Nicholas Metropolis y Ulam obtuvieron estimadores para los valores característicos de la ecuación de Schrödinger para la captura de neutrones a nivel nuclear usando este método.

El método de Montecarlo proporciona soluciones aproximadas a una gran variedad de problemas matemáticos posibilitando la realización de experimentos con muestreos de números pseudoaleatorios en una computadora. El método es aplicable a cualquier tipo de problema, ya sea estocástico o determinista. A diferencia de los métodos numéricos que se basan en evaluaciones en N puntos en un espacio M-dimensional para producir una solución aproximada, el método de Montecarlo tiene un error absoluto de la estimación que decrece como en virtud del teorema del limite central.





GPSS


          El GPSS/PC Y el GPSS/H son las aplicaciones nuevas e iterativas dentro del ambiente IBM del GPSS, General Purpose Simulating System ( en español, Sistema de Simulación de Propósito General ) desarrollo a principios de la década de los 60 por Geoffrey Gordon. El objetivo principal del GPSS es la modulación de sistemas discretos.

          Cualquier sistema por simular en este lenguaje se debe describir mediante un diagrama de bloques que representan las actividades, unidos mediante líneas que representan la frecuencia que seguirán un grupo de transacciones, que a su vez se muestran a través de los bloques. Las transacciones dependen de la naturaleza del sistema, por ejemplo, un sistemas de comunicaciones se refiere al movimiento de mensajes; un sistema de transporte se refiere al movimiento de vehiculos motorizados; un sistema de producción al movimiento de piezas.

     1.  Elementos básicos:

          Como se menciona en la subseccion anterior la simulación mediante GPSS se realiza con dos elementos básicos conocidos como transacciones y bloques. Una transacción es aquello que fluye a travez del sistema de manufactura, y que puede ser: información, piezas, ordenes de producción, fallas, operarios, mecánicos, etc., mientras que un bloque se define como cualquier operación que realiza una transacción dentro de un sistema: procesamiento, entrada a un almacén, salida de un almacén, inicio de proceso, fin de proceso, salida del sistema, ensamble, desensamble, etc.. 

      2.  Conceptos de programación:

          Un programa en GPSS puede ser visualizado desde dos puntos de vista; el primero, dentro del contexto de programación por bloques ya descrito; el segundo, dentro del contexto de cadenas de eventos. Por lo general es mas sencilla la visualización de la simulación dentro del primero de ellos, y es posible programar modelos validos sin considerar el concepto de cadenas de eventos. Se entiende por cadena de eventos el lugar donde se envían las transacciones que durante su recorrido a través del modelo o bloques encuentra una condición de bloqueo que les impide seguir un cambio libremente. Existen dos tipos de bloqueo: a) Bloqueo de retraso o b) Bloqueo condicional.

          a) El bloqueo de retraso consiste en la entrada de una transacción a un bloque que retardara su tiempo de avance; en otras palabras la transacción estará en el tiempo t1 y saldrá del bloque ne el tiempo t2, en el intervalo entre estos dos tiempos, la transacción permanece, a los ojos de un programador, por bloques en el bloque retardante, sin embargo, a los ojos de un programador por eventos, la transacción para formar parte de la cadena de eventos futuros, a la que entra en t1 y sale en t2. En GPSS existen solo dos bloques retardantes: el GENERATE, que coloca la transacción en la cadena de eventos futuros hasta el tiempo que deba de entrar al sistema, y el ADVANCE, que coloca la transacción en la cadena de eventos futuros hasta que haya cumplido con su retraso asignado.

          b) El bloque condicional ocurre cuando una transacción intenta entrar a un bloque y encuentra un impedimento físico o una condición no cumplida en el bloque; por ejemplo, una transacción que intenta entrar a un bloque que simula una maquina, y dicha maquina se encuentra trabajando con otra transacción o esta descompuesta. Entonces la transacción queda bloqueada hasta que la maquina se desocupe o quede reparada. Hablamos en programación por bloques, en apariencia la transacción queda suspendida en el espacio esperando su entrada al bloque que se lo impide. Sin embargo, esa transacción es enviada a esperar su destino a la cadena de eventos actuales, hasta que la condición de bloques desaparezca y pueda continuar su camino. En este sentido en GPSS existen muchos bloques que actúan sobre las transacciones; por mencionar algunos, SEIZE, GATE, TEST y ENTER.


ANYLOGIC

          AnyLogic es la única herramienta que apoya todas las metodologías mas comunes de la simulación en el lugar hoy: La dinámica del sistema, Proceso-céntrico (acontecimiento discreto de AKA), y el agente basaron el modelado.

          La flexibilidad única de la lengua de modelado permite al usuario capturar la complejidad y la heterogeneidad de los sistemas del negocio, económicos y sociales a cualquier nivel de detalle deseado.

          El interfaz gráfico de AnyLogic, las herramientas, y los objetos de la biblioteca permite que usted modele rápidamente áreas diversas tales como comportamiento de la fabricación y de la logística, de los procesos de negocio, de los recursos humanos, del consumidor y/o del paciente.

         El paradigma modelo orientado al objeto del diseño apoyado por AnyLogic preve la construcción modular, jerárquica, e incremental de modelos grandes.

          AnyLogic proporciona una lengua visual que simplifique perceptiblemente el desarrollo de los modelos basados del agente. UML Statecharts se utilizan para definir comportamientos del agente. Cartas de acción - definir algoritmos. Los objetos del ambiente ayudan a describir el ambiente del agente y a recoger las estadísticas. Los acontecimientos se utilizan para describir ocurrencias ocasionales o tiempo-ciertas

          Estas construcciones permiten que usted describa casi todos los aspectos del comportamiento de agentes - y usted puede escribir siempre el código específico de Java si usted quisiera modelar algo especial o inesperado.

         Los modelos basados del agente se pueden inconsútil combinar con los modelos de la dinámica del Discreto-Acontecimiento y del sistema. Los agentes ellos mismos se pueden incluir dentro de la acción de la dinámica del sistema y de organigramas y/o de organigramas.

          Es decir, puedes combinar diversos métodos de la simulación dentro de un modelo de cualquier manera: jerárquico, hand-off de la serie, paralelo, etc… leer más sobre el modelado del multiparadigma.

          Las dinámicas del sistema de ayudas de AnyLogic' almacenan y fluyen totalmente diagramming in the same way as una herramienta tradicional de la dinámica del sistema. Pero AnyLogic proporciona mucho más funcionalidad.

          En AnyLogic puedes desarrollar animaciones interactivas de encargo en el modelo que pueda explicar mucho más a sus clientes que la acción y los organigramas que sean solamente intuitivos a los reveladores.

         Puedes combinar su modelo con otros, por ejemplo puedes modelar el mercado en dinámica del sistema mientras que la fabricación y el uso de la cadena de suministro Agente-basado y los métodos del discreto-acontecimiento.

          AnyLogic permite que importes los modelos del SD de VenSim.

          Puesto que AnyLogic se basa en la plataforma del eclipse emplea las últimas tecnologías y consecuentemente el entorno de desarrollo de AnyLogic es moderno y fácil de utilizar en comparación con la mayoría de la otra simulación que modela las herramientas.

          El Discreto-acontecimiento o el modelado proceso-céntrico es apoyado completamente por AnyLogic. AnyLogic incluye la biblioteca de la empresa que permite crear cualquier clase de modelo del discreto-acontecimiento - apenas la droga y la gota bloquea, la conecta, y la da parámetros.

          La biblioteca de la empresa tiene animaciones del defecto para cada bloque pero puedes desarrollar su propio 2.o o animación 3D de cualquier complejidad que podría animar el proceso que modelas y que permite manejar los parámetros modelo en run-time.

lunes, 20 de febrero de 2012

14/02/2012 CLASE 3

EJS

En esta clase comenzaremos explicando el nuevo programa que utilizaremos EJS(Simulaciones Faciles con Java). Este programa es una herramienta para crear simulaciones interactivas.Finalizaremos aclarando la POO.
  • Genera Distribuciones: (mientras se edita sobre .xml)
  • Empaqueta o compila (JAR) (autocontenidos y autoejecutables)
  • Empaqueta varias en forma de "Lanzadores" (Launchers) 
  • Exporta para publicar en web: "Applets" (HTML)
  • Comprime archivos fuente (.ZIP)

 MODELO O MODELIZACIÓN
  • Sistemas continuos.
  • Sistemas de eventos discretos.

PROGRAMAS DE SIMULACIÓN


            Sirven para implantar los sistemas continuos o los de eventos discretos. Se obtiene resultados gráficos y animaciones de su comportamiento.
                         
                         Paradigmas(métodos) de simulación:
                                        -DYNAMICS SYSTEM (la mas antigua, muy asentada, trabajan matemáticos, científicos ,ingeniero,  físicos...)
                                        -SYSTEM DINAMICS (En Estados Unidos, a partir de la segunda guerra mundial, Forrester, trabajan bilogos, economica, banca...)
                                        -DISCRETC EVENT
                                        -AGENT BASED


EDO (Ecuación Diferencial Ordinaria, solo hay una variable)
PVI(Problema de Variable Inicial)


DIAGRAMA DE FORRESTER




  1. -Programa EJS: Dynamic System(se puede meintorducir la ecuacion diferencial)
  2. -Programa Anylogic: System Dinamics.                             
                                  :Discret Event.                         
                                  :Agent Based.
PROGRAMACIÓN ORIENTADA A OBJETOS(POO)


        La P.O.O (también conocida como O.O.P, por sus siglas en inglés) es lo que se conoce como un paradigma o modelo de programacion. Esto significa que no es un lenguaje específico, o una tecnología, sino una forma de programar, una manera de plantearse la programación. No es la única (o necesariamente mejor o peor que otras), pero se ha constituido en una de las formas de programar más populares e incluso muchos de los lenguajes que usamos hoy día lo soportan o están diseñados bajo ese modelo (PHP, AS2, AS3, ...).

        Lo que se caracteriza a la POO es que intenta llevar al mundo del código lo mismo que encontramos en El Mundo Real. Cuando miramos a nuestro alrededor ¿qué vemos? pues, cosas, objetos, pero podemos reconocer estos objetos porque cada objeto pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto (porque son de clases diferentes) y también un TV de otro (porque, aunque sean iguales, cada uno es un objeto distinto). Éste es el modelo que la POO intenta seguir para estructurar un sistema.

       Es importante recalcar nuevamente que la POO no es un lenguaje de programación, es una forma de enfrentarse a ella. Esto significa que la POO le servirá para desarrollar en muchos de los lenguajes comunos de hoy en día (incluso en ASPuaj!) manteniendo un mismo esquema mental. Incluso le permitirá enfrentar otros proyectos que no necesariamente estén relacionados con escribir código...



lunes, 13 de febrero de 2012

7/02/2012 CLASE 2

  • Librerias de java:
El núcleo de java espequeño, porque esta todo en librerias.


-java.applet
-java.awt
-java.beans
-java.io(in, out, para entradas y salidas)
-java.lang, java.math(operaciones matematicas)
-java.net
-java.sql
-java.text
-java.util
  • J-Edit
Ejemplo 1:
Ejemplo 2:


Ejemplo 3:


// Ejemplo3.java
import java.io.*;
import java.math.*;
public class Ejemplo3
{
public static void main (String [] args)
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader (isr);

try
{
System.out.print("Valor de a (distinto de cero): ");
double S1 = Double.parseDouble(br.readLine());
System.out.print("Valor de b : ");
double S2 = Double.parseDouble(br.readLine());
System.out.print("Valor de c : ");
double S3 = Double.parseDouble(br.readLine());
if(S2*S2-4*S1*S3>=0)
{
double X1=(-S2+Math.sqrt(S2*S2-4*S1*S3))/(2*S1);
double X2=(-S2-Math.sqrt(S2*S2-4*S1*S3))/(2*S1);
System.out.println ("Las soluciones son: " + X1 + " y " + X2);
}
else
{
System.out.println ("No existe solucion real.");
double X3=(Math.sqrt(-(S2*S2-4*S1*S3)))/(2*S1);
double X4=(-S2/(2*S1));
System.out.println ("Las soluciones son: " + X4 + " + " + X3 +"i y " + X4 + " - " + X3 + "i");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}


  • Java Applet
  Los applets se emplean mucho para gráficos por ejemplo trazar una recta entre dos puntos




  • Memoria

Sistema de almacenar mediante estados


1Mb=10^6 bytes
1byte=8bits
1bits=2 estados(true,false)
1Gb=10^9 bytes

miércoles, 8 de febrero de 2012

31/01/2012 CLASE 1

DEFINICION



  • Java es un lenguaje de programación orientado a objetos(teléfonos, ordenadores...etc). El lenguaje en si mismo toma mucha de su sintaxis de C y C++ pero tiene un modelo de objetos mas simples y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.
  • Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código maquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.
  • Es independiente del sistema utilizado.
  • La compilación se lleva a cabo mediante Javac.







En las siguientes clases utilizaremos el programa J-Edit:


1-Instalar J-Edit
2-Instalar Plugin.console
3-Escibir codigo fuente
4-Compilar codigo fuente: Plugins > Console > Compile Current Buffer
5-Ejecutar codigo fuente: Plugins>Console>Run Current Buffer



lunes, 6 de febrero de 2012