Aplicación básica en ASP – Clasp & Gringo parte 2

Para seguir en la diversión que los ASP nos dan, en este post explicaré un ejemplo básico para adentrarnos mas en el paradigma de el manejo de conflictos en base a negaciones (Constraints). En caso de no contar con los conceptos básicos en ASPs les dejo un artículo en donde explican una brece introducción a los ASP (páginas 85-93) y el uso que le veo a los ASP en la música.

Existen dos archivos para este ejemplo y así poder encontrar al menos un modelo estable para este problema y ambos archivos son de extensión “.lp”. El primer archivo se llama “bird.lp” y contiene lo siguiente:

bird(tux).     penguin(tux).
bird(tweety).  chicken(tweety).

Este es un archivo de hechos (facts) en donde quieren decir lo siguiente: tanto “tux” como “tweety” son de de tipo pájaros (bird), pero “tux” es un pingüino denotado  como “penguin(tux)” y “tweety” es un pollo “chicken(tweety)”. Todas las sentencias u oraciones (statements) deben terminar con un punto (.) es por ello que da lo mismo colocar el documento de la siguiente manera:
bird(tux).
penguin(tux).
bird(tweety).
chicken(tweety).

El otro archivo es el que contiene las reglas del juego a seguir y lo llamamos “fly.lp”. Tenemos tres instrucciones que nos ayudarán a resolver el problema y obtener para este caso un modelo estable:
-flies(X) :- penguin(X).
flies(X) :- bird(X), not -flies(X).
-flies(X) :- bird(X), not  flies(X).

La manera más fácil de interpretar este “código” es leyéndolo línea por línea de derecha a izquierda. Empezamos con la primera línea en donde dice “penguin(X)” que quiere decir que un pingüino equis (X es la variable y siempre se denotan con mayúsculas) implica (“:-” es equivalente a la flecha implicando algo -> ) que NO vuela (“-flies(X)”). El guión implica que una negación y es equivalente a decir “-flies(X)” que “neg_flies(X)”.
La segunda línea quiere decir que si es un pájaro “bird(X)” y (el símbolo lógico AND representado por una coma) no está explícito que NO vuela (not – flies(X)) , implica que en efecto vuela. La tercera línea es lo opuesto a la segunda y nos sirve para validar ese caso en donde si es un pájaro y NO vuela (not flies(X)) entonces el resultado es que no va a volar (-flies(X)).
De nueva cuenta cada enunciado termina con un punto y los comentarios se denotan con el caracter del porcentaje (%) es decir, todo lo que se escriba seguido del % no es tomado en cuenta por Clasp (Solver) ni Gringo (Grounder).
Para ejecutar dichos archivos abrimos una línea de comandos (cmd) y nos vamos al directorio en donde estén guardados nuestros archivos “.lp” y escribimos “gringo bird.lp fly.lp | clasp -n 0”. Esta instrucción quiere decir que usamos Gringo como Grounder para los archivos bird y fly ambos con extensión “.lp” y que decidimos que el Solver sea Clasp y que nos de todos los modelos posibles. En caso de solo querer uno omitimos “-n 0” de la instrucción anterior. Para este último caso el modelo estable es el que muestra la imagen siguiente:
El resultado es que “tux” es un pingüino y “tweety” es un pollo y ambos son pájaros, “tux” no vuela y “tweety” si.
Espero que les haya gustado y que les interese más los ASPs y que sigan usando Clasp y Gringo. Para más información pueden visitar su página oficial como referencias.

Aplicación básica en ASP – Clasp & Gringo parte 1

Como adelanté en el post pasado, una de las herramientas para mi tesis de maestría es el uso de ASP (Answer Set Programming) además de CSound y herramientas de ANTON 1.0 o superior. Dicha herramienta utiliza dos utilerías de ASP llamados Clasp (Solver) y Gringo (Grounder).

Estuve estudiando la sintaxis y tiene parecido con otros Solvers como DLV el cuál ya lo he probado, entre otros. Además les comparto mi experiencia en este nuevo enfoque de ASP desarrollado en la Universidad de Potsdam, Alemania (Potassco).

En esta primera parte les haré un pequeño tutorial de como instalarlos en Windows y lo que necesitan para empezar a trabajar con ASP. Existen todos los archivos para trabajar con estos ASPs en tu plataforma favorita pero me concentraré en Windows (en mi caso los probé en Windows 7). Primero que nada descarguen tanto Clasp como Gringo y como sugerencia editen los nombres de ambos archivos, en lugar de Clasp 1.3.4 solamente déjenlo en “Clasp” y lo mismo para Gringo.

Coloquen ambos ejecutables (.exe) en un solo directorio el cual no muevan seguido ya que vamos a tomar esa dirección y colocarla en el “Path” de las variables de entorno del sistema, por ejemplo esta es mi ruta: C:\Users\Fleiv\Desktop\Papers\Clasp ASPs Potsdam y dentro de “Clasp ASPs Potsdam” se encuentran mis ejecutables.

Una vez agregadas al Path del sistema abrimos una ventana de consola (cmd) y el directorio por default escribimos “gringo” y damos enter. Si se queda esperando el sistema y pareciera que se trabó, es porque se quedó esperando una entrada, pero quiere decir que ya están instalados y listos para usarse. Para regresar a la línea de comandos solo apretamos Ctrl + C.

En el siguiente post pasaremos a lo divertido… nuestra primera aplicación con Clasp y Gringo…

Composición de Música Trance usando Answer Sets Programming (ASP).

Saludos a todos y primero que nada regreso a la blogosfera con este post, nada mas y nada menos que mi propuesta de tesis… Estaré escribiendo en DigDes en español y proximamente en flavioeverardo.com en inglés… (ando trabajando todavía en el nuevo sitio).

Espero que les agrade…. y por cierto necesito un nombre para mi herramienta y aun no me he decidido… alguna propuesta?

Flavio Omar Everardo Pérez – Maestría en Ciencias de la Computación.

Asesor: Dr. Mauricio Javier Osorio Galindo

Co-Asesor: Dr. Fernando Antonio Aguilera Ramírez

Descripción:

El trabajo de investigación a realizar corresponde a un vínculo entre la computación como ciencia  y  la música como arte. La intención de esta tesis es diseñar e implementar una base musical, con la finalidad de poder reutilizar la misma en sesiones y grabaciones de estudio para diversos tipos de formatos de audio.

Tomando como fuente de inspiración las bases musicales de algunas canciones de género Trance ()en versiones extendidas con el sello discográfico que distingue a Armada Records (), mismo que contempla ciertas características esenciales, se propone desarrollar una herramienta provista de ciertas reglas y parámetros para realizar la toma de decisiones al momento de componer una pieza musical.

El objetivo general  corresponde al  diseño e implementación de una plantilla personal (canción en formato de audio) inspirada en la base musical de género Trance (en sus versiones extendidas) de Armada Records, utilizando Answer Sets Programming (ASP) mismo que se emplea en los sistemas de composición musical de ANTON [Boenn et al. 2008].

Herramientas a utilizar:

  • Answer Sets Programming (ASP) es un paradigma de programación que facilita una gamma de respuestas para atender a distintos propósitos, en este caso la composición de música Trance.
  • CSound, es un paquete de software orientado a crear, editar, analizar y componer música y sonido. Está basado como su nombre lo indica en el lenguaje C, ésta herramienta es utilizada en las distintas versiones de ANTON.

Tabla 1. Comparativa entre ANTON y Propuesta de Trabajo

ANTON Propuesta de Trabajo
Herramienta para composición musical en estilo “Palestrina Rules” for Renaissance music. Herramienta para composición musical en estilo Trance, específicamente para versiones extendidas.
Empleo de ASP como motor de lógica para ajustarse a las reglas de dicho estilo musical. Empleo de ASP como motor de lógica para ajustarse a las reglas de dicho estilo musical.
Empleo de CSound como sintetizador musical. Empleo de CSound como sintetizador musical con la diferencia en los instrumentos, efectos, sonidos… empleados.

Referencias:

Boenn, G., Brain, M., Vos, M., and Ffitch, J. 2009. ANTON: Composing Logic and Logic Composing. In Proceedings of the 10th international Conference on Logic Programming and Nonmonotonic Reasoning (Potsdam, Germany, September 14 – 18, 2009). E. Erdem, F. Lin, and T. Schaub, Eds. Lecture Notes In Artificial Intelligence, vol. 5753. Springer-Verlag, Berlin, Heidelberg, 542-547. DOI= http://dx.doi.org/10.1007/978-3-642-04238-6_55

Boenn, G., Brain, M., Vos, M., and Ffitch, J. 2008. Anton: Answer Set Programming in the Service of Music. In Proceedings of the Twelfth International Workshop on

Non-Monotonic Reasoning (Sydney, Australia, September 13 – 15, 2008). 85-93 http://www.cse.unsw.edu.au/~kr2008/NMR2008/nmr08.pdf

Boenn, G., Brain, M., Vos, M., and Ffitch, J. 2008. Automatic Composition of Melodic and Harmonic Music by Answer Set Programming. In Lecture Notes in Computer Science, 2008, Volume 5366/2008, 160-174, DOI: 10.1007/978-3-540-89982-2_21

http://www.springerlink.com/content/rj422j5831w0278m/

Boenn, G., Brain, M., Vos, M., and Ffitch, J. 2008. Automatic Composition of Melodic and Harmonic Music by Answer Set Programming. In Proceedings of the 24th international Conference on Logic Programming (Udine, Italy, December 09 – 13, 2008). M. Garcia De La Banda and E. Pontelli, Eds. Lecture Notes In Computer Science, vol. 5366. Springer-Verlag, Berlin, Heidelberg, 160-174. DOI= http://dx.doi.org/10.1007/978-3-540-89982-2_21

Corrêa, D. C., Levada, A. L., Saito, J. H., and Mari, J. F. 2008. Neural network based systems for computer-aided musical composition: supervised x unsupervised learning. In Proceedings of the 2008 ACM Symposium on Applied Computing(Fortaleza, Ceara, Brazil, March 16 – 20, 2008). SAC ’08. ACM, New York, NY, 1738-1742. DOI= http://doi.acm.org/10.1145/1363686.1364101

Kirke, A. and Miranda, E. R. 2009. A survey of computer systems for expressive music performance. ACM Comput. Surv.42, 1 (Dec. 2009), 1-41. DOI= http://doi.acm.org/10.1145/1592451.1592454

Roads, C. 1985. Research in music and artificial intelligence. ACM Comput. Surv. 17, 2 (Jun. 1985), 163-190. DOI= http://doi.acm.org/10.1145/4468.4469

Roads, C., Strawn, J., Abbott, C., Gordon, J., and Greenspun, P. 1996 The Computer Music Tutorial. MIT Press.

Rousseaux, F. and Bonardi, A. 2003. New tools and practices for electronic music distribution. In Proceedings of the 1st international Symposium on information and Communication Technologies (Dublin, Ireland, September 24 – 26, 2003). ACM International Conference Proceeding Series, vol. 49. Trinity College Dublin, 242-248.

Boulanger, R. (ed.): The Csound Book: Perspectives in Software Synthesis, Sound Design, Signal Processing and Programming.

MIT Press, Cambridge (2000)

La urgente necesidad de transformar nuestra educación universitaria – parte II (via Juan P. Duran’s Blog)

Un post bastante interesante que me hace pensar sobre mi presente y por supuesto mi futuro como profesionista…

En la parte anterior de esta nota se mencionaba uno de los principales problemas de la educación. En esta sección se aborda un segundo problema, probablemente con mayor impacto que el anterior porque aqueja a toda la población universitaria: la obsolescencia de sus estudios. En este sentido, desafortunadamente los problemas no terminan una vez que el estudiante ingresa a la universidad. Ahora se enfrenta con la dura realidad de que su plan de est … Read More

via Juan P. Duran's Blog

Back soon…

Así es mi proposito de este mes es volver  a escribir al blog, y en esta ocasión creo que será con pequeños tutoriales de Objective-C , así que esten pendientes,

Saludos

SurferMx

BuzzWear: Alert Perception in Wearable Tactile Displays on the Wrist

The article that I read was named BuzzWear: Alert Perception in Wearable Tactile Displays on the Wrist and it’s about two experiments with the interaction with a WTD (Wearable Tactile Display) and a mobile phone.

The first experiment wants to probe or see the ability of the people to identify patterns of incoming tactile stimuli on the wrist.

The second experiment wants to explore the benefits of a WTD in visually distracted conditions. The main hypothesis is that WTD are less affected by the distraction than the phone.

Finally I’m showing the summary of the full article.

Sigue leyendo

Paradigmas y estilos de interacción

Daniel Valderrábano Ceja

ID 131236

Identificar estilos y paradigmas de interacción existentes

Considerar los siguientes escenarios:

A) Un cliente de un banco que consulta saldos y realiza transferencias vía telefónica

En este escenario se usaría un sistema capaz de reconocer la voz del cliente y mediante, una serie de pasos y requisitos el cliente se autenticaría y con esto podría verificar el saldo de su cuenta y realizar transferencias, por lo cual se puede concluir que se utilizaría un paradigma del tipo autómata, ya que se tendría un sistema de voz.

Los pasos a seguir por el cliente serían los siguientes:

  1. Llamar al número telefónico del banco
  2. Decir su número de cliente
  3. Decir su NIP
  4. Decir que se desea “consultar el saldo”
  5. (Si se desea realizar la transferencia)
  6. Decir que se desea “realizar transferencia”
  7. Decir el número de cuenta destino “dígitos”
  8. Decir el “NIP” para confirmar la transferencia

Esos serían los pasos que permitirían a un usuario mediante un teléfono realizar una consulta y transferencia en un banco. El usar un sistema de reconocimiento de voz facilitaría a un usuario con capacidades limitadas visuales facilitar el uso de este servicio

B) Una visita guiada a un museo de arte utilizando un dispositivo móvil

En este escenario se utilizaría un sistema en el cual se presentarían o se verían las diferentes obras de arte en la pantalla del dispositivo móvil, el cual estaría conectado de manera inalámbrica a una red local del museo; lo cual le permitiría entrar a una aplicación web para el dispositivo móvil, la cual le proporcionaría saber sobre alguna obra introduciendo el ID de la misma, así mismo el sistema trazaría una ruta en relación con la obra de arte introducida primeramente. Con las características antes presentadas el paradigma ocupado sería el de las computadoras como medio, ya que nos serviría como una manera fácil de representar y usar el conocimiento.

Los pasos a seguir serían los siguientes:

  1. Conectarse a la red del museo
  2. Acceder a la aplicación web del museo
  3. Introducir el ID de la obra de arte en la que se encuentra para generar la ruta
  4. Seguir por el museo según la ruta
  5. Confirmar si ya se está en la siguiente obra para que se dé la información sobre la misma

El uso de este sistema garantizaría que la ruta variaría y no tendría que empezar siempre de la misma manera lo cual podría hacer que no se aglomeraran las personas en un solo lugar.

C) Un equipo de desarrollo de software que se reúne semanalmente para discutir aspectos técnicos, revisar código y evaluar interfaces de usuario

La forma en que se realizaría es primeramente hacer un pase de lista de los usuarios que están conectados, posteriormente checar los avances y/o pendientes que tiene cada uno, revisar el código de cada uno de ellos y con base en esto verificar si cumple con los aspectos técnicos de la aplicación deseada, posteriormente evaluar las interfaces para finalmente terminar la reunión. En este caso el paradigma sería el de Groupware donde la computadora se usa como lugar de reunión o canal de comunicación.

Los pasos a seguir son:

  1. Conectarse a la aplicación para conectarse con el resto
  2. Mostrar avances y/o pendientes
  3. Verificar que cumpla con los aspectos técnicos
  4. Evaluar la interfaz del usuario
  5. Realizar la tarea con cada uno de los miembros que tenga código que mostrar

Estos pasos ayudarían a verificar el avance real y que todos vieran tanto los errores como aciertos de los involucrados para evitar que los repitan.

Referencias

Shneiderman, B. 1991. A taxonomy and rule base for the selection of interaction styles. InReadings in Human-Computer Interaction: Towards the Year 2000, edited by Baecker, Grudin, Buxton, and Greenberg. Morgan Kaufmann. pp. 401-410. (disponible en reserva digital)

Sánchez, J. A. 2004.  Paradigmas y estilos de interacción. Notas para el curso de Interacción Humano-Computadora. Universidad de las Américas Puebla (Disponible digitalmente).