Este apartado está dedicado a los link que para mi son importantes y que en algun momento me pueden ser de ayuda.
rules for using commans link
HERRAMIENTAS PROGRAMABLES DE COMPUTO CIENTÍFICO. Este curso es dirigido por la Dra. Elisa Schaeffer en el Posgrado de Ingeniería de Sistemas (PISIS) de la FIME en la UANL, en el semestre primavera 2012. La clase se imparte en los salones de maestria en el horario establecido por la FIME.
miércoles, 23 de mayo de 2012
martes, 8 de mayo de 2012
Octave
Octave
GNU Octave es una herramienta de cálculo muy potente en lo que a matrices se refiere, es software libre (bajo licencia GNU), lo que significa que se puede
usar y redistribuir libremente, y que cualquiera puede ayudar para mejorarlo.
Ejemplo
Se muestra un ejemplo de como en octave también se puede resolver problemas de optimización y llevar a cado análisis de sensibilidad.
Referencias
GNU Octave es una herramienta de cálculo muy potente en lo que a matrices se refiere, es software libre (bajo licencia GNU), lo que significa que se puede
usar y redistribuir libremente, y que cualquiera puede ayudar para mejorarlo.
Ejemplo
Se muestra un ejemplo de como en octave también se puede resolver problemas de optimización y llevar a cado análisis de sensibilidad.
function [variables,fobj,estado,otros]=sensi c = [10, 6, 4,5]'; A = [ 1, 1, 1,5; 10, 4, 5,6; 2, 2, 6,10 8,10,15,14]; b = [100, 600, 300,500]'; lb = []'; ub = []; ctype = "UUUU"; % U<=; S=; L>= vartype = "CCCC"; %tipo de variable s = -1; %1 min; -1 max param.msglev = 1; param.itlim = 100; param.save=1; param.dual=1; [xmin, fmin, status, extra] = glpk (c, A, b, lb, ub, ctype, vartype, s, param); variables=xmin fobj=fmin estado=status otros=extra endfunction
Maximize obj: + 10 x_1 + 6 x_2 + 4 x_3 + 5 x_4 Subject To r_1: + 5 x_4 + x_3 + x_2 + x_1 <= 100 r_2: + 6 x_4 + 5 x_3 + 4 x_2 + 10 x_1 <= 600 r_3: + 10 x_4 + 6 x_3 + 2 x_2 + 2 x_1 <= 300 r_4: + 14 x_4 + 15 x_3 + 10 x_2 + 8 x_1 <= 500
Referencias
martes, 24 de abril de 2012
R
¿Qué es R ?
R es un lenguaje de programación para análisis estadístico, es de software libre. Proporciona un amplio abanico de herramientas estadísticas como modelos lineales y no lineas, tests estadísticos, análisis de series temporales, algoritmos de clasificación y agrupamiento, etcétera.
Este lenguaje permite trabajor conjuntamente con python, latex, octave entre otros.
Ejemplos sencillos de uso de R
Referencias
acerca de R , tarjetas de referencias: card1, card2, card3,
generacion de reportes automática
R es un lenguaje de programación para análisis estadístico, es de software libre. Proporciona un amplio abanico de herramientas estadísticas como modelos lineales y no lineas, tests estadísticos, análisis de series temporales, algoritmos de clasificación y agrupamiento, etcétera.
Este lenguaje permite trabajor conjuntamente con python, latex, octave entre otros.
Ejemplos sencillos de uso de R
D <- data.frame(x=c(1,2,3,1), y=c(7,19,2,2)) D indexes <- order(D$x) # ordeno con respecto a la primera columna menor-mayor D[indexes,] # ordena con respecto a la segunda columna mayor-menor D[rev(order(D$y)),]
simulacion <- function(N=100) { x <- runif(N) return(c(mean(x), median(x))) c } # Simulacion results <- replicate(100000, simulacion(20)) k1 <- density(results[1,]) k2 <- density(results[2,]) # grafica xrange <- range(k1$x, k2$x) plot(k1$x, k1$y, xlim=xrange, type="l", xlab="valor estimado", ylab="") grid() lines(k2$x, k2$y, col="red") abline(v=.5) legend(x="topleft", bty="n", lty=c(1,1), col=c("black", "red"), legend=c("Media", "Mediana"))
x <- runif(100, 0, 10) y <- 2 + 3*x + rnorm(100) summary(lm(y ~ x)) D <- data.frame(x,y) summary(lm(y ~ x, D)) d <- lm(y ~ x) print(d)R es un lenguaje de programación facil de usar y muy practico, se pueden generar reportes automáticos desde latex, en la parte de referencias se proporciona un link para más información.
Referencias
acerca de R , tarjetas de referencias: card1, card2, card3,
generacion de reportes automática
martes, 20 de marzo de 2012
Python
Python
Es un lenguaje de programación de alto nivel. Python fue creado a finales de los ochenta por Guido Van Rossum en el Centro para las Matemáticas y la Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos, como un sucesor del lenguaje de programación ABC.
¿Por qué usar Python?
Es un lenguaje de programación de alto nivel. Python fue creado a finales de los ochenta por Guido Van Rossum en el Centro para las Matemáticas y la Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos, como un sucesor del lenguaje de programación ABC.
¿Por qué usar Python?
Por que es facil de usar, es de código abierto
Ejemplos de python
Un ejemplo sencillo de como generar números aleatorios y guardarlos en un archivo. También un ejemplo de como trabajar con importat gnuplot en python.
Ejemplos de python
Un ejemplo sencillo de como generar números aleatorios y guardarlos en un archivo. También un ejemplo de como trabajar con importat gnuplot en python.
#!/usr/bin/python import random import Gnuplot f = open("archivo.txt","w") for i in range(0, 10): a=random.uniform(1,1000) f.write("%fl\n" %a) print(a) f.close() b=[[1,2],[3,4],[5,6],] gp = Gnuplot.Gnuplot(persist=1) gp.title('Grafica sencilla ') gp.xlabel('primera entrada') gp.ylabel('segunda entrada') gp.plot(b)
Un ejemplo de como ingresar datos desde teclado y como poner mensajes de error
valor=input('Dame un numero: ') try: temp=int(valor) print 'el valor es: ', valor except ValueError as variable: print 'Debes ingresar un numero entero'
Python y Cplex
Es posible trabajar con Cplex desde pyhton en el enlace
se puede encontrar todo la información y de como trabajar con python y Cplex.
A continuación se presenta un demo
#!/usr/bin/python # diet.py -- A diet problem # Descripción del problema # Minimizar el costo de la dieta sujeto a las restricciones de los nutrientes. # To run from within the python interpreter, use # >>> import diet import cplex from cplex.exceptions import CplexError from inputdata import read_dat_file # Clase para los datos class ProbData: def __init__(self, filename): # lee los datos del archivo diet.dat self.foodCost, self.foodMin, self.foodMax, self.nutrMin, \ self.nutrMax, self.nutrPer = \ read_dat_file("../../data/diet.dat") # revisa si los datos no son inconsistentes if len(self.foodCost) != len(self.foodMin) or \ len(self.foodCost) != len(self.foodMax) or \ len(self.nutrMin) != len(self.nutrMax) or \ len(self.nutrMin) != len(self.nutrPer): print "ERROR: Data file '%s' contains inconsistent data\n" % filename raise Exception("data file error") for np in self.nutrPer: if len(self.foodCost) != len(np): print "ERROR: Data file '%s' contains inconsistent data\n" % filename raise Exception("data file error") def populatebyrow(prob, data): nFoods = len(data.foodCost) nNutrients = len(data.nutrMin) # we want to minimize costs prob.objective.set_sense(prob.objective.sense.minimize) # add variables to decide how much of each type of food to buy varnames = ["x"+str(j) for j in range(nFoods)] prob.variables.add(obj = data.foodCost, lb = data.foodMin, ub = data.foodMax, names = varnames) # add constraints to specify limits for each of the nutrients for n in range(nNutrients): prob.linear_constraints.add(lin_expr = [[varnames,data.nutrPer[n]]], senses = ["R"], rhs = [data.nutrMin[n]], range_values = [data.nutrMax[n] - data.nutrMin[n]]) def populatebycolumn(prob, data): nFoods = len(data.foodCost) nNutrients = len(data.nutrMin) # we want to minimize costs prob.objective.set_sense(prob.objective.sense.minimize) # create empty constraints to be filled later rownames = ["r"+str(n) for n in range(nNutrients)] prob.linear_constraints.add(senses = ["R" * nNutrients], rhs = data.nutrMin, range_values = [data.nutrMax[n] - data.nutrMin[n] for n in range(nNutrients)], names = rownames) # create columns for j in range(nFoods): prob.variables.add(obj = [data.foodCost[j]], lb = [data.foodMin[j]], ub = [data.foodMax[j]], columns = [[rownames, [data.nutrPer[n][j] for n in range(nNutrients)]]]) def diet(pop_method): try: # read the data in diet.dat data = ProbData("../../data/diet.dat") # create CPLEX object my_prob = cplex.Cplex() # populate problem if pop_method == "r": handle = populatebyrow(my_prob, data) if pop_method == "c": handle = populatebycolumn(my_prob, data) # solve problem my_prob.solve() except CplexError, exc: print exc return numrows = my_prob.linear_constraints.get_num() numcols = my_prob.variables.get_num() solution = my_prob.solution # solution.get_status() returns an integer code print "Solution status = " , solution.get_status(), ":", # the following line prints the corresponding string print solution.status[solution.get_status()] print "Objective value = " , solution.get_objective_value() x = solution.get_values(0, my_prob.variables.get_num()-1) for j in range(my_prob.variables.get_num()): print "Buy %d = %17.10g" % (j, x[j]) import sys if __name__ == "__main__": if len(sys.argv) != 2 or sys.argv[1] not in ["-r", "-c"]: print "Usage: diet.py -X" print " where X is one of the following options:" print " r generate problem by row" print " c generate problem by column" print " Exiting..." sys.exit(-1) diet(sys.argv[1][1]) else: prompt = """Enter the letter indicating how the problem data should be populated: r : populate by rows c : populate by columns\n ? > """ r = 'r' c = 'c' diet(input(prompt))Referencias Introducción
modelo_simple
lunes, 5 de marzo de 2012
Gnuplot
Gnuplot
Es un programa gratuito que nos permite gráficar funciones y datos en 2D y 3D. Es compatible con los sistemas operativos linux, Unix, Mac Os X. Gnuplot puede mostrar los resultados directamente en pantalla, así como en muchos formatos como PNG, EPS, JPEG etcétera.
Gnuplot pone la escala más conveniente para los datos a gráficas, si no se le indica de antemano
Se puede usar interactivamente con bash, sed y awk.
Ejemplos
Se pueden hacer desde gráficas muy sencillas hasta muy complicas y con animación, en colores o escalas de grises.
A continuación algunos ejemplos de gráficas que se pueden generar en gnuplot.
Desde terminal pongo > gnuplot ejemplo1.plot > name1.jpg
Desde termina pongo > bash ejemplo.sh
Enlaces
A continuación algunos enlaces que pueden ayudar cuando se usa gnuplot
Enlace1
Enlace2
enlace 3
Es un programa gratuito que nos permite gráficar funciones y datos en 2D y 3D. Es compatible con los sistemas operativos linux, Unix, Mac Os X. Gnuplot puede mostrar los resultados directamente en pantalla, así como en muchos formatos como PNG, EPS, JPEG etcétera.
Gnuplot pone la escala más conveniente para los datos a gráficas, si no se le indica de antemano
Se puede usar interactivamente con bash, sed y awk.
Se pueden hacer desde gráficas muy sencillas hasta muy complicas y con animación, en colores o escalas de grises.
A continuación algunos ejemplos de gráficas que se pueden generar en gnuplot.
- Varias gráficas de diferente tamaño en una sola hoja
set term postscript eps color set xrange[0:10] set multiplot set origin 0,0.5 set size 0.5,0.5 set grid plot tan(x**x) set origin 0.2,0 set size 0.4,0.4 plot sin(x) set origin 0.5,0.5 set size 0.5,0.4 set origin 0.5,0.5 plot cos(x) unset multiplot
Desde terminal pongo > gnuplot ejemplo1.plot > name1.jpg
- Gráfica con animación
#!/bin/bash
for ((i=-100; i<100;i++));
do echo -e "set yrange[-100:100]; pl $i*sin(x)\n";
done | gnuplot -persist
Desde termina pongo > bash ejemplo.sh
- Una superficie
#set term postscript eps color set terminal jpeg reset unset key set contour base set pm3d at s #set pm3d at b set title "Superficie y contornos" set xrange [-2:10] set yrange [0:12] splot for [i=1:10:2] 'out.dat' using (-2):0:i with lines lt i, \ for [i=1:10:2] 'out2.dat' u 0:(12):i w l lt i,\ 'out.dat' matrix w pm3d
Enlaces
A continuación algunos enlaces que pueden ayudar cuando se usa gnuplot
Enlace1
Enlace2
enlace 3
miércoles, 15 de febrero de 2012
Sed
Sed
El editor sed es un editor en línea que lee uno o más archivos de texto o cadenas de entrada mediante pipes, los cuales pueden ser editados de acuerdo a los comandos (scripts) que sean introducidos.
El resultado será escrito en la salida estándar, esto quiere decir que al dar la instrucción de editar algún archivo, este no será modificado, simplemente sed enviará como cadena de salida el texto de este archivo con las modificaciones indicadas en el script.
Si quisieramos escribir la salida en un archivo tendríamos que utilizar el direccionamiento > para que la salida estándar sea escrita en el archivo que le indiquemos.
El funcionamiento de Sed es de la siguiente manera:
Caracteres especiales de sed
A continuación una breve lista de los caracteres especiales que se usan en sed
A continuación algunos ejemplos de como usar sed
3. Borrar datos de una sola linea
4.- Borras lineas después de cierto número
Archivos que se utilizaron para probar la línea dos y tres
datos, Modificado
Tarjetas de referencias
Información introductoria sobre sed,
Manual
El editor sed es un editor en línea que lee uno o más archivos de texto o cadenas de entrada mediante pipes, los cuales pueden ser editados de acuerdo a los comandos (scripts) que sean introducidos.
El resultado será escrito en la salida estándar, esto quiere decir que al dar la instrucción de editar algún archivo, este no será modificado, simplemente sed enviará como cadena de salida el texto de este archivo con las modificaciones indicadas en el script.
Si quisieramos escribir la salida en un archivo tendríamos que utilizar el direccionamiento > para que la salida estándar sea escrita en el archivo que le indiquemos.
El funcionamiento de Sed es de la siguiente manera:
- Lectura de una línea desde el flujo de entrada (las líneas están delimitada por un carácter de salto de línea)
- La línea es procesada en función de los comandos leídos
- Muestra (o no) del resultado en la salida estándar (pantalla)
- Continúa con la línea siguiente.
Caracteres especiales de sed
A continuación una breve lista de los caracteres especiales que se usan en sed
- # indica comentario
- d borra lo indicado
- p imprime en la linea de salida
- / separador de patron de expresión regular
- * indica cero o más repeticiones
- . un caracter cualquiera
- ^ Inicio de linea
- $ fin de linea
- [^] lista negada
- H Anexar una nueva línea al contenido.
- g Sustituir una nueva línea.
A continuación algunos ejemplos de como usar sed
- Para borrar comentarios
#!/bin/sh sed ' /begin/,/end/ !{ s/#.*// s/[ ^I]*$// /^$/ d p } '
- Borrar lineas vacias en un archivo:
sed /^$/d data.txt > prueba31.txt
3. Borrar datos de una sola linea
sed '3 s/[ins3]*//' <data.txt >que.txt
4.- Borras lineas después de cierto número
#!/bin/sh sed ' 1! {; H; g; } 1,5 !s/[^\n]*\n// $p h'
Archivos que se utilizaron para probar la línea dos y tres
datos, Modificado
Tarjetas de referencias
Información introductoria sobre sed,
Manual
martes, 31 de enero de 2012
AWK
¿Qué es AWK?
Es un lenguaje de programación diseñado para procesar datos basados en texto, ya sean ficheros o flujos de datos, es todo un lenguaje de análisis semántico. Para más detalle acerca de AWK visita el siguiente link.
El área fuerte de awk es realizar modificaciones a archivos, la sintaxis en awk es sensitiva a mayúsculas y minúsculas. Awk procesa los datos de entrada línea por línea, dividiendo cada línea en “columnas”. El separador es todo tipo de espacio o puede ser definido por el usuario.
Experimentación con Awk
Para experimentar con Awk vamos a seguir en el mismo problema presentado en el apartado de bash. Tenemos un archivo de datos que contiene el número de instancia, el tipo de instancia, costo y tiempo de la instancia. Lo que buscamos es, utilizando awk localizar la instancia con menor costo y menor tiempo, la instancia con mayor costo y mayor tiempo y la difencia entre esta instancias.
En los siguiente link se encuentran los códigos que hace lo anterior.
codigoawk
datos
Como trabajo futuro se usara AWK para trabajar con los archivos de datos del proyecto de tesis, en los cuales se tendran replicas de cada una de los instancias, con AWK será más facil hacer el análisis de los datos, este análisis consistirá en calcular el tiempo y costo promedio de las instancias. Poder comparar el tamaño de las mismas de manera más efectiva.
Por último un video que explica brevemente como usar AWK
Referencias
Aquí dejo algunas link sobre refencias de awk y comandos en Linux
Wikipedia
Taller.pdf
El área fuerte de awk es realizar modificaciones a archivos, la sintaxis en awk es sensitiva a mayúsculas y minúsculas. Awk procesa los datos de entrada línea por línea, dividiendo cada línea en “columnas”. El separador es todo tipo de espacio o puede ser definido por el usuario.
Experimentación con Awk
Para experimentar con Awk vamos a seguir en el mismo problema presentado en el apartado de bash. Tenemos un archivo de datos que contiene el número de instancia, el tipo de instancia, costo y tiempo de la instancia. Lo que buscamos es, utilizando awk localizar la instancia con menor costo y menor tiempo, la instancia con mayor costo y mayor tiempo y la difencia entre esta instancias.
En los siguiente link se encuentran los códigos que hace lo anterior.
codigoawk
datos
Como trabajo futuro se usara AWK para trabajar con los archivos de datos del proyecto de tesis, en los cuales se tendran replicas de cada una de los instancias, con AWK será más facil hacer el análisis de los datos, este análisis consistirá en calcular el tiempo y costo promedio de las instancias. Poder comparar el tamaño de las mismas de manera más efectiva.
Por último un video que explica brevemente como usar AWK
Referencias
Aquí dejo algunas link sobre refencias de awk y comandos en Linux
Wikipedia
Taller.pdf
martes, 24 de enero de 2012
Bash
Objetivo :
Familiarizarnos con el programa BASH
BASH (bourne again shell)
Es un programa informatico cuya función consiste en interpretar ordenes. Está basado en la shell de Unix, es el intérprete de comandos por defecto en la mayoría de las distribuciones de LINUX. Su nombre es un acrónimo de Bourne-Again Shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix. ¿Por qué usar bash? Bash nos ayuda a automatizar el manejo de datos, es decir nos permite manejar de una manera óptima el uso de diferentes parámetros. ¿Como vamos a experimentar con BASH? En mi caso, voy a experimentar con el trabajo de tesis, el cual se explica en la siguiente presentación y se da la explicación de como se utilizo BASH Clase bash
Familiarizarnos con el programa BASH
BASH (bourne again shell)
Es un programa informatico cuya función consiste en interpretar ordenes. Está basado en la shell de Unix, es el intérprete de comandos por defecto en la mayoría de las distribuciones de LINUX. Su nombre es un acrónimo de Bourne-Again Shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix. ¿Por qué usar bash? Bash nos ayuda a automatizar el manejo de datos, es decir nos permite manejar de una manera óptima el uso de diferentes parámetros. ¿Como vamos a experimentar con BASH? En mi caso, voy a experimentar con el trabajo de tesis, el cual se explica en la siguiente presentación y se da la explicación de como se utilizo BASH Clase bash
Suscribirse a:
Entradas (Atom)