Expresiones
Expressions y el Expression Editor
Expresiones en Simio
Al igual que en los lenguajes de programación, una Expression (expresión) en Simio es una combinación de una o más constantes, variables, operadores y funciones que son interpretadas (evaluadas) para generar un valor de retorno. (Fuente: Wikipedia)
En Simio, la creación de expresiones se realiza por medio del Expression Editor o editor de expresiones. Este se encuentra en la ventana de propiedades para distintas propiedades que acepten este tipo de valor. Para abrirlo basta con seleccionar la propiedad que se desea editar y luego hacer click en el botón ubicado en el extremo derecho en forma de flecha hacia abajo ().
Utilizando el Expression Editor o editor de expresiones para definir una distribución de probabilidad.
Por medio de las expresiones y con la ayuda del editor de expresiones, se pueden definir distribuciones de probabilidad, realizar operaciones matemáticas, acceder a propiedades y estados de objetos, llamar a las funciones incluidas de Simio, acceder a la hora en el reloj de la simulación, entre muchas otras. La sintaxis utilizada le será familiar a aquellos que hayan programado en lenguajes de programación tradicionales como Java.
Algunas constantes o palabras reservadas
Nombre | Descripción |
True | Valor boolean que representa el valor de verdad verdadero. Tiene un valor numérico equivalente a 1. |
False | Valor boolean que representa el valor de verdad falso. Tiene un valor numérico equivalente a 0. |
Infinity | Representa un valor numérico de infinito. |
Nothing | Similar a el null de algunos lenguajes de programación. Representa una referencia nula. |
ParentObject | Representa una referencia al objeto padre que contiene a la expresión. |
Is | Is seguido del nombre de la definición de un objeto retorna True si el objeto sobre el cual se invoca este método es una instancia de dicha definición. Ej: MiServidor.Is.Server == True |
TimeNow | Retorna el reloj de la simulación, en horas. |
Operadores matemáticos y lógicos
Operador | Descripción |
== | Igual a |
> | Mayor que |
< | Menor que |
>= | Mayor o igual que |
<= | Menor o igual que |
&& | Y (and) |
|| | O (or) |
! | No (not). Invierte el resultado de una expresión lógica. |
!= | Distinto a |
+ | Adición |
- | Sustracción |
* | Multiplicación |
/ | División |
^ | Potencia (elevado a) (2^3 == 8) |
Distribuciones de probabilidad
Random.Distribución
Simio soporta varias distribuciones de probabilidad para la generación de números aleatorios. Estas se utilizan de la forma Random.Distribución(Parámetros)
Editor de expresiones mostrando la lista de distribuciones implementadas en Simio.
Distribuciones y sus parámetros
A continuación se definen las distribuciones implementadas en Simio con sus parámetros.
Distribución | Función y parámetros | Descripción |
Bernoulli | Random.Bernoulli(probabilidadDeÉxito) | Esta distribución retorna un valor 0 o 1. El parámetro es la probabilidad de obtener 1. |
Beta | Random.Beta(alpha1, alpha2) | Distribución con rango 0 a 1 cuya forma depende de sus parámetros de forma alpha1 y alpha2. |
Binomial | Random.Binomial(probabilidadDeÉxito, númeroDePruebas) | Distribución que representa el número de éxitos en una cantidad especificada de pruebas. |
Continua | Random.Continuous(v1, c1, v2, c2, ..., vn, cn) |
Distribución empírica definida por un conjunto de pares de la forma (vi, ci) correspondiente a un valor y su probabilidad acumulada. Devuelve un número real ubicado entre 0 y vn.
Esta distribución tiene implícito un v0 igual a 0, si se desea que los valores partan en v1 se debe especificar c1 como 0. |
Discreta | Random.Discrete(v1, c1, v2, c2, ..., vn, cn) |
Distribución empírica definida por un conjunto de pares de la forma (vi, ci) correspondiente a un valor y su probabilidad acumulada. Devuelve solamente uno de los n valores definidos.
Ejemplo: Random.Discrete(1, 0.2, 2, 0.5, 3, 1) devuelve solo los valores 1, 2 o 3, con un 20%, 30% y 50% de probabilidad, respectivamente. |
Erlang | Random.Erlang(media, k) | Distribución que modela un proceso de n-fases en el que el tiempo para cada fase está distribuido de forma exponencial. Los parámetros corresponden a la media y el número de fases (k). |
Exponencial | Random.Exponential(media) | Distribución utilizada normalmente para modelar el tiempo entre llegadas. Recibe como parámetro la media de la distribución. |
Gamma | Random.Gamma(alpha, beta) | Distribución que recibe un parámetro de forma (alpha) y otro de escala (beta). La media es el producto de estos parámetros. |
Geométrica | Random.Geometric(probabilidadDeÉxito) | Distribución discreta que representa el número de fallas antes del primer éxito. El parámetro representa la probabilidad de éxito para cada prueba independiente. |
JohnsonSB | Random.JohnsonSB(alpha1, alpha2, mínimo, máximo) | Distribución acotada cuya forma depende de sus dos parámetros de forma (alpha1, alpha2), el mínimo y el máximo. |
JohnsonSU | Random.JohnsonSU(alpha1, alpha2, ubicación, escala) | Distribución no acotada cuya forma depende de sus dos parámetros de forma (alpha1, alpha2), el parámetro de ubicación y el parámetro de escala. |
LogLogistic | Random.LogLogistic(forma, escala) | Distribución con un parámetro de forma y uno de escala, ambos deben ser no negativos. Tiene un rango de 0 a infinito. |
Lognormal | Random.Lognormal(media, desviaciónEstándar) | Distribución continua en la que el logaritmo de una variable tiene una distribución normal. Sus parámetros son la media y la desviación estándar. |
Binomial Negativa | Random.NegativeBinomial( probabilidadDeÉxito, númeroDeÉxitos) |
Distribución discreta que representa el número de fallas antes de alcanzar el número especificado de éxitos. Los parámetros son la probabilidad de éxito para cada prueba y el número requerido de éxitos. |
Normal | Random.Normal(media, desviaciónEstándar) | Sus parámetros son la media y la desviación estándar. |
Pearson tipo VI | Random.PearsonVI(formaA, formaB, escala) | Distribución con dos parámetros de forma (formaA, formaB) y uno de escala (escala). Todos los parámetros deben ser no negativos. El rango es de 0 a infinito. |
Pert | Random.Pert(mínimo, moda, máximo) | Caso especial de la distribución Beta en la que los parámetros de forma son calculados a partir del mínimo, la moda y el máximo. |
Poisson | Random.Poisson(media) | Distribución discreta que modela el número de eventos en un intervalo de tiempo en el cual estos están ocurriendo a una tasa constante según un proceso Poisson. El tiempo entre eventos está distribuido de forma exponencial y el número de eventos en un tiempo determinado esta Poisson-distribuido. El parámetro es la tasa de eventos por unidad de tiempo, debe ser no negativa. |
Triangular | Random.Triangular(mínimo, moda, máximo) | Distribución que tiene parámetros para definir el mínimo, la moda o valor más probable y el máximo. |
Uniforme | Random.Uniform(mínimo, máximo) | Distribución cuyos parámetros definen el valor mínimo y máximo. Todos los valores dentro del rango son equiprobables. |
Weibull | Random.Weibull(forma, escala) | Distribución con parámetros de forma y escala cuyo rango va de 0 a infinito. |
Funciones matemáticas
Math.Función
Simio incorpora una serie de funciones matemáticas. Estas se utilizan de la forma Math.Función(Parámetros)
Editor de expresiones mostrando las funciones matemáticas incluidas en Simio.
Funciones y sus parámetros
Constantes y parámetros destacados en negrita.
Nombre | Función y parámetros | Descripción |
Valor absoluto | Math.Abs(valor) | Retorna el valor absoluto del valor especificado. El valor absoluto de un número es su magnitud sin signo. |
Arcocoseno | Math.Acos(valor) | Retorna el arcocoseno del valor especificado (en radianes). |
Arcoseno | Math.Asin(valor) | Retorna el arcoseno del valor especificado (en radianes). |
Arcotangente | Math.Atan(valor) | Retorna el arcotangente del valor especificado (en radianes). |
Techo | Math.Ceiling(valor) | Retorna el entero más pequeño pero no menor que el valor especificado. |
Coseno | Math.Cos(valor) | Retorna el coseno del valor especificado (en radianes). |
e | Math.E | Retorna la base del logaritmo natural. Constante matemática e. |
Epsilon | Math.Epsilon | Representa el número real más pequeño (representable) mayor que cero. |
Exponencial | Math.Exp(valor) | Retorna el resultado de elevar la constante e al valor especificado. |
Piso | Math.Floor(valor) | Retorna el entero más grande pero no mayor al valor especificado. |
Si | Math.If(condición1, valor1, condición2, valor2, ..., condiciónN, valorN, valorSino) | Retorna el n-avo valor asociado a la primera condición especificada que sea evaluada a True, si ninguna condición se cumple, retorna el valorSino. Ejemplo: Math.If(1==2, 1, 2==2, 3, 4) retorna 3. |
¿Es NaN? | Math.IsNaN(valor) | Retorna True si el valor es NaN, False si no lo es. |
Logaritmo Natural | Math.Log(valor) | Retorna el logaritmo natural del valor especificado. |
Logaritmo (en base 10) | Math.Log10(valor) | Retorna el logaritmo en base 10 del valor especificado. |
Máximo | Math.Max(valor1, valor2, ..., valorN) | Retorna el valor máximo entre los especificados. |
Mínimo | Math.Min(valor1, valor2, ..., valorN) | Retorna el valor mínimo entre los especificados. |
NaN | Math.NaN | Un valor indefinido o irrepresentable. |
π (pi) | Math.PI | Retorna la relación entre la circunferencia de un círculo y su diámetro. Constante matemática π. |
Potencia | Math.Pow(base, exponente) | Retorna el resultado de la base elevada al exponente. |
Resto o residuo | Math.Remainder(dividendo, divisor) | Retorna el resto o residuo de la división entre el dividendo y el divisor. |
Redondear | Math.Round(valor, [, dígitos]) |
Parámetro opcional: dígitos decimales. Retorna el valor redondeado (por defecto al entero más cercano). |
Seno | Math.Sin(valor) | Retorna el seno del valor especificado (en radianes). |
Raíz Cuadrada | Math.Sqrt(valor) | Retorna la raíz cuadrada del valor especificado. |
Suma de muestra aleatoria | Math.SumOfSamples(expresión, n) | Muestrea n veces, de forma independiente, la expresión aleatoria especificada y retorna la suma de los valores obtenidos. |
Tangente | Math.Tan(valor) | Retorna la tangente del valor especificado (en radianes). |