Vistas de página en total

lunes, 27 de febrero de 2012

CUARTA CLASE: MODELADO Y SIMULACIÓN

Normalmente la estructura de una empresa es una pirámide en la que el último escalón lo ocupan los automatismos y en el primer escalón se sitúa la gerencia de la empresa. Son los dos puntos de vista desde los que están enfocadas las prácticas de esta asignatura.






En mi caso vemos la programación de los autómatas con el programa Cx-Programer (explicado en las entradas de prácticas de este blog)
Como vimos en la clase anterior exísten unos paradigmas (métodos) de simulación:
· Dynamic Systems (usado en física, ingeniería...)
· System Dinamics (usado en biología, economía, banca...)
· Discrete Event
· Agent Based
El objeto de estudio de los dos primeros métodos son las ecuaciones diferenciales.







PARTE II : SISTEMAS DE EVENTOS DISCRETOS



Eventos, son sucesos que ocurren en un tiempo determinado. Una serie de sucesos crean la teoría de colas.
1.- Sucesos estocásticos: dadas unas propiedades estadísticas crear el colectivo virtual
Espacio de probabilidad
Experimento aleatorio: por algún procedimiento, seleccionar un elemento de un colectivo y obtener un resultado.
Espacio muestral: conjunto de todos los resultados posibles.
Ejemplos de : cartas de una baraja, números de una ruleta, alumnos de una clase, cara y cruz de una moneda, números de un dado {1; 2; 3; 4; 5; 6}
Enlaces que explican el álgebra de subconjuntos:
http://esfm.egormaximenko.com/real_analysis/sigma_algebras.pdf
http://es.wikipedia.org/wiki/%C3%81lgebra_de_Borel

Suceso aleatorio
Frecuencia relativa
Función de probabilidad
Variable aleatoria
Función de distribución
Función de densidad
La esperanza matemática
La varianza
Teoría de colas
Las colas son una parte esencial de sistemas de eventos discretos. Aparecen en procesos de fabricación, negocios, bancos, redes de comunicación, etc. La Teoría de colas está muy unida a la simulación.
Una cola de espera está formada por una colección de objetos o clientes esperando en un punto de servicio a ser atendidos en un cierto orden por un servidor o por varios.
Modelo de una cola, distribuciones de probabilidad:
Modelo de llegadas. Los clientes pueden llegar en intervalos de tiempo deterministas o aleatorios, siguiendo una determinada funci on de distribución.
Modelo de servicio. El servidor puede realizar el servicio en un tiempo determinista o aleatorio, siguiendo una determinada funci on de distribución.
Tipo de disciplina de la cola. Los tipos más usuales son FIFO ( first input, first output) y LIFO (last input, first output).
Resultados
A partir del modelo de una cola se pueden obtener algunos resultados, a veces por métodos matemáticos o si no por simulación. Los más interesantes desde el punto de vista práctico son:
Longitud, o número de elementos, de la cola.
Tiempo que espera un cliente para ser atendido.
Porcentaje de tiempo que el servidor está ocupado.
Número de clientes que llegan en un intervalo de tiempo dado.
Número de clientes que reciben servicio inmediato.
Longitud máxima que ha alcanzado la cola.
Estos elementos son números que varían de forma aleatoria en el tiempo, condicionados por los datos del modelo los cuales, a su vez, son también aleatorios.
Funcionamiento de la cola. El intervalo de tiempo Ta que pasa entre la entrada de un cliente y la del siguiente se denomina tiempo entre llegadas





El servidor atiende a un cliente de la cola durante un tiempo Td , llamado tiempo de servicio, pasado el cual dicho cliente sale del servidor. Entonces, si la cola no está vacía, el servidor repite la misma operación con el cliente siguiente hasta terminar con todos los clientes que están en cola.
Notación de Kendall
D.G. Kendall propuso la siguiente notaci on para modelos de colas: A/S/Qen donde las letras A, S y Q denotan: A: Distribución de llegada de clientes
S: Distribución de servicio
Q: Número de servidores
2.- Método de Montecarlo: dadas las propiedades estadísticas crear el colectivo virtual
Números Aleatorios: Cualquiera de los números dentro de cierto rango en el que todos tienen la misma oportunidad de ocurrir.
Método de Montecarlo
En ciertas aplicaciones de la Estadística, dados un colectivo (espacio muestral) y una distribución de probabilidad, se trata de realizar pruebas o experimentos para obtener sucesos con sus probabilidades que son números aleatorios.





En el método de Montecarlo se procede a la inversa,





es decir, dados unos números aleatorios y una distribución, se trata de obtener, no el colectivo real (eso sería imposible) sino una simulación del mismo o "colectivo" virtual.
A veces no se desea obtener el colectivo sino alguna propiedad suya determinada por algunos elementos. En este caso, con el método de Montecarlo obtendremos tales elementos y a partir de ellos calcularemos dicha propiedad.
3.- GPSS
Lenguaje GPSS: lenguaje de comandos antiguo en el que no vamos a profundizar.
Estamentos de control
Bloques básicos
4.- AnyLogic: es un programa nuevo
Statecharts: cartas de estado que sirven para desarrollar sistemas estocásticos. Es un lenguaje gráfico para programar los eventos que son complicados de programar en Java o en C++. Es un sistema de estados y transiciones asociados. Cada vez que hay un evento se cambia de estado. Los elementos principales de estas Statecharts son:
- Estados
- Transiciones
- Acción: es un accesorio. Tanto los estados como las transiciones tienen acciones
Los símbolos son:



Enterprise Library: librería para crear programas de empresa
Agent Based (ejemplo: Predator pray): simulación por medio de agentes



















miércoles, 22 de febrero de 2012

TERCERA CLASE

Existen diferentes clases de modelos:
- Sistemas Continuos: el sistema evoluciona de forma continua (ej: Temperatura, no hay saltos.)


· Ecuaciones diferenciales
· Sistemas lineales
· Sistemas no lineales


- Sistemas de eventos (sucesos) discretos. Van a influir en el comportamiento del sistema y suceden en un periodo corto de tiempo.


· Procesos estocásticos
· Modelos de colas
· Sistemas reactivos


Programas de Simulación: sirven para implementar el modelo matemático o computacional de un sistema y obtener resultados gráficos y animaciones de su comportamiento.
Paradigmas de simulación:


· Dynamic Systems
· System Dinamics (usado en biología, economía, banca)
· Discrete Event
· Agent Based


Solución numérica de una EDO (Ecuación Diferencial Ordinaria) con Analogyc
Problema del Valor Inicial:
dx/dt = f(t,x)
x(0) = x0
Con un ejemplo:
dx/dt = -3x
x(0) =2
La solución sería: x(t) = 2·e^-3t
Esta ecuación diferencial la podemos resolver con Anylogic gracias al Diagrama de Forrester de la siguiente manera, dando la solución numérica:




Donde el símbolo de la válvula representa flow o grifo y el cuadrado representa un depósito o stock.
Esta forma de escribir las ecuaciones deferenciales simplifica su resolución.



PROGRAMACIÓN ORIENTADA AL OBJETO (POO)
La programación orientada a objetos o POO es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.



Para comprender las partes de un esquema de POO, podemos pensar en una figura de plastilina. La figura de plastilina es el elemento principal con unas características como el color, y puede tener funcionalidades asociadas como servir de decoración. Volviendo al esquema POO, la figura de plastilina sería el objeto, las propiedades serían el color o la plastilina usada, y los métodos serían las funcionalidades asociadas. El molde que se ha usado para hacer la figura puede ser otro objeto, que utilizará objetos plastilina.


- Clases en POO: Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase.


- Propiedades o atributos: Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.


- Métodos: Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.



- Objetos: Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee.


- Estado interno en un objeto: Las propiedades de un objeto toman valores. Por ejemplo, cuando tenemos una figura de plastilina la propiedad color tomará un valor en concreto, como por ejemplo rojo o azul. El valor concreto de una propiedad de un objeto se llama estado. Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto: figura.color=rojo siendo figura el objeto.


- Mensaje en un objeto: Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando queremos que una figura de plastilina se mueva sería parecido al caso de estado: figura.ponteAandar() donde pondríamos los parámetros dentro de ( ).


- Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.


- Herencia: Sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo.


- Polimorfismo: Sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos.


- Abstracción: denota las características de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.


- Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.


- Modularidad: propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la Modularidad de diversas formas.


- Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.


- Recolección de basura: o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.


Por lo tanto y resumiendo, la programación orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución. Un objeto es una abstracción de algún hecho o ente del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Los componentes de un objeto serían: atributos, identidad, relaciones y métodos. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases

lunes, 20 de febrero de 2012

SEGUNDA CLASE

¿Cómo funciona una memoria?¿Cúal son las unidades de capacidad?


1 bit = 1b = 0 ; 1

1Byte = 8 bits = 1 B
1 kiloByte = 1 kB = 1000 B = 8*10E3 b
1 MegaByte = 1 MB = 10E6 B = 8*10E6 b
1 GigaByte = 1 GB = 10E9 B = 8*10E9 b
2E32 = 536870912 Bytes = 536 MB se pueden direccionar de forma directa para una memoria de 32 Bits.


¿Cúal son los tipos de librería JAVA?


TIPOS DE LIBRERIAS:


Ø Java.lang
Contiene clases esenciales para el lenguaje java y es el único paquete se importa automáticamente.

Ø Java.io
Soporta flujos de entrada y salida java


Ø Java.net
Soporta facilidades de red (URL, sockets TCP, sockets UDP, direcciones IP, conversiones binarias a texto)


Ø Java.awt
La librería java.awt proporciona un Abstract Window Toolkit para programación GUI (Interfaz gráfica de usuario), dibujo de gráficos e imágenes, asi como también eventos colores, tipo de letras, botones, campos de texto, etc.


Ø Java.applet
El paquete java.applet permite la creación de applets a través de la clase Applet, proporciona interfaces para conectar un applet a un documento Web y para audición de audio.


Ø Java.math
Proporciona cálculos en entero grande y real grande.


Ø Java.text
Contiene clases que permiten dar formato especializado a fechas, números y mensajes


¿Qúe es un applet Java?


En Java, un applet es un programa que puede incrustarse en un documento HTML, es decir en una página web. Cuando un navegador carga una página web que contiene un applet, este se descarga en el navegador web y comienza a ejecutarse. Esto permite crear programas que cualquier usuario puede ejecutar con tan solo cargar la página web en su navegador.

PRIMERA CLASE (lenguaje Java)

JAVA es un lenguaje de programación orientado a objetos, desarrollado a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.Con respecto a la memoria, su gestión no es un problema ya que ésta es gestionada por el propio lenguaje y no por el programador.El lenguaje Java se creó con cinco objetivos principales:


- Debería usar el paradigma de la programación orientada a objetos.
- Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
- Debería incluir por defecto soporte para trabajo en red.
- Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
- Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.





Archivo Fuente ----------> Bytecode ----------> Código ordenador



:



:



:



Interprete (JVM)






Archivo fuente: creado mediante el editor "jEdit" --> clase1.java


para pasar a bytecodes --> Javac (compilador)


para pasar de bytecodes a código fuente --> gcj


para pasar de bytecodes a interprete --> Java




Las librerías (o packages) de Java son una colección de utilidades y funciones, ordenadas por su aplicación, que sirven para facilitar las tareas de programación. Las más básicas son:



-java.applet
-java.awt
-java.beans
-java.io
-java.lang
-java.math
-java.net
-java.sql
-java.text
-java.util




En las siguientes clases utilizaremos el programa J-Edit:



1-Instalar


2-Instalar Plugin.console


3-Escibir codigo fuente


4-Compilar codigo fuente: Plugins > Console > Compile Current Buffer5-Ejecutar codigo fuente: Plugins>Console>Run Current Buffer