Programación de computadores y creatividad
Artículos
DOI: 10.32012/26195259/2018.v1i2.44

Programación de computadores y creatividad

Fundación Universidad Autónoma de Colombia
Bio
ingeniería creatividad programación compiladores

Resumen

Para aprender de manera autónoma y autentica en un espacio académico de un programa académico en una modalidad presencial como distancia se requiere ser creativo ¿Por qué entonces no considerar creativo al docente que orienta los espacios académicos en modalidad presencial como distancia? Pese a ser Ingeniero de Sistemas ante la docencia debo comportarme con características de persona creativa en la transmisión, formulación de objetos de conocimiento (Parra, Diciembre 2010), de formación y de estudio de espacios académicos en modalidad presencial como distancia, a fin de ser eficaz, de percibir las necesidades de estudiantes y conocer aquello por lo cual se sienten motivados y capacitados para aprender. En este artículo, se establece una mirada del autor con respecto a la creatividad en su quehacer académico.

Inicialmente se contextualiza con referentes de Ingeniería como de creatividad, posteriormente,  se desarrollan los intentos  de creatividad como de ingeniería en espacios académicos cuyo objeto de estudio estaba orientado a la lógica y algoritmos de programación, lenguajes de programación y compiladores.

Introducción

En la actualidad existe dificultad para definir los sistemas de control inteligentes, debido precisamente a las diversas connotaciones que plantea la palabra inteligencia [1]: ‘‘Es de común consenso que para que un sistema actúe como un sistema inteligente debe emular las funciones de las criaturas vivas en cuanto a algunas de sus facultades mentales. Al menos, la inteligencia requiere la habilidad de percibir (agente) y adaptarse al entorno (aprendizaje), tomar decisiones y realizar acciones de control’’. En este sentido, cabe precisar que las redes neuronales artificiales (RNA) son sistemas compuestos por varios elementos de procesamiento (neuronas), cuya función principal es determinar la estructura de la red y conexiones entre nodos. Las RNA tienen la particularidad del aprendizaje mediante entrenamiento.Las RNA están inspiradas en modelos biológicos, pero también pueden interpretarse como un modelo matemático compuesto por un gran número de elementos procesales organizados en niveles (capas). En cada nivel existen interconexiones asociados a un peso (pesos sinápticos), que representa la información utilizada por las neuronas para resolver un problema específico [2].

Figure 1.Elementos de una red neuronalartificialElaborado Por el Autor

Los elementos básicos de una red neuronal artificial son las neuronas de entrada (capa de entrada), las neuronas de salida (capa de salida), las neuronas intermedias (capas ocultas) y el conjunto de conexiones o pesos sinápticos entre las neuronas.Las redes Feedfoward solo tienen conexiones hacia adelante y unidireccionales, suelen distinguirse porque los nodos son los elementos básicos de procesamiento y porque la arquitectura de la red esta descrita por las conexiones ponderadas entre los nodos, que pueden ser monocapa o multicapa según la necesidad del diseñador.[3]

Las redes monocapa solo tienen una capa de neuronas, correspondiente a la red neuronal más sencilla, ya que proyectan las entradas a una capa de neuronas de salida, donde se realizan los diferentes cálculos. Por su parte, las redes multicapa comprenden una generalización de las redes monocapa, pero también existe un conjunto de capas intermedias entre la entrada y salida (capas ocultas). Este tipo de red puede estar total o parcialmente conectada[4].

Antecedentes

Red neuronal artificial

Alan Turing, en 1936, fue el primero en estudiar el cerebro como una forma de ver el mundo de la computación. Sin embargo, los primerosteóricos que concibieron los fundamentos de la computación neuronal fueron WARREN McCulloch, un neurofisiólogo, y Walter Pitts, un matemático. En 1943, estos últimos elaboraron una teoría acerca de la forma en que trabajan de las neuronas. Luego, en 1949, Donald Hebb explicó por primera vez los procesos del aprendizaje (elemento básico de la inteligencia humana) desde un punto de vista psicológico.Aun hoy, este es el fundamento de la mayoría de las funciones de aprendizaje que pueden hallarse en una red neuronal.

En la década del 50, muchos investigadores participaron en la búsqueda de nuevas teorías acerca de las redes neuronales. En sus series de ensayos, Karl Lashley encontró que la información no se almacena en el cerebro en formacentralizada, sino que se distribuye encimade él. Mientras que, en 1956, en el Congreso de Dartmouth surgió la llamada Inteligencia Artificial (IA). Bernard Widroff y Marcian Hoff desarrollaron en 1960 el modelo Adaline (ADAptative LINear Elements). Esta fue la primera red neuronal aplicada a un problema real (filtros adaptativos para eliminar ecos en las líneas telefónicas), que se ha utilizado comercialmente durante varias décadas.

En 1977, Stephen Grossbergy presentó su Teoría de Resonancia Adaptada (TRA). Esta teoría es una arquitectura de red que se diferencia de todas las demás previamente inventadas por simular otras habilidades del cerebro: memoria a largo y corto plazo. Y en 1985, John Hopfield propició el renacimiento de las redes neuronales con su libro Computación neuronal de decisiones en problemas de optimización. Por otra parte, en 1986, David Rumelhart y G. Hinton redescubrieron el algoritmo de aprendizaje de propagación hacia atrás (backpropagation). A partir de este año, el panorama fue alentador con respecto a las investigaciones y el desarrollo de las redes neuronales. En la actualidad, se realizan y publican numerosos trabajos sobre las aplicaciones nuevas que surgen (sobre todo en el área de control).

Dispositivos lógicos programables

Los Programmable Logic Device (PLD’s) son circuitos integrados en los que se pueden programar ecuaciones lógicas Booleanas, tanto combinacionales como secuénciales. Están formados por una matriz de puertas AND conectada a otra matriz de puertas OR más biestables. Cualquier circuito lógico se puede implementar, por tanto, como sumade productos [5].

Las FPGA, introducidas por Xilinx en 1985, también se denominan Arreglos de Celdas Lógicas (LCA), y consisten en una matriz bidimensional de bloques configurables que se conectan mediante recursos generales de interconexión. Estos recursos incluyen segmentos de pista de diferentes longitudes, más unos conmutadores programables para enlazar bloques a pistas o pistas entre sí. En realidad, lo que se programa en una FPGA son los conmutadores que sirven para realizar las conexiones entre los diferentes bloques, más la configuración de los bloques. Además, tienen la ventaja de ser reprogramables, lo que aumenta una enorme flexibilidad al flujo de diseño; así, los circuitos se ejecutan más rápido que en otros dispositivos ya que su ejecución es en paralelo, por lo que no necesitan competir por los mismos recursos. Cada tarea de procesos se asigna a una sección específica del dispositivo y puede ejecutarse de manera autónoma sin ser afectada por otros bloques de lógica.

Péndulo Invertido

El péndulo invertido es un sistema mecánico clásico para probar nuevas ideas en la disciplina del control. Es uno de los ejemplos más conocidos de sistemas a estabilizar, por ende, ha sido motivo de muchos estudios. Si bien existen variantes en la aplicación, en esta investigación, basada en la estabilización del péndulo sobre vehículo de dos ruedas independientes, es también llamado vehículo auto balanceado, pues consiste en un móvil que integra una red inteligente de sensores, ensamblajes mecánicos y un sistema de control que le permite desplazarse manteniendo su estabilidad, teniendo dos ruedas como punto de apoyo.

Modelo matemático

Es una de las herramientas más interesan­tes de que actualmente se dispone para analizar y representar un proceso. Este modelo es de gran ayuda para la toma de decisiones, ya que sus resultados son inte­ligibles y útiles [6].

Para iniciar el modelamiento matemáti­co, se debe partir del modelado físico del sistema, así como conocer los sensores, los actuadores y sus características. Los pará­metros físicos del sistema se muestran en la Table 1.

SÍMBOLO DESCRIPCIÓN
N Fuerza normal de reacción del carro sobre el péndulo, en la unión entre ambos
-N F uerza normal de reacción del péndulo sobre el carro (ley de acción y reacción )
Nc Fuerza normal de la superficie sobre el carro F Fuerza aplicada para mover el carro
Ff Fuerza de fricción entre el carro y las uperficie d e desplazamiento
Gc Fuerza de gravedad sobre el carro
Gp Fuerza de la gravedad sobre el péndulo
0 Angulo de desviación del péndulo respecto a la posición de equilibrio
w Velocidad angular del péndulo
c Aceleración Angular Del Péndulo
Mc Masa del carro
Mp Masa del péndulo
ac Aceleración lineal del carro
ap Aceleración lineal del péndulo
L Distancia desde la unión entre el carro y el péndulo
g Aceleración gravitatoria
µc Coeficiente de fricción entre la superficie y el carro
µc Coeficiente de fricción entre la articulación que une al carro y péndulo
I Momento de inercia del péndulo relativo a la articulación
M Sumatoria de los pares no inerciales que actúan en el péndulo, respecto a la articulación de unión.
Table 1. Tabla 1. Fuerzas y parámetros del sistemaElaboracion Propia

A continuación, se describe el proceso de obtención de las ecuaciones de movimiento del sistema.

Aplicando la segunda ley de newton al movimiento lineal del carro, se tiene que:

(1) Las fuerzas y la aceleración de la ecuación 1, se descomponen en sus términos correspondientes en eje ´´x´´ y en eje ´´y´´. Teniendo en cuenta que ux y uy son los vectores unitarios.

RNA Para el Control de Equilibrio del Péndulo Invertido

Como ya se advirtió, las redes neuro­nales consisten en una simulación de las propiedades observadas en los sistemas neuronales biológicos, a tra­vés de modelos matemáticos recreados mediante mecanismos artificiales [7] Para verificar el comportamiento de las RNAs implementadas en FPGAs, se tomó la aplicación del péndulo invertido. Aun­que este sistema ha sido objeto de estudio en muchas investigaciones, sigue siendo hoy en día el principio de muchos proce­sos industriales, que comprenden desde la simulación del vuelo de una aeronave hasta los robots bípedos [8]. Matlab cuenta con una caja de herra­mientas (Neural Network Toolboox) que permite diseñar RNA´s. Cuando se crea una RNA en Matlab, las capas generadas incluyen la combinación de pesos, amén de la operación de multiplicación y suma, así como de operaciones especiales como mapeo de entrada y salida de la RNA.

Antes de crear la red neuronal, se deben tener en cuenta los siguientes parámetros

Número de capas ocultas

Las capas ocultas dan a la red la habilidad de generalizar. Las redes neuronales con una ó dos capas ocultas son las más uti­lizadas en la práctica, teniendo un buen desempeño. El incremento en el número de capas también incrementa el tiempo de procesamiento y el peligro de sobreajuste, lo que conduce a un pobre desempeño en la predicción fuera de muestra. El sobrea­juste ocurre cuando un modelo de predic­ción tiene muy pocos grados de libertad. En otras palabras, se tienen relativamente pocas observaciones en relación con sus parámetros y, por lo tanto, puede memori­zar datos individuales en lugar de apren­der patrones generales. Por esta razón, se recomienda que todas las redes neurona­les comiencen de preferencia con una o a lo mucho dos capas [9].

Número de neuronas ocultas

No existen reglas generales o teorías para determinar el número de neuronas en la capa oculta, aunque sí sugieren algunas recomendaciones.

La red debe tener una topología pirami­dal, esto es, debe tener el mayor número de neuronas en la capa de entrada y me­nos en las posteriores [10]. Se recomienda que el número de neuronas en cada se ha­lle más o menos entre la mitad de la capa siguiente y el doble de la capa anterior.

Lo recomendable es probar con un nú­mero pequeño de neuronas ocultas y solo incrementarlo gradualmente si la red neu­ronal parece no aprender. De esta forma se puede reducir el problema del sobreajuste al existir más pesos (parámetros) que muestras de datos, r. Este es el método a emplear para determinar el número de neuronas en la capa oculta de la red, aunque la utilización de redes más grandesayuda a reducir tanto el error de entrenamiento como el de generalización.

Número de neuronas de salida

Decidir el número de neuronas de salida es algo más sencillo porque hay muchas razones para emplear una sola neuro­na. Por ejemplo, las redes neuronales con múltiples salidas, especialmente si tales salidas están ampliamente espaciadas, producen resultados inferiores en compa­ración con una red de una única salida. Lo recomendable al respecto es tener una red especializada para cada una de las salidas deseadas en cada predicción.

Funciones de transferencia

Siempre es recomendable estudiar los his­togramas de las variables escaladas de entrada y salida, de manera que se pue­da identificar la necesidad de realizar un escalamiento que produzca una distribu­ción uniforme y emplear, así, de manera eficiente, el número de neuronas disponi­bles.

se puede reducir el problema del sobre­ajuste al existir más pesos (parámetros) que muestras de datos, r. Este es el método a emplear para determinar el número de neuronas en la capa oculta de la red, aun­que la utilización de redes más grandes ayuda a reducir tanto el error de entrena­miento como el de generalización.

red muy utilizada en sistemas digitales por su eficiencia y simplicidad. La topología de red neuronal creada en NNTool es la propuesta en la Figure 2.

Figure 2.Topología de la RNA seleccionadaElaboracion Propia

Entrenamiento de la red

Entrenar una red neuronal para apren­der patrones involucra presentar ejemplos de las respuestas correctas de manera iterativa. El objetivo del entrenamiento es encontrar un conjunto de pesos entre las neuronas que determinan el mínimo global de la función de error [11]. A me­nos que el modelo esté sobreajustado, el conjunto de pesos debería proporcionar una buena generalización. Un término de momento y de cinco a diez conjuntos alea­torios de pesos iniciales, pueden mejorar las oportunidades de alcanzar un mínimo global.

El entrenamiento converge de una mane­ra muy rápida, alcanzando un porcentaje de error con tendencia a 0, lo cual indica que todas las entradas fueron correcta­mente clasificadas.

Figure 3.Figura3. Curva característica del error en la RNAElaboracion Propia

El diagrama de bloques de simulink, generado en NNTool, se puede observar en la Figure 4

Figure 4.Figura 4. Diagrama de bloques de la RNA exportada en simulinkElaboracion Propia

Desarrollo del Modelo en xsg de la RNA

La estructura de red neuronal mos­trada en la Figure 3 se implemen­ta en XSG por medio de bloques sumadores, multiplicadores, bloques de ganancia, constantes y bloques MCode. Estos últimos se utilizan para desarrollar la función de transferencia de activación, como se muestra en las Figures 5‒6, que representan la implementación de una sola neurona de la capa inicial y la neuro­na de la capa de salida, respectivamente. Cada una de las entradas es multiplicada por el peso calculado en el entrenamiento y una vez realizada la suma, se adiciona el valor de Bias y se le aplica la función de transferencia para obtener finalmente la salida de la RNA.

Figure 5.Diagrama de bloques de unaneurona (capa inicial)Elaboracion Propia

Figure 6.Diagrama de bloques neuronafinal (capa de salida)Elaboracion Propia

Los parámetros de configuración de es­tos bloques permiten obtener un funcio­namiento óptimo sin problemas de so­bre-flujo o saturación, con la consecuencia de un mayor consumo de recursos de la FPGA [12]. Si en un diseño no se tienen limitaciones en recursos, resulta práctico utilizar esta opción, debido a que aho­rra tiempo durante la puesta en marcha del diseño cuando se tienen un número grande de estos elementos. Pero si, por el contrario, el ahorro de recursos es funda­mental o los recursos disponibles son li­mitados, se debe seleccionar debidamente el tipo de salida, especificando el nume­ro de bits, la posición del punto binario, el tipo de cuantización y el tipo de sobre flujo, que permitan representar correcta­mente las cantidades.

Figure 7.Modelo en XSG de la red neuronalElaboracion Propia

El diagrama mostrado en la figura ante­rior representa el bloque completo gene­rado en el software system generator. Se debe tener en cuenta que XSG genera el tipo de archivo necesario para exportar la rutina de control a XiIinx ISE. El tipo de archivo es .bit, y una vez obtenido se pue­de implementar la rutina de control en la FPGA a utilizar.

Se deben incluir las características propias de la FPGA donde se desea generar la compilación. Asimismo, se debe seleccionar el lenguaje de descripción de la rutina a compilar, la dirección donde se desea guardar y el tipo de compilación. Para el caso particular de una FPGA, el archivo .bit representa la opción de Bitstream. Una vez configurado, el software se encarga de finalizar la tarea, mediante la síntesis propia.

Conclusiones

La implementación de redes neu­ronales artificiales en dispositivos lógicos programables permite el desarrollo de sistemas de control en tiem­po real para un sistema de equilibrio, asu­miendo las no linealidades presentes en el modelo del péndulo, ya que la arquitectu­ra física de los dispositivos presentes en la tarjeta de desarrollo Nexys 2 brinda la posibilidad de implementar sistemas de control inteligente.

No existen métodos establecidos para el diseño de una RNA; por tanto, en este trabajo el criterio utilizado fue la expe­riencia adquirida y las investigaciones de otros autores, permitiendo por medio de la práctica de ensayo y error la adecuación de la red que mejor se ajustara a la solu­ción del problema.

Se utilizó un sistema de desarrollo Nexys 2, implementándose la rutina de control inteligente. En la recepción y transmisión de información para y desde la RNA es­tablecida, también fueron utilizados los puertos pmod de la misma, adecuándose la recepción de información mediante el protocolo de comunicación I2c, caracterís­tico del sensor de medida inercial MPU 6050.

sistema de equilibrio, fue necesario utili­zar herramientas como: NNTool para la selección de topología de red, Simulink para el desarrollo del sistema mediante diagramas de bloques y, finalmente, XiI­inx system generator, para transportar la rutina de control inteligente desarrollada y llevarla a lenguaje VHDL característico del sistema de desarrollo Nexys 2. Todas estas pertenecientes al software Matlab 2012.

La implementación de la estrategia de control se realizó por medio de XSG en la Nexys 2. Esta herramienta brinda la posibilidad de programar mediante dia­gramas de bloques, evitándose así las ex­tensas y complejas líneas de códigos que resultarían del desarrollo de la rutina de control por medio de códigos VHDL, pro­

References

  1. Santos M. Un enfoque aplicado del control inteligente”. Revista Iberoamericana de Automática e Informática industrial. 2011; 8:283-296.
  2. Matich D. Redes neuronales: conceptos básicos y aplicaciones. Argentina. Universidad Tecnológica Nacional. Grupo de investigación aplicada a la ingeniería química (GIAIQ). Rosario. 2011.
  3. vega H. Tesis doctoral Redes neuronalespara el reconocimiento de la calidadmorfológica de mangos exportablespara la empresa Biofruit del Perú S.A.C.. 2011.
  4. Salas R. Redes neuronales artificiales.Universidad de Valparaíso.. Departamento de computación,. 2010.
  5. Medina J, Ferreira J, Gualdron O. Redesneuronales recurrentes en dispositivoslógicos programables para el control de desplazamiento de un robot móvil. Revista Colombiana de Tecnologías de Avanzada. 2009; 1
  6. Ramos A. Modelos matemáticos deoptimización. Universidad pontificia deMadrid. Escuela técnica superior de ingeniería. 2010.
  7. Nacelle A. Las redes neuronales: de la biología a los algoritmos de clasificación. Universidad de la república. Montevideo.Uruguay:. Núcleo de ingeniería biomédica,. 2009.
  8. National Instruments. Introducción a la tecnología fpga: los cinco beneficios principales, 2004. Disponible:. Internet. 2004.
  9. Valencia M, Sanchez. L, Cornelio Y. Algoritmo Backpropagation para RedesNeuronales: conceptos y aplicaciones.México DF. Instituto politécnico nacional centro de investigación en computación. 2006.
  10. Hernández, A, Legaspi M, Pelaez. J. Control inteligente del péndulo invertido.Madrid. Universidad Complutense de Madrid. 2012.
  11. Melo D, Molina R. Desarrollo de unsistema de control de equilibrio para unmóvil con dos ruedas de apoyo ubicadaslateralmente ‘’Robox 1.0’’.. Universidad Pedagógica Nacional- Bogotá D.C.,. 2011.
  12. Medina J. Metodología para la implementaciónde redes neuronales en dispositivoslógicos programables aplicadas en el control de desplazamiento de un robotmóvil. Universidad de Pamplona. Departamento de maestría y doctorados,. 2009.