Vous êtes sur la page 1sur 120

ESTUDIOS CON RECONOCIMIENTO DE VALIDEZ OFICIAL DE LA

SECRETARIA DE EDUCACION PUBLICA SEGUN ACUERDO Nº 942174 DEL


31 DE OCTUBRE DE 1994.

Lógica dependiente del tiempo y elementos neuronales


de procesamiento.

TESIS

QUE PARA OBTENER EL TITULO DE

INGENIERO EN COMPUTACION

PRESENTA

Eugenio Jacobo Hernández Valdelamar

ASESOR: José Luis Pérez Silva.

México D.F. 1997.


Lógica dependiente del tiempo y elementos neuronales de procesamiento.

Eugenio Jacobo Hernández Valdelamar

http://creativecommons.org/licenses/by-nc-nd/2.5/mx/legalcode

http://codink.blogspot.com

ii
Contenido.

Introducción.

Capítulo 1. Lógica.

1.1 Introducción.
1.2 Lógica simbólica.
1.2.1 Argumentos, proposiciones y relaciones.
1.2.2 Validez.
1.2.3 Reglas de inferencia y demostraciones.
1.2.4 Estructura de los sistemas lógicos.
1.3 Teorías informales y sistemas formales.
1.3.1 Teorías axiomáticas e informales.
1.3.2 Sistemas formales.
1.4 El cálculo proposicional.
1.4.1 Definición de símbolos y operadores.
1.4.2 Reglas sintácticas.
1.4.3 Axiomas y reglas de inferencia.
1.5 Comentarios.

Capítulo 2. Lógica dependiente del tiempo.

2.1 Introducción.
2.2 Definiendo las características del tiempo.
2.3 Relacionando la lógica y el tiempo.
2.4 Definición de la LDT.
2.4.1 Simbología y operadores.
2.4.2 Características de los argumentos de la LDT.
2.5 Comentarios.

Capítulo 3. Lógica dependiente del tiempo y elementos de


procesamiento neuronal.

3.1 Introducción.
3.2 Teoría de las neuronas artificiales.
3.2.1 La neurona biológica.
3.2.2 La neurona artificial.
3.3 Uso de neuronas artificiales para la LDT.
3.4 Representación de la lógica proposicional y la LDT con redes neuronales.

iii
3.4.1 Representación de los operadores de la lógica proposicional.
3.4.2 Representación de los operadores de la LDT.
3.5 Representación de procesos simples en el tiempo.
3.5.1 Configuraciones en serie y paralelo de neuronas.
3.5.2 Representación de la autosinápsis.
3.5.3. Uso de señales como valores de entrada en las neuronas.
3.6 Consideraciones para el uso de neuronas artificiales en el diseño de sistemas.
3.7 Comentarios.

Capítulo 4. Diseño y simulación de sistemas dependientes del


tiempo.

4.1 Introducción
4.2 Simulación de redes neuronales dependientes del tiempo.
4.2.1 Análisis y Diseño.
4.3 Sumador de dos bits.
4.4 Codificación y decodificación de datos.
4.5 Elementos de memoria.
4.6 Control de eventos.
4.7 Comentarios.

Capítulo 5. Conclusiones y Perspectivas.

5.1 Introducción.
5.2 Resultados.
5.3 Aplicaciones.
5.4 Perspectivas.

Referencias bibliográficas.

Glosario.

Apéndice A.
Documentación y código fuente del simulador.

iv
Agradecimientos.

A mi padre Jacobo Hernández Morales y a mi madre Ma. Guadalupe Valdelamar


por su apoyo y mi educación.
A José Luis Pérez Silva y al Centro de Instrumentos de la UNAM.
A Beatriz Hernández y Jorge Vasconselos por sus comentarios.
A Alejandro Ramírez por sus opiniones.
A Alejandro Domínguez por sus sugerencias.
A Jaime Lagunes y Miguel Armas por su interés en este trabajo.
A Hugo Gutiérrez, Francisco Otero y Antonio Martínez por su amistad.
A Violeta Moisen por mantenerme vivo.

Y a toda la gente que tuvo la preocupación de que terminara este trabajo.

v
Introducción.
“Que no parezca que he vivido en vano".

Tycho Brahe.

A solo unos años de iniciar un nuevo siglo, la ciencia ocupa un lugar muy
importante en la vida del hombre, aunque la gran cantidad de información
generada por todas sus disciplinas, hace difícil estar actualizado en las áreas de
vanguardia que, en pocos años, serán de vital importancia en la industria, la
educación y el desarrollo tecnológico. Y no solo se trata de los trabajos de los
últimos meses, sino de trabajos que han sido relegados por no considerarse útiles
en su momento, o han sido simplemente olvidados.

De hecho, este trabajo trata de rescatar las ideas de algunos de los


investigadores contemporáneos más importantes como Norbert Wiener, Warren
McCulloch, Arturo Rosenblueth y Walter Pitts, en relación a la teoría de neuronas
artificiales (llamadas en este trabajo elementos neuronales de procesamiento, por
ser consideradas como unidades de procesamiento independientes), en
combinación con el planteamiento de una lógica temporal elaborado por Alejandro
Medina.

Proponer la fusión de estos conocimientos, no es sólo un ejercicio sin sentido, si


se toma en cuenta el creciente interés en la tecnología de redes neuronales por
parte de diversas áreas de la ciencia en los últimos años, además de la posibilidad
de que este enfoque se convierta en la pieza fundamental de la arquitectura de las
computadoras de las próximas generaciones.

La idea de la aplicación de la lógica y las matemáticas a la descripción de los


modelos de organización del sistema nervioso central es de John Von Neumann,
aunque los primeros modelos lógicos fueron los de McCulloch y Pitts. Sin embargo
la lógica simbólica no es suficiente para el análisis de un sistema que por
naturaleza depende del tiempo. En este sentido la propuesta de Medina (aunque
no es la única de su tipo) es de gran utilidad, pues su lógica temporal en realidad
es relativamente muy simple.

La propuesta de este trabajo tiene tres objetivos principales:

1. Replantear la lógica dependiente del tiempo (LDT) como un sistema formal.

vi
Proponer un orden será necesario a causa de que la teoría original de la LDT no
está definida bajo una estructura formal.

Para ello es necesario explicar los conceptos relacionados a la lógica simbólica, y


en particular al cálculo proposicional (lo cual proporcionará el marco teórico de
este trabajo). Hecho lo anterior se estructurarán las principales ideas en torno al
tiempo y la forma en que este puede ser relacionado con la lógica, para plantear
un sistema lógico formal por medio del cual, puedan representarse de manera
simbólica la estructura y los estados de un sistema dinámico. Cabe mencionar que
al referirse a la LDT se estará hablando de un cálculo proposicional dependiente
del tiempo.

2. Aplicar la LDT a la descripción del comportamiento de las neuronas artificiales.

Para ello se hace necesario conocer el funcionamiento de los elementos que se


pretende describir, por lo que se expone de manera breve la teoría sobre
neuronas artificiales, para luego tomar un caso particular de estos elementos
basado en el modelo McCulloch-Pitts, y con él, exponer los equivalentes
neuronales de los operadores de la LDT, así como otros casos relevantes.

3. Plantear la posibilidad y factibilidad del diseño de sistemas digitales por medio


de neuronas artificiales y la LDT.

La aplicación de la LDT y los elementos de procesamiento neuronal, al diseño e


implementación de sistemas digitales es factible, si se obtienen elementos
equivalentes a los de la electrónica digital, por lo que se expondrán algunos casos
de sistemas digitales, donde la combinación de técnicas de diseño
convencionales.

La investigación de las características de las redes neuronales por medio de esta


metodología, brindaría resultados cualitativos importantes sobre todo en redes
cuyos resultados no pueden ser obtenidos por algoritmos convencionales, así
como tener la posibilidad real de manipular neuronas con fines específicos. Lo
anterior justifica la trascendencia de este trabajo y los desarrollos posteriores que
puedan realizarse con base en él, aunque tal vez la principal aportación sea
motivar el desarrollo de nuevas ideas en relación a temas de vanguardia, así como
proponer una metodología alternativa con capacidades de paralelismo que vale la
pena tomar en cuenta para el desarrollo de sistemas de control o procesamiento
de información.

Las principales áreas con las que se relaciona este trabajo son:

• Lógica.
• Redes neuronales.
• Electrónica digital.

vii
• Análisis y diseño de programas.

Como parte de los resultados obtenidos se presenta el análisis y el diseño un


sistema para la simulación de redes neuronales en el tiempo, como justificación de
la teoría expuesta.

A continuación se ofrece una descripción de la organización y el contenido de


este trabajo.

1. Lógica.

El objetivo de este capítulo es el de plantear el marco teórico para el desarrollo de


un sistema lógico, en específico del cálculo proposicional. Esto a manera dar una
idea sobre lo que implica la definición de un sistema de lógica, lo cual será
aprovechado en adelante.

2. Lógica dependiente del tiempo.

En este capítulo se plantea la idea de un sistema de lógica temporal exponiendo


algunos antecedentes y trabajos recientes relacionados, y tomando como base el
trabajo de Alejandro Medina se exponen los principales puntos de esta teoría, así
como su relación con elementos de procesamiento neuronal.

3. Lógica dependiente del tiempo y elementos de procesamiento neuronal.

Aquí se describen los principios de la tecnología de redes neuronales y se


describe el modelo de neuronas que se utilizan en este trabajo. Además se
plantean una serie de técnicas para aplicar la LDT a la representación de redes
neuronales en el tiempo y algunos de los casos particulares más importantes.

4. Diseño y simulación de sistemas dependientes del tiempo.

Como parte de la justificación de las ideas expuestas, se exponen una serie de


ejemplos de sistemas que pueden tener un uso práctico. Así se toman como base
configuraciones cuyo diseño se basa en compuertas lógicas digitales y se
plantean sus equivalentes neuronales y las características y diferencias entre
ellos.

5. Conclusiones.

En este último capítulo se exponen y comentan las conclusiones obtenidas, así


como posibles aplicaciones y desarrollo posterior de la teoría expuesta.

Por último, cabe comentar que este es el primer trabajo sobre el tema de
neuronas artificiales en la licenciatura de la Fundación A. Rosenblueth, y resulta
irónico que haya sido así, cuando Arturo Rosenblueth fue uno de los pioneros a

viii
nivel mundial al respecto. Así mismo, el desarrollo de un trabajo teórico (casi en
su totalidad) a parte de servir como base para futuras investigaciones, deberá de
servir como incentivo a nuevas generaciones de estudiantes para correr el riesgo
de enfrentarse a un reto como es el asimilar nuevas ideas y conceptos abstractos,
para realizar planteamientos bajo formalismos que propiamente pertenecen al
área de las matemáticas, así como el de realizar trabajos innovadores y con
calidad.

ix
Capítulo 1.

Lógica.

"- ¿Quieres decirme, por favor, qué camino debo tomar para salir de aquí?
- Eso depende mucho de a dónde quieras ir -respondió el Gato.
- Poco me preocupa donde ir -dijo Alicia.
- Entonces poco importa el camino que tomes -replicó el Gato.
- Con tal de que conduzca a alguna parte -añadió Alicia como conclusión.
- ¡Oh! Puedes estar segura de que llegarás a alguna parte -dijo el Gato- si
caminas lo suficiente."

Alicia en el país de la maravillas.


Lewis Carroll.

1.1 Introducción.

Al definir una nueva teoría debe tomarse en cuenta que las verdades o axiomas
en las que este sustentada, así como la estructura de su planteamiento, es de vital
importancia, pues ahí es donde radica la validez del nuevo sistema , así como de
las teorías que estén basadas por el mismo.

La idea de formular una nueva teoría surge cuando el análisis de cierta clase de
problemas rebasa la capacidad descriptiva de las herramientas analíticas
existentes, y es necesario plantear extensiones en sus conceptos o hasta construir
un nuevo conjunto de axiomas.

Con el fin de llevar a cabo esta tarea, es necesario tener una idea clara de los
conceptos relacionados a un conjunto de conocimiento, así como de la forma en
que este es convertido en una teoría.

Para los fines de este trabajo, el conjunto de conocimiento a estudiar es la lógica


clásica, y en específico el cálculo proposicional. Lo anterior será el marco teórico
en que se apoya la propuesta de esta tesis.

En este capítulo se exponen los principales conceptos relacionados con la lógica


simbólica así como sus objetivos, además de comentar la teoría relacionada con la
formulación de esquemas teóricos informales y sistemas formales , con el fin de
obtener una serie de ideas y nociones auxiliares en el planteamiento de un
sistema lógico. Tras la exposición de estas ideas se define el sistema lógico

1
conocido como cálculo proposicional basando la estructura de su definición en
aspectos intuitivos así como los aspectos relevantes de los sistemas formales.

Se escogió al cálculo proposicional como objeto de estudio por las siguientes


razones:

. Provee un marco teórico sólido para el desarrollo de este trabajo, en cuanto a


notación, convenciones y validez de sus axiomas.

. La estructura del cálculo proposicional es básicamente la misma que se pretende


manejar para la lógica dependiente del tiempo, en el aspecto de ser sistemas
encargados de manipulación de proposiciones, aunque su interpretación sea
diferente.

1.2 Lógica simbólica.

La lógica simbólica es un medio por el cual las estructuras lingüísticas utilizadas


comúnmente en el proceso de razonamiento humano son abstraídas en símbolos
para evitar ambigüedad en su interpretación.

Su eficiencia en la representación de ideas es tal que se ha convertido en una


herramienta sistemática de razonamiento indispensable en el quehacer de la
ciencia.

De hecho la lógica tiene como problema principal la clasificación de argumentos


a los que les es asignado un valor de verdad [4].

El planteamiento de este problema implica conocer:

• la estructura de los elementos que componen a la lógica ;


• qué son y para qué sirven los valores de verdad y
• en qué consiste y como se lleva a cabo el proceso de clasificación de un
argumento.

Estos puntos serán ampliados a continuación, tratando de seguir el orden en que


se enumeraron.

2
1.2.1 Argumentos, proposiciones y relaciones.

Un argumento se define como la representación de un razonamiento, el cual está


compuesto por un conjunto cualquiera de elementos llamados proposiciones
(expresiones o enunciados), en los que se fundamenta su verdad.

Las proposiciones son tomadas generalmente como frases que afirman o niegan
algo, por ejemplo:

• Alejandro Magno fue un general conquistador.


• 2 es un número par.

que representadas de manera simbólica son llamadas variables proposicionales,


como es el caso de la siguiente expresión:

p = {2 es un número par}

Profundizando en la estructura de las proposiciones, se encuentran elementos


aún más simples que forman parte de ellas: los objetos. Estos entes a los cuales
es dirigida una acción, son distinguibles entre sí gracias a un conjunto de
características particulares (o cualidades) que describen la clase a la que
pertenecen.

Ejemplo 1.1
Objeto :2
Características: es un número entero; es positivo.

Adicionalmente existe otro tipo de características que se definen al hacer


referencia a otros objetos, las cuales son llamadas relaciones [20]. Estas
establecen un vínculo entre objetos a partir de la similitud de sus cualidades o de
relaciones previamente establecidas.

3
Figura 1.1 Estructura de un argumento lógico

Una relación puede ser representada simbólicamente por medio de las siguientes
expresiones

Rxy ò R (x,y) Representación prefija


xR,y Representación infija
xyR Representación posfija

donde R es una relación cualquiera entre dos objetos y x,y,z... son los objetos.

En lo sucesivo la mayor parte de las expresiones en las definiciones y ejemplos


de este trabajo adoptarán la representación infija, aunque en capítulos posteriores
se use la notación infija en algunos casos (p.ej. al definir procesos).

Para denotar la relación entre varios objetos (más de dos)

R (x,y,z,...)

Toda relación tiene un sentido definido, llamando referente el término del cual
parte la relación x, y relato el destino al que va la relación y.

Ejemplo 1.2
x es padre de y , donde R = {es padre de}

Las propiedades relacionales sirven para establecer la interacción entre las


relaciones y los términos involucrados. Dichas propiedades son las siguientes
(aquí expresadas con la notación prefija):

4
1. Simetría. Si R(x,y) entonces R(y,x).
2. Antisimetría . Si R(x,y) entonces no R(x,y).
3. Transitividad. Si R(x,y) y R(y,z) entonces R(x,z).
4. No Transitividad. Si R(x,y) y R(y,z) entonces no R(x,z).

El concepto de relación no solo forma parte de la estructura de los objetos, sino


que su aplicación puede ampliarse a objetos más complejos, tales como las
proposiciones y los argumentos, obteniendo los mismos resultados.

La descripción de todos estos elementos debe ser complementada con el


concepto de valores de verdad, mencionado en el problema de la lógica, con el fin
de llevar a cabo el proceso de clasificación, el cual por lo general se maneja de
manera bivaluada (dos clases o valores posibles), es decir que o pertenece a una
clase o a la otra pero no a ambas a la vez. Este criterio será discutido a
continuación.

1.2.2 Validez.

Al hacer referencia al término "valores de verdad" debe aclararse que desde un


punto de vista común, la certeza o falsedad de un argumento es relativa al sujeto,
el lugar y el tiempo, y generalmente depende en gran medida del sentido común.

En lógica, la validez de un argumento está dada en función de la verdad o


falsedad de las proposiciones que componen el argumento.

De modo que un argumento es válido, cuando sus premisas y conclusión están


relacionadas de tal forma que, las premisas sean verdaderas si y solo si la
conclusión también lo es.

Ejemplo 1.3 El argumento "Si la figura geométrica A tiene cuatro lados entonces
es un cuadrilátero" será válido siempre y cuando sus premisas "la figura
geométrica A tiene cuatro lados" y "toda figura geométrica con cuatro lados es un
cuadrilátero" sean verdaderas.

Al tratar de abstraer simbólicamente expresiones más complejas, hay que tomar


en cuenta que el valor de verdad de dicha expresión ahora dependerá de la
verdad o falsedad de un conjunto de proposiciones. Al hablar de expresiones
complejas, se hace referencia a argumentos formados por dos o más

5
proposiciones relacionadas por medio de conjunciones llamadas conectivos
lógicos (y,o,no, si entonces, si y solo si), formando lo que se conoce como
enunciados compuestos.

Ejemplo 1.4

Enunciados simples (proposiciones):

El universo es finito.
La vida es fugaz.

Enunciado compuesto por dos enunciados simples y una conjunción (argumento):

El universo es finito y la vida es fugaz.

Así estas relaciones quedarán establecidas definiendo una serie de conectivos y


sus propiedades, para que al ser aplicados a una proposición esta pueda ser
clasificada como verdadera o falsa, pero no ambas. A esto se le conoce como
valores de verdad.

Estos conectivos se pueden clasificar por el número de elementos que relacionan


como unarios (se aplican a un solo término), binarios (relacionan a dos términos),
etc. El número de elementos relacionados por un operador es conocido como
aridad.

La descripción de la función de cada uno de ellos es la siguiente:

1. Negación (¬). Si la proposición es verdadera su negación es falsa.

2. Disyunción (|). La disyunción de dos proposiciones es falsa si y solo si ambas


son falsas.

3. Conjunción (&). La conjunción de dos proposiciones es verdadera si y solo si


ambas son verdaderas.

4. Implicación condicional (→ →). La implicación de dos proposiciones es falsa si y


solo si, la primera es verdadera y la segunda es falsa.

5. Implicación bicondicional (↔↔). La doble implicación de dos proposiciones es


verdadera si y solo si ambas son verdaderas o falsas a la vez.

6
Las asignaciones de los valores de verdad pueden agruparse en tablas
(matrices) donde se visualizan estos valores asignados para los elementos que
constituyen la proposición (estas tablas se muestran más adelante en el
planteamiento del cálculo proposicional).

Este método se usa para determinar la validez o invalidez de una expresión,


examinando todas las posibles instancias de sustitución de sus premisas. Por lo
tanto, si se especifica el valor de verdad para cada caso posible del argumento,
entonces se tiene la definición del argumento en términos de los valores de verdad
de cada uno de sus componentes.

Ejemplo 1.5 Para el argumento x & y la tabla de verdad equivalente es

p q p&q

T T T
T F F
F T F
F F F

Así, de manera similar a la de sus argumentos, la validez de un sistema lógico


estará dado por una serie de fórmulas cuyos valores siempre son verdaderos,
para todas las posibles asignaciones de los valores de verdad de sus
componentes primarios. Estas son llamadas tautologías, y forman el conjunto de
axiomas que junto con las reglas de inferencia se usan para realizar una
demostración.

1.2.3 Reglas de Inferencia y demostraciones.

La clasificación de argumentos se lleva a cabo con base en una serie de axiomas


aceptados. Un concepto igualmente importante es el de definición, pues muchas
de estas verdades así como los elementos que componen la lógica son en
principio simplemente definidos. De la misma manera pueden declararse
convenios con respecto a sus características, declaración y uso, por mencionar
algunas de las aplicaciones que se les da constantemente tanto durante el
proceso de formulación como en la práctica.

La clasificación consiste en afirmar una proposición con base en otras


proposiciones aceptadas. Dicha actividad es llamada inferencia. El resultado

7
principal de este proceso son las relaciones entre las proposiciones iniciales y
finales.

Para evitar la construcción de tablas de verdad y encontrar dichas relaciones


(sobre todo cuando se trata de una serie de argumentos) se han establecido una
serie de normas para llegar a conclusiones verdaderas (proposiciones finales o
consecuentes) cuando se parte de premisas verdaderas (proposiciones iniciales o
antecedentes). Estas son las llamadas reglas de inferencia [28].

Estas reglas están contenidas en un conjunto de funciones de verdad que tienen


como principal característica el ser tautológicas.

Al aplicar las reglas de inferencia obtenidas de las funciones de verdad que


cumplen con la condición de ser tautológicas para llegar a una conclusión, se dice
que se lleva a cabo una demostración (proceso de deducción).

El objetivo de una demostración es deducir una fórmula en particular a partir de


la construcción de sus relaciones con el conjunto inicial de fórmulas.

Cabe aclarar que toda proposición puede ser premisa o conclusión según el
contexto. Es una premisa si se presenta como parte del argumento en que se
basa una demostración de otra proposición, y es una conclusión si está en el
argumento demostrado en base a otras proposiciones.

A continuación se presenta un ejemplo de un conjunto de reglas de inferencia y


su aplicación en una demostración.

Ejemplo 1.6 Sea la regla de inferencia modus ponens definida como:

Premisa :p
Premisa : p→q
Conclusión: q

y sean las proposiciones "la velocidad (v) de un cuerpo A es de 5 m/seg" y "la


distancia recorrida por A es d=v*t, para t=1 seg.", representadas por p y q
respectivamente.

En este caso p es un axioma, si se comprueban como ciertas las características


de A en el fenómeno estudiado, mientras que q dependerá de p cuantitativamente
de forma directa, por lo que p→q, queda definida por la expresión "Si la velocidad

8
de A es de 5 m/seg. entonces la distancia recorrida por A es de d=v*t, para t=1
seg.".

Al tener las premisas en la forma definida por la regla de inferencia, solo resta el
obtener la conclusión, para demostrar el argumento (p&(p→q))→q, que en este
caso es la expresión "la distancia recorrida por A es de d=5 m.". Con esto queda
demostrado que ambas premisas son verdaderas y por lo tanto el argumento
también.

1.2.4 Estructura de los sistemas lógicos.

Después de haber plantado las principales ideas relacionadas con la lógica, aún
falta saber como interactúan sus componentes. Para ello puede tomarse en
cuenta el punto de vista de la definición de la lógica desde un enfoque orientado al
lenguaje como el propuesto en [14] donde su formalización consiste de tras partes:

1. La sintaxis de un lenguaje es una especificación precisa de las expresiones


(secuencias de símbolos) permitidas en la definición del lenguaje.

2. La semántica contiene el significado de las expresiones del lenguaje. En el


caso de una lógica binaria, puede entenderse como la representación de los
significados comunes de las proposiciones, por medio de un conjunto de
valores {cierto,falso}. Por ejemplo, si los estados de una proposición fuesen frío
o caliente pueden representarse equivalentemente por medio del conjunto {0,1}.

3. La deducción provee reglas para la manipulación de expresiones que


preservan ciertos aspectos de la semántica. Por ejemplo, para el caso de la
lógica simbólica, las reglas de inferencia antes mencionadas, permiten obtener
los valores de verdad de un argumento.

Para utilizar esta estructura, esta debe estar expresada de tal forma que sea
compatible con las convenciones relacionadas a la simbología, fundamentación y
planteamiento utilizadas por otras teorías por lo que se hace necesario un
esquema capaz de proporcionar un orden a los elementos que formen parte del
sistema lógico para su posterior aplicación. Con este fin se expondrán a
continuación algunas ideas que pueden ser útiles si se pretende organizar un
conjunto de conocimiento de manera formal.

9
1.3 Teorías informales y Sistemas formales.

Comúnmente en cualquier área de la ciencia se hace más énfasis en la


transmisión repetitiva del conocimiento relacionado a cada disciplina, dejando a un
lado la forma en que se desarrolla dicho conocimiento. Si bien se expone al
mentado método experimental como la única metodología para hacer ciencia, esta
no es la única consideración que debe hacerse.

Por un lado la base para una teoría puede ser simplemente una idea (una buena
idea) sobre la que se reflexiona y se trabaja, y deriva en un conjunto de
conocimientos, en un principio, no estructurados. ¿Pero qué es esta estructura?
La necesidad de ordenar el conocimiento surge (sobre todo en nuestro tiempo) al
manejar grandes volúmenes de información; al tratar de evitar ambigüedades en el
planteamiento a causa del lenguaje y apoyar nuevos desarrollos teóricos o
prácticos en base a lo establecido.

Esta parte de la investigación científica es la que a continuación se comenta con


el fin de encontrar maneras de estructurar una serie de conocimientos con el
propósito de guardar sus relaciones y la coherencia de las ideas en las que se
basan.

1.3.1 Teorías axiomáticas y teorías informales.

Para tratar de aclarar la manera en que un conjunto de conocimiento o teoría es


aceptado como válido, debe llevarse a cabo un análisis de dicho conjunto, que en
principio puede ser una colección de suposiciones no demostradas. Algunos de
estos elementos básicos son aceptados como evidentes en primera instancia por
la intuición con lo que se obtiene una teoría intuitiva.

Dicha teoría intuitiva se axiomatiza al suponer como ciertas sus nociones y


propiedades, y presuponer ciertas teorías previamente construidas (que apoyan su
validez). En este punto la teoría axiomatizada se considera posible si en sus
posibles aplicaciones pueden realizarse predicciones (útiles o no) en base a ella
[24].

10
Otras derivaciones son posibles, tal como aquellas formulaciones de teorías
axiomáticas que presuponen como conocidas la teoría de inferencia y la teoría
general de conjuntos llamadas teorías informales.

Este enfoque es de gran ayuda pues el presuponer como ciertas algunas teorías
da cierto grado de validez y veracidad a la teoría que se quiera formular aunque su
"total" validez estará dada por las ideas y conceptos en que este basada dicha
teoría. Además de alguna manera se esta llevando a cabo un replanteamiento de
conocimiento aceptado, que en cierta forma se amplía cada vez que sustenta una
nueva teoría.

1.3.2 Sistemas formales.

La sutil diferencia entre el conocimiento organizado y el que no lo está, es la


brecha entre que un conjunto de conocimiento sea ciencia o no. Aquel
conocimiento que se encuentra estructurado con base en ciertas reglas se le
conoce como sistemas formales.

Los sistemas formales son un medio para producir teoremas a partir de axiomas
(o salidas a partir de entradas como una analogía a un proceso) u otras entidades
de manera mecánica, y por su misma naturaleza abstracta se les puede usar para
definir una gran variedad de sistemas. Uno de sus puntos importantes es su uso
en sistemas donde las secuencias de símbolos tienen difícilmente una estructura
como la de las matemáticas o la lógica, y donde las secuencias generadas en
forma de oraciones o fórmulas tienen interpretaciones con sentido.

De hecho no sólo es un procedimiento tal que ningún paso sea dado sin una
regla, sino que busca que un observador pueda revisar cuáles son las reglas
dadas y que dichas reglas han sido seguidas en cualquier demostración (rastreo
del funcionamiento de un proceso).

Un sistema formal [17] está compuesto por: un alfabeto A; un subconjunto B de


palabras en A cuyos elementos son llamados fórmulas ; un subconjunto C de B
cuyos elementos son llamados axiomas y un conjunto finito P de predicados
recursivos de palabras de B llamados reglas de inferencia (o reglas de
producción).

Se debe tomar en cuenta que la meta no es definir la totalidad de los términos, ni


demostrar cada proposición, sino que baste con definir un número mínimo de
proposiciones para deducir el resto de ellas y de igual manera con la definición de
los términos. Esto es a lo que se llama un sistema deductivo [4].

11
Por último ambos enfoques serán útiles al definir el cálculo de predicados y la
lógica dependiente del tiempo, pues a fin de cuentas lo que se busca es plantear
una estructura formal de conocimiento.

1.4 El cálculo proposicional.

Tras haber expuesto los puntos de vista formal e informal con respecto a la
definición de un sistema, es tiempo para unificar varias de estas ideas para dar el
planteamiento de la lógica o cálculo proposicional.

Esta teoría esta enfocada a proporcionar un criterio para decidir de manera


mecánica si una serie de razonamientos o secuencia finita de proposiciones es
aceptada como correcta en base a su estructura.

Dentro de las matemáticas esto equivale a deducir teoremas aplicando una


colección de axiomas siguiendo las reglas de un sistema lógico.

Los elementos de este sistema se plantearán con base en las definiciones


sintácticas, semánticas y deductivas expuestas a lo largo de este capítulo
tomando como punto de partida la estructura de un sistema formal así como
nociones de la teoría de conjuntos asumiendo el criterio de una teoría informal.

1.4.1 Definición de símbolos y operadores.

El alfabeto (o vocabulario) del cálculo proposicional consiste de un conjunto de


proposiciones o constantes proposicionales denotadas por letras minúsculas (a
veces indexadas) y un conjunto de conectivos [25]. Los elementos de este alfabeto
son también llamados símbolos primitivos [4].

Constantes proposicionales : p,q,r,s,...

Operadores:

12
Nombre Simbología

Negación ¬,-
Conjunción &
Disyunción |
Implicación →,⇒
Equivalencia ↔,⇔

La asignación de los valores de verdad para cada uno de los operadores está
dada en las siguientes tablas de verdad. La notación usada es {0,F} para valores
falsos y {1,T} para valores verdaderos.

p ¬p

T F
F T

p q p&q p|q p→q p↔q

T T T T T T
T F F T F F
F T F T T F
F F F F T T

1.4.2 Reglas sintácticas.

Dado el vocabulario del cálculo proposicional es necesaria la construcción de


reglas para permitir la especificación de combinaciones distinguibles (y no solo
secuencias finitas de símbolos primitivos) llamadas fórmulas (o fórmulas bien
formadas), las cuales forman el lenguaje del cálculo proposicional.

Las reglas para construir fórmulas son:

i. Cada proposición es una fórmula (paso Base).

13
ii. Si X y Y son fórmulas, entonces ¬X, (X&Y), (X|Y), (X→Y), (X↔Y) son fórmulas
(paso de Cerradura).

iii. Todas las fórmulas se obtienen al aplicar las reglas de base y cerradura, un
número finito de veces (paso de Inducción).

Además de estas reglas de construcción debe tomarse en cuenta la jerarquía de


los operadores teniendo como convención el siguiente orden (el orden es de
izquierda a derecha):

↔,→, |,&, ¬

Las fórmulas contenidas en el paso base son llamadas fórmulas primarias y las
obtenidas por los pasos de inducción y cerradura se les llama fórmulas
compuestas.

1.4.3 Axiomas y Reglas de inferencia.

Las fórmulas estudiadas por el cálculo proposicional han de cumplir con las
siguientes propiedades:

a. Consistencia.
Una fórmula consistente tiene un modelo que puede interpretarse como
verdadero.

b. Validez (tautologías).
Una fórmula válida siempre es interpretada como verdadera, para cualquier valor
de verdad de las proposiciones que la forman (⊥).

Puesto que la consistencia ha sido definida por las reglas de construcción de


fórmulas, al ubicar el papel de la definición de validez en este sistema lógico se
tiene un conjunto de tautologías con las que se podrá constatar si una fórmula es
válida o no. La derivación de dicho conjunto puede hacerse desarrollando las
tablas de verdad para todas las fórmulas posibles lo que es un método impráctico.
En su lugar es preferible definir reglas para la obtención de tautologías a partir de
un conjunto pequeño de tautologías simples [24].

Estas reglas están expresadas en los siguientes teoremas:

14
Teorema 1.1 ⊥ A ↔ B si y solo si A = B

Teorema 1.2 Si ⊥ A y ⊥ A → B entonces ⊥ B

Teorema 1.3 Sea A una fórmula compuesta de componentes primarios usando


solo ¬, & y |. Sea An la negación de A. Entonces ⊥ ¬A ↔ An es una tautología.

El primer teorema muestra la equivalencia de fórmulas en términos del concepto


de validez, lo cual es muy útil para hacer sustituciones. El segundo teorema es
una regla de inferencia (modus ponens) para obtener nuevas tautologías; y el
tercero denota las propiedades de la negación tal que al aplicar esta propiedad a
una fórmula A, se tendrá que An (su negación) se obtiene de reemplazar los
operadores | por & y viceversa, así como cada ocurrencia de una proposición Pi
por ¬Pi, y viceversa.

A continuación se presenta una lista de las tautologías usadas en el cálculo


proposicional.

Condicionales tautológicas:

• A & (A→B) → B
• ¬B & (A → B) →¬A
• ¬A & (A | B) →B
• A & B →A
• A →A | B
• (A →B) →(A & C →B & C)
• (A →B) →(A | C →B | C)

Bicondicionales tautológicas:

• A↔A
• ¬¬A ↔A
• (A ↔B) ↔(A ↔B)
• A | B ↔B | A
• A & B ↔B & A

Tautologías para la eliminación de conectivos (reglas de sustitución):

• A ↔B ↔(A →B) & (B →A)


• A →B ↔(¬A | B)
• ¬(A & B) ↔(¬A | ¬B)
• ¬(A | B) ↔(¬A & ¬B)

15
Después de haber definido todos los elementos que forman parte en el proceso
de inferencia, falta por establecer las reglas por medio de las cuales se llevará a
cabo este proceso. La base para estas reglas está dada por el siguiente teorema:

Teorema 1.4
i. A1,A2,...,Am ⊥ Ai para i=1,2,...,m
ii. Si A1,A2,...,Am ⊥ Bj para j=1,2,...,p y si B1,B2,...,Bp ⊥ C , entonces A1,A2,...,Am ⊥ C

Con este resultado la demostración que una fórmula B (conclusión) es una


consecuencia de las fórmulas A1,A2,...,Am (premisas), puede presentarse en forma
de una secuencia finita de fórmulas, donde la última es B.

A continuación se listan las reglas de inferencia definidas para la demostración


de fórmulas y la prueba de hipótesis.

1. Modus ponens.
Premisa: P
Premisa: P→Q
Conclusión: Q

2. Silogismo hipotético.
Premisa: P→ Q
Premisa: Q→R
Conclusión: P→ R

3. Modus tollens.
Premisa: P
Premisa: ¬Q → ¬P
Conclusión: Q

4. Contraposición.
Premisa: P→Q
Conclusión: ¬Q →¬P

5. Reducción al absurdo.
Premisa: ¬P →P
Conclusión: P

16
Aunque estas reglas están dadas en forma de implicaciones, pueden ser
modificadas para el uso del resto de los operadores por medio de las tautologías
para la eliminación de conectivos (reglas de sustitución).

Por lo tanto, aplicar el cálculo proposicional para solucionar problemas significa


que se demostrará, a partir de las premisas contenidas en el planteamiento del
mismo, una conclusión dada o se deducirá una nueva. Como ejemplo de esto se
plantea el siguiente problema.

Ejemplo 1.7 Sea la ecuación y = mx + b. Obtener el valor de x.

En este problema de álgebra es posible aplicar el proceso de inferencia del


cálculo proposicional proponiendo los siguientes puntos para obtener una
conclusión:

a. Plantear las premisas del problema como una serie de implicaciones sencillas
para relacionar de manera lógica las sustituciones algebraicas obtenidas de la
ecuación original.

Si y=mx+b entonces mx=y-b


Si mx=y-b entonces x=(y-b)/m

El término plantear puede asumirse de cierta manera como equivalente de


traducir. Esto es útil cuando el problema es descrito por medio del lenguaje común
(o natural), donde las redundancias en las expresiones originales pueden
ocasionar errores en el planteamiento y la interpretación de las conclusiones
obtenidas.

Este proceso de traducción del lenguaje natural a la estructura definida hasta


ahora es lo que se llama formalización [26].

b. Sustituir las expresiones algebraicas por variables y conectivos en base a las


reglas de sintaxis del cálculo proposicional.

p = {y = mx + b }
q = {mx = y - b }
r = {x = (y-b)/m}

(1) p → q
(2) q → r

17
c. Aplicar las reglas de inferencia para obtener una conclusión.

(1) p → q
(2) q → r
(3) p → r (silogismo hipotético)
(4) p
(5) r (modus ponens)

donde la conclusión r es cierta a partir de las premisas p y q.

1.5 Comentarios.

El esquema proposicional discutido se aplica extensamente en varias disciplinas


de la ciencia aunque aquel que lo aplique debe aprender a diferenciar sus
elementos en casos particulares con el fin de obtener un beneficio real de su
estudio. De igual manera ocurre con la mecánica de la aplicación de las reglas de
inferencia, en cuyo caso no solo es útil el conocimiento sino la experiencia en la
obtención de resultados.

Como se mencionó al principio de este capítulo la estructura del cálculo


proposicional será utilizada como esquema de referencia para plantear la lógica
dependiente del tiempo por medio de ciertas consideraciones, pero bajo el criterio
de que la lógica proposicional sirve como base para soportar su validez.

Esto es, definir un sistema lógico que sólo se enfoque a los valores de verdad de
las proposiciones. Aunque bajo este punto de vista se tienen restricciones, el
desarrollar un sistema con un conjunto pequeño de elementos es más que
suficiente para obtener resultados interesantes.

El pretender desarrollar un sistema robusto (o más general) implicaría una teoría


más extensa. Por ejemplo el cálculo proposicional y el cálculo de predicados
difieren principalmente en:

- la estructura de sus proposiciones, pues mientras en el cálculo proposicional se


toman como indivisibles, las proposiciones del segundo contienen variables
(predicados) que hacen variar sus valores de verdad;

- su conjunto de operadores, ya que el cálculo de predicados incluye


cuantificadores (relaciones que indican un numero de términos involucrados);

18
lo que se traduce en un replanteamiento de sus reglas sintácticas, semánticas y
las reglas de inferencia y axiomas necesarios para su aplicación.

19
Capítulo 2.

Lógica dependiente del tiempo.

"Every year is getting shorter, never seem to find the time


Plans that either come to naught or half a page of scribbled lines
Hanging on in quiet desperation is the english way
The time is gone, the song is over, thought I'd something more to say"

Time. Roger Waters.

2.1 Introducción.

Tras haber expuesto las bases para formular un sistema lógico y definir el cálculo
proposicional, es posible plantear, con base en el capítulo anterior, el esquema de
una lógica dependiente del tiempo (LDT) no sin antes exponer las características
del concepto del tiempo. No es el objetivo de este trabajo el hacer una reflexión
filosófica al respecto, sino tratar de entender y plantear su funcionamiento de
manera simple para poder extender el cálculo proposicional a un contexto que
maneje el tiempo.

En este capítulo se exponen algunas de las ideas más relevantes con respecto al
tiempo y sus características, y se presenta, y amplía la formulación de la LDT
expuesta originalmente por Alejandro Medina [15] (y desarrollada posteriormente
en trabajos como [21]).

Una de las adiciones que se hace al planteamiento original de la LDT es exponer


un conjunto de consideraciones con respecto al tiempo, enfocado al análisis de
procesos.

Dicho marco teórico será aprovechado para llevarlo a un sistema de


representación por medio de redes neuronales y comentar las características
ventajas que dichos sistemas tienen.

20
2.2 Definiendo las características del tiempo.

La idea de analizar un fenómeno en el contexto del tiempo, implica la necesidad


de plantear un esquema para su estudio.

En primera instancia un sistema para medir el tiempo, el cual ha sido planteado


por la física en base a patrones de fenómenos con duración o intervalos
constantes (sistema internacional de medidas), y que tiene como unidad de
medida el segundo.

Por otro lado un conjunto de características y consideraciones relacionadas a la


concepción del tiempo, y su manipulación con respecto a la descripción del
comportamiento de un fenómeno.

Al tratar de formalizar sus características, se hace necesaria la existencia de un


axioma de temporalidad para el mismo tiempo (aún a pesar de que algunos
sistemas no tomen al tiempo como un factor determinante en su comportamiento o
estructura) como requisito para su uso en un sistema lógico, por lo que se tiene
que:

existe un tiempo t

Aunque pueda sonar redundante, esto sirve para aclarar que el tiempo al que se
está haciendo referencia es particular al análisis de un fenómeno.

Para fines de expresar los términos de pasado, presente y futuro con respecto a
un instante, asumiendo el tiempo como una "sucesión continua de momentos", se
plantean las siguientes definiciones.

Definición 2.1 El tiempo total de un proceso T es la sucesión de instantes


t 0 , t1 ,..., t n , donde t 0 es el instante inicial del proceso y t n el instante final del
mismo, donde n es el número de instantes definido como la duración del proceso.

Definición 2.2 Un reloj C(q) es un proceso externo, encargado del control de T, si


y solo si ningún otro proceso es capaz de causar un cambio en T. Cada evento de
C provocará un incremento en q hasta alcanzar el valor equivalente al instante final
tn (es decir que q=n).

Definición 2.3 t i es el instante actual de un proceso si y solo si C causa que q=i.

Definición 2.4 Si t i es el instante actual de un proceso, entonces t(i-1) es el


antecesor de t i , o un instante antes para i>0.

21
Definición 2.5 Si t i el instante actual de un proceso, entonces t(i+1) es el sucesor
de t i , o un instante después para i≥0.

Estas definiciones permitirán precisar simbólicamente la situación temporal de un


evento que pueda provocar un cambio en un sistema, y así tener un panorama de
su transformación en un lapso de tiempo determinado.

Para que la interpretación de este esquema sea más acertada, es necesario


establecer si los instantes t 0 , t1 ,..., t n del intervalo T, tienen un sentido continuo o
discreto. En el caso de que los instantes de T fuesen discretos, el valor de cada
uno de ellos varía incrementalmente de forma constante, por lo que su número
sería finito. En el caso contrario la diferencia entre los valores de cada instante de
tiempo puede tender a cero, lo que implicaría que t0=tn.

Por lo anterior es necesario definir las condiciones necesarias para que un


intervalo de tiempo sea discreto.

Definición 2.6 La duración d entre los instantes t 0 , t1 ,..., t n que componen a T


(tiempo total de un proceso), está definida como un valor real positivo mayor que
cero que representa una cantidad de unidades de tiempo o segundos (ej. d = 2
seg.; d = 0.5 seg.) entre ti y tj.

De hecho en lo sucesivo al hacer referencia a un intervalo de tiempo se asumirá


que este es discreto.

Existen casos de sistemas en que el tiempo no es determinante en su


comportamiento. La siguiente definición provee una manera de distinguir entre
estos sistemas y sus contrapartes.

Definición 2.7 Si el instante de tiempo t tiene instantes antecesores y sucesores


con respecto a su instante actual, es decir, que cambie, entonces se dice que el
sistema bajo este contexto es dinámico.

En caso de no cumplirse esta condición, se dice que se está tratando con un


sistema estático (equivalente a t0=tn).

Para cada tipo de sistema se tiene que sus procesos serán entonces de dos
clases:

• Procesos instantáneos. Son aquellos cuyo cambio de estado no depende de un


cambio de sus variables en el tiempo (P). Son exclusivos de los sistemas
estáticos.

22
• Procesos dependientes del tiempo. Son aquellos cuyo cambio de estado
depende de un cambio de sus variables internas o externas en el tiempo (P(t)).

Otra forma de entender la diferencia entre ambas definiciones, es con respecto a


su duración, es decir, el tiempo que requiere el proceso para transformar sus
valores de entrada, en sus valores de salida. Mientras que un proceso instantáneo
tiene una duración de cero instantes, la duración de un proceso dependiente del
tiempo puede ser mayor o igual a cero.

Aunque esto implica que los procesos instantáneos son un subconjunto de los
dependientes del tiempo, su principal diferencia radica en el planteamiento del
sistema, pues un sistema estático no tiene variaciones temporales, por lo que el
concepto de duración no tendría sentido. En cambio, si el sistema es dinámico,
aún una duración de cero instantes tiene sentido, pues indica que la respuesta del
proceso se dará en el mismo instante en el que sus valores de entrada llegaron a
él.

Lo anterior implica definir una notación que se encargue de representar la


relación entre los procesos y el tiempo. La siguiente definición propone una
notación funcional para este propósito.

Definición 2.8 Sea P un proceso, y T el lapso de tiempo en que se pretende


representar el proceso. La representación del proceso en cada instante de T
estará dada por P(t+i), donde i es un entero positivo que indicará en que instante
del intervalo se hace la representación; y t indica un instante como unidad de
medición del tiempo.

En vez de utilizar la representación de los instantes con subíndices, esta notación


ofrece una representación clara del avance en el tiempo, y por lo tanto del
desarrollo en el proceso que se realiza. Esta notación será de mucha utilidad en lo
subsecuente.

2.3 Relacionando la lógica y el tiempo.

La lógica puede usarse como una herramienta para la representación y el


análisis de sistemas, con la que puede especificarse con un lenguaje formal una
serie de requerimientos que un sistema debe satisfacer, así como verificar dichas
especificaciones.

Tradicionalmente, el tiempo se ha representado como una variable más, por


ejemplo en las matemáticas y la física, ofreciendo un punto de vista cuantitativo

23
del objeto de estudio, mientras que la interpretación cualitativa de los resultados
depende de la capacidad de abstracción y experiencia del sujeto que realiza el
análisis.

El objetivo de proporcionar elementos de temporalidad a la lógica, ofrece


propiedades cualitativas y cuantitativas desde la definición hasta el análisis de los
resultados obtenidos de un sistema.

Así, mientras la lógica ofrece una descripción de la estructura y funcionamiento


del objeto de estudio, el tiempo relaciona los estados y eventos de dicho objeto de
forma que estos no se produzcan o sufran una transformación si no existe un
cambio en el tiempo (dependencia temporal).

Por lo tanto se puede decir que si se quiere evaluar un sistema en un contexto


temporal, su descripción lógica estará ligada al tiempo de tal manera, que ninguna
operación se realice si una transición del tiempo no ha ocurrido y se haya
establecido el lapso de tiempo en que dicho sistema va a operar.

Esto implica que de ninguna manera la obtención de resultados puede


interpretarse de forma secuencial, es decir, que solo cada determinado lapso de
tiempo solo un resultado será generado, sino que varios objetos podrán ser
evaluados a la vez en un instante de tiempo.

Antes de definir la LDT de Alejandro Medina es prudente mencionar que su


trabajo no es el único relacionado a proporcionar un formalismo que unifique el
tiempo con la lógica. Como se menciona en [6] en el caso del estudio de sistemas
de tiempo real se tienen entre otras las siguientes técnicas:

• Modelos de transición de tiempo (TTM). Se define como una terna (X,Y,Z) donde
X es el conjunto de variables de datos y actividades; Y es un predicado que
agrega una condición inicial en las variables y Z es el conjunto de todas las
transiciones entre las actividades (representación de eventos). Cada transición
tiene una condición de funcionamiento, una función de transformación y limites
de tiempo. Estos modelos proveen una representación efectiva de sistemas
realizables. Además el procesamiento en paralelo y la multiprogramación
pueden ser modeladas.

• Lógica de tiempo real (RTL) y modelos de acción-evento. La lógica de tiempo


real es un lenguaje formal para razonar sobre eventos y sus tiempos de
ocurrencia. El dominio del tiempo usado es un conjunto de enteros no
negativos. La representación de un sistema se hace mediante la conjunción de
un conjunto de fórmulas de la RTL. El modelo de evento-acción, no es más que
especificaciones textuales del orden de los eventos.

24
Estos métodos formales al igual que la LDT buscan:

a. Tener modelos apropiados y notaciones formales para la descripción de


sistemas, además de permitir la expresión de las propiedades temporales.

b. Permitir a través de la representación matemática la verificación de las


especificaciones del sistema.

c. Permitir que la arquitectura del sistema sea construida de manera estructurada.

2.4 Definición de la LDT.

Tomando en cuenta lo expuesto en el primer capítulo acerca de la estructura del


cálculo proposicional, la formulación del sistema de lógica dependiente del tiempo
se hará en base a los lineamientos de un sistema formal, esto es, planteando su
alfabeto, fórmulas, axiomas y reglas de inferencia, todo ello tomando como
esquema inicial los elementos del cálculo proposicional.

Tras hacer esto hay que plantear los elementos temporales que formarán parte
del nuevo sistema así como posibles modificaciones o extensiones a elementos ya
existentes, así como establecer la validez del nuevo sistema.

2.4.1 Simbología y operadores.

Para comenzar el planteamiento de la LDT, considérese que al igual que el cálculo


proposicional, el nuevo sistema lógico estará orientado a proporcionar una
metodología para determinar la validez de un argumento.

Por lo tanto, lo primero será establecer que el sistema de la lógica de endiente


del tiempo, estará compuesto de un alfabeto A, un subconjunto B de palabras en A
con elementos llamados fórmulas; un subconjunto C de B cuyos elementos son
llamados axiomas y un conjunto finito P de predicados recursivos de palabras de B
llamados reglas de inferencia.

25
En primera instancia será necesario definir el alfabeto A para la LDT, similar a las
variables x,y,z... del cálculo proposicional, aunque antes debe plantearse la
interpretación que tendrán los elementos del nuevo alfabeto.

Cada uno de los elementos del alfabeto será una variable proposicional cuya
dependencia temporal estará representada por la notación funcional x(t), la cual
podrá interpretarse como "x en cualquier momento". Si t adopta un valor específico
entonces se interpreta como "x en cierto momento".

Variable proposicional x
Variable proposicional dependiente del tiempo x(t)

Para expresar una proposición que indique el valor de x(t) durante varios
instantes sucesivos tal que

x(t),x(t+1),...,x(t+k)

se puede expresar de la forma x(t+k), k=0,1,2,...δ-1, donde δ es la duración del


evento.

Así, el alfabeto A de la LDT estará formado por el conjunto x(t),y(t),z(t)... cuyos


elementos serán llamados variables proposicionales dependientes del tiempo la
cuales podrán asumir valores de verdadero y falso.

El siguiente paso será plantear una forma de construir argumentos o enunciados


compuestos a partir de A, por lo que se adoptará como opción inmediata el uso de
los conectivos lógicos ya conocidos, con lo que se obtendrán expresiones como

¬x(t)
x(t) & y(t)
x(t) | y(t)
x(t) → y(t)
x(t) ↔ y(t)

De lo anterior surge la cuestión acerca de la equivalencia de estas expresiones y


las del cálculo proposicional. Puesto que los elementos del conjunto A han sido
definidos en base a los del alfabeto del cálculo proposicional, su comportamiento
no solo es similar, sino que es exactamente el mismo. En realidad no importa
mucho que x(t+k) varíe en el tiempo, en lo relativo a la aplicación de un operador ,
pues las tablas de verdad para ambos tipos de proposiciones son las mismas. La
única diferencia, de nuevo, es a nivel de interpretación, pues se dirá que los
valores de cierto o falso se asignarás a las variables en cualquier tiempo t.

* Tablas de verdad de la LDT para los conectivos lógicos.

26
Ejemplo 2.1 Aquí se presenta un caso donde los valores de verdad se encuentran
asignados de la misma manera que en la tabla de verdad que define al operador
&.

x(t) x(t+1) x(t+2) x(t+3)


0 1 0 1

y(t) y(t+1) y(t+2) y(t+3)


0 0 1 1

x(t) & y(t) x(t+1) & y(t+1) x(t+2) & y(t+2) x(t+3) & y(t+3)
0 1 0 1

Sin embargo es posible plantear argumentos donde los instantes de tiempo de


las variables sean diferentes sin que esto afecte la definición original del operador.

x(t) & y(t+1) x(t) & y(t+2) x(t+3) & y(t+2) x(t+3) & y(t)
0 0 1 0

Si cualquiera de la variables por alguna razón una no tuviera asignado un valor


de cierto o falso, se puede representar pero no podrá evaluarse hasta efectuar
dicha asignación.

x(t-1) & y(t) ; x(t-1)=?


x(t) & y(t-1) ; y(t-1)=?
x(t-1) & y(t-1) ; x(t-1)=? , y(t-1)=?

El concepto de tautología, definido en el cálculo proposicional como condición de


validez, será aplicado a aquellas proposiciones temporalmente dependientes cuyo
valor de verdad sea verdadero en cualquier instante t.

Para determinar las relaciones entre las variables de una proposición en el


tiempo, es necesario definir operadores con las siguientes características:

I. Definir si dos proposiciones son iguales en un instante.

En el caso de la igualdad, debe tomarse en cuenta que se describirá una


equivalencia lógica válida para todo momento x(t) = y(t), por lo que su
bicondicional (↔ en este caso se representa como ≡) x(t) ≡ y(t) es una tautología
que se puede expresar de la forma

27
x(t) ≡ y(t) = 1

II. Definir una transformación en el estado de una proposición x en un instante t.

Para definir en general, una transformación A sobre x(t) se dice que se obtendrá
otra función y(t) tal que

y(t) = Ax(t)

Para definir si dos operadores unarios son iguales, se tiene que

Ax(t) = Bx(t) → A = B

Otras propiedades de los operadores unarios son:

a. ABx(t) = A(Bx(t)) (asociatividad)


b. ABx(t) ≠ BAx(t) , A ≠ B (los operadores no son conmutativos )
c. ABx(t) = BAx(t) , A = B

Las relaciones entre funciones lógicas del tiempo estarán definidas por
operadores binarios, donde el resultado de conectar las funciones Ax(t) y Bx(t) será
Ax(t) @ Bx(t)

(donde @ es un elemento del conjunto de operadores del cálculo proposicional) y


dado esto se puede establecer la equivalencia

(A @ B) x(t) = Ax(t) @ Bx(t)

A continuación se definen los operadores unarios propios de la LDT:

1. Identidad (I). Transforma cualquier proposición en sí misma.

Ix(t) = x(t)

Este operador podrá conmutar con cualquier operador (por lo que es una
excepción a la regla de no conmutatividad entre operadores).

2. Tautología (T). Transforma el valor de verdad de cualquier proposición a


verdadero en cualquier instante t.

Tx(t) = 1

Además tiene la propiedad TA = T, donde A es un operador unario.

28
3. Antitautología (F). Transforma el valor de verdad de cualquier proposición a
falso en cualquier instante t.

Fx(t) = 0

Además tiene la propiedad FA = F, donde A es un operador unario.

4. Retardo (D). Este operador se basa en la siguiente definición:

Definición 2.9 Un elemento de retardo (delay) es aquel cuya salida tiene un valor
x en el instante t+1 si y solo si su valor de entrada en el instante t es x [17].

La interpretación de un retardo puede depender del contexto planteado, por


ejemplo:

- la suspensión de un proceso por un instante determinado (pausa);


- el defasamiento de una señal en el tiempo (p.ej sen(w) sen(w+t));
- el tiempo que tarda un proceso en llevarse a cabo;
- el tiempo de respuesta de un proceso.

En este caso D indicará el número de instantes en que una variable tendrá un


valor definido. Por ejemplo si x(t) tiene un valor de 1 en el instante t, y x mantiene
su valor en t+1, se tiene

x(t+1) = x(t)

Dx (t ) = x (t + 1)

En caso de que el tiempo de retraso sea de más de un instante, la notación de D


puede ampliarse agregando un exponente al operador, de manera que sus
potencias positivas representen retardos de más de un instante

D n x (t ) = x (t + n) ,con n=1,2,3,...

así como sus potencias negativas definen su inverso

D n x (t ) = x (t + n) , con n= -1,-2,-3,...

cuya interpretación sería conocer los valores x(t), j instantes antes de t, siempre y
cuando (t-j)≥0, lo cual es equivalente a consultar el desarrollo en el tiempo de la
variable.

Tras definir cada uno de los nuevos operadores, las reglas para construir fórmulas
bajo el nuevo sistema son muy similares a las del cálculo proposicional, y son:

29
i. Cada proposición dependiente del tiempo es una fórmula.

ii. Si x(t) y y(t) son fórmulas, entonces ¬x(t), x(t)&y(t) , x(t)| y(t), x(t)→y(t), x(t)↔y(t),
Ix(t), Fx(t), Tx(t), Dx(t) son fórmulas.

iii. Todas las fórmulas se obtienen al aplicar los axiomas y definiciones un número
finito de veces.

2.4.2 Características de los argumentos de la LDT.

En el capítulo anterior se planteó la validez del cálculo proposicional con respecto


a los términos de tautología y consistencia, aplicados a las fórmulas que se
derivan de este. La validez de la LDT está dada bajo las mismas condiciones,
aunque la determinación de sus tautologías sea diferente.

De hecho esta diferencia puede establecerse en la estructura de las tablas de


verdad utilizadas para determinar los valores de las proposiciones temporales, así
como su interpretación.

a) Es posible interpretar un argumento dependiente del tiempo, como la


descripción del funcionamiento de un proceso o la relación entre varios procesos
en un sistema. Esto si sus variables se consideran como las entradas del proceso
y la aplicación de operadores como un proceso en sí (esta interpretación será útil
más adelante para entender la representación de un sistema en base a sus
procesos componentes).

b) Las tablas de verdad estarán construidas con proposiciones dependientes del


tiempo, lo que implica tanto una nueva definición de estas, así como una
interpretación diferente pues ya no se tratará solo de decir

"p y q es verdadera si y solo si p es verdadera y q es verdadera"

sino

"p y q en t es verdadera si y solo si p es verdadera en t y q es verdadera en t".

c) Las tablas de verdad pueden contener proposiciones con ciertos valores de


verdad definidos para un instante cualquiera. Esto implica que al aplicar un
operador a ciertas proposiciones, estas se ubican en cierto instante ti mientras que

30
el resultado de su operación puede estar ubicado en un instante tj menor o mayor
que el original.

Premisas Operación Conclusiones probables

x1(t) x2(t) x1(t) φ x2(t) y(t) y(t+n) y(t-n)

1 1 x x x x
1 0 x x x x
0 1 x x x x
0 0 x x x x

Si la conclusión se expresa en el mismo instante t, de las premisas y la operación


se puede decir que el proceso es instantáneo.

Este caso en particular es el de la lógica proposicional, pues el proceso de


inferencia se toma como el cambios de estados antes de encontrar una
conclusión (si la hay), y aunque el sujeto que aplique dicha metodología requiere
cierto lapso de tiempo para producir una respuesta, el tiempo no es determinante
ni en la aplicación de la metodología, ni en los resultados que se obtienen.

Por otra parte la LDT sitúa tanto a las premisas como a las conclusiones en un
contexto temporal al asignarles a su estructura un instante de tiempo en el que su
valor de verdad puede variar.

d) Una tautología del cálculo proposicional seguirá siendo una tautología en la


LDT siempre y cuando los valores de verdad de las variables de la función lógica
en cualquier instante de tiempo correspondan con los valores de la función lógica
proposicional (valores instantáneos). Esto es importante si el esquema de
inferencia proposicional quiere aplicarse a la LDT con fines de reducción o de
obtención de conclusiones.

Por ejemplo para la lógica proposicional se tiene el modus ponens:

Premisa: p
Premisa: p→q
Conclusión: q

Esta regla de inferencia es una tautología cuya tabla de verdad es la siguiente:

p q p→q (p & (p → q)) → q

1 1 1 1
1 0 0 1

31
0 1 1 1
0 0 1 1

Para el caso de la LDT donde el instante t es el mismo en las premisas y su


conclusión la tabla de verdad es la siguiente:

p(t) q(t) p(t) → q(t) (p(t) & (p(t) → q(t))) → q(t)

1 1 1 1
1 0 0 1
0 1 1 1
0 0 1 1

Para el caso de la LDT donde las premisas están en el instante t y su conclusión


un instante después (t+1) la tabla de verdad es la siguiente:

p(t) q(t) p(t) → q(t) (p(t) & (p(t) → q(t))) → q(t+1)

1 1 1 1
1 0 0 1
0 1 1 1
0 0 1 1

La interpretación de esta última varía a causa del incremento de t , aunque en sí


mientras las premisas mantengan sus valores de verdad en t la conclusión seguirá
siendo la misma en un instante diferente. Aunque al substituir t se tengan instantes
diferentes para las premisas no debe perderse de vista que su evaluación por
medio de la regla de inferencia se lleva a cabo en un momento preciso. Dicho
evento será tautológico si las premisas concurren con los valores de verdad
especificados, y la conclusión se obtendrá al final de la duración del evento.

Tras aclarar esto y asumiendo la misma actitud del cálculo proposicional con
respecto a la inferencia por medio de reglas y no por producciones exhaustivas de
tablas de verdad, se cuenta con un conjunto de tautologías ya definidas que serán
útiles para obtener conclusiones y reducir expresiones simbólicas que así lo
requieran.

32
2.5 Comentarios.

La propuesta de la LDT consiste en proporcionar una estructura teórica capaz de


abstraer los factores y condiciones de un fenómeno que impliquen el factor del
tiempo en su estudio como algo no implícito, sino como elemento activo en su
comportamiento.

Esto en la práctica es lo que más se asemeja a la descripción de un proceso H(t),


donde debe transcurrir cierto lapso de tiempo para transformar las entradas en la
salida deseada.

Figura 2.1 Diagrama de un proceso simple que muestra el efecto de un proceso temporal en su
valor de salida. I(t),H(k) y O(t+k) pueden considerarse como variables dependientes del tiempo.

A partir de este momento ya no es posible intuir a un proceso simplemente como


una caja negra que regresa un nuevo estado instantáneamente, sino que tardará
un determinado número de instantes en generarlo.

33
Capítulo 3.

Lógica dependiente del tiempo


y elementos neuronales de procesamiento.

"Estamos tratando de salvar la independencia de la humanidad... Hoy


vivimos en un mundo plácido, uniforme y culturalmente muerto: nada nuevo
en verdad ha sido creado desde la llegada de esos seres. La razón es
obvia. No hay nada por qué luchar y sobran distracciones y
entretenimientos."

El fin de la infancia.
Arthur C. Clarke.

3.1 Introducción.

Tras haber expuesto los principios relacionados con la lógica dependiente del
tiempo (LDT) surgen cuestiones relativas al cómo y dónde va a ser aplicada esta
teoría. En primera instancia puede pensarse en su uso para el análisis de
problemas donde el cálculo proposicional ya ha sido aplicado con éxito, pero como
se comentó anteriormente esto sería solo un caso particular de la LDT (cuando el
tiempo se considera estático y que no es determinante en el comportamiento del
sistema).

El planteamiento de este trabajo al respecto, es el de aplicar la LDT para la


representación simbólica de procesos con la intención de descubrir nuevas
propiedades que no habían sido planteadas en la teoría original, sobre todo a nivel
de conectividad entre ellos. De los resultados que se obtengan pueden derivarse
técnicas para el diseño y la obtención de un análisis cualitativo de sistemas de
elementos de procesamiento independientes.

En esta dirección se tiene el planteamiento de Burks y Wright detallado en [17]


sobre una estructura llamada red de transductores binarios. Este esquema se
basada en los elementos utilizados por la electrónica digital, en específico las
compuertas lógicas. Sus análogos son los llamados elementos de decisión
definidos de la siguiente manera:

Definición. Un elemento de decisión es un objeto consistente de un cuerpo


central, un cable de longitud finita conectado llamado salida, y cualquier numero
de cables de longitud finita conectados llamados entradas. En cada instante cada

34
entrada y la salida tienen un valor de 1 ó 0, y el valor de la salida es una función
de verdad de los valores de entrada.

Figura 3.1.a Elementos de decisión de las redes de transductores binarios.

Figura 3.1.b Ejemplo de una red de transductores binarios.

Adicionalmente a esto se considera un elemento de retardo y ciertas reglas para


la construcción de estas redes.

35
Aunque la representación de operadores y arreglos lógicos muestra ciertas
ventajas por su similitud con las metodologías electrónicas, el problema con este
esquema es el que sus elementos forman parte de la estructura de un proceso, y
no son procesos independientes. Aunque cada elemento de decisión opera sus
entradas con una función lógica y regresa un resultado, se considera instantáneo
a menos que un elemento de retardo sea incluido en el arreglo.

Esto se puede representar por medio de la LDT aunque su potencial no es


utilizado completamente. La idea de la representación de procesos por medio de
la LDT lleva a tomar en cuenta el concepto de elemento de decisión y los
siguientes puntos:

• el sistema debe ser fragmentado en procesos simples o atómicos (estrategia


de dividir y vencer);
• dichos procesos puedan ser utilizados para expresar procesos más complejos;
• la temporalidad debe ser parte del funcionamiento del proceso y por lo tanto del
sistema;
• la respuesta de los procesos atómicos deberá ser binaria.

Estas consideraciones pueden en algún momento sugerir el uso de


microprocesadores aunque ello implica dejar a un lado la idea de simplicidad.

Por otra parte la investigación de nuevas tecnologías ha dado como resultado


elementos de procesamiento, análogos a cierta clase de células de nuestro
organismo llamadas neuronas.

Sus equivalentes desarrollados se conocen como neuronas artificiales y para el


objetivo de este trabajo han sido seleccionadas por cumplir su marco formal con
las especificaciones anteriores de las que se tienen las siguientes razones:

• homogeneidad en cuanto a su estructura funcional a nivel individual;


• su funcionamiento individual y colectivo implica un contexto temporal;
• gran conectividad entre estos elementos y alto grado de paralelismo;
• implementación de hardware (electrónica analógica) como de software
(programas) .

El contenido de este capítulo se enfoca a definir estos elementos de


procesamiento y las implicaciones que tiene su representación por medio de la
LDT. Bajo este marco se definen los operadores lógicos en base a neuronas
artificiales, y se hace un estudio de las características y propiedades de las redes
neuronales en base a la conectividad de sus elementos.

36
3.2 Teoría de las neuronas artificiales.

Para conocer la estructura y el funcionamiento de los elementos de


procesamiento conocidos como neuronas artificiales, es necesarios plantear
(aunque sea de manera breve) los conocimientos en los que se fundamentan, los
cuales pertenecen al área de la biología y en específico a una especialidad
llamada neurobiología. El estudio de las células que componen el sistema
nervioso de un ser vivo ha permitido el desarrollo de estructuras capaces de
desempeñar funciones equivalentes a las de las neuronas biológicas.

En esta sección se presentan algunas de las principales ideas relacionadas a las


características de las neuronas biológicas, las cuales son aplicadas a los modelos
artificiales, y en específico se plantea el modelo MacCulloch & Pitts para el
desarrollo de este trabajo.

3.2.1 La neurona biológica.


Así como los tejidos de un organismo animal (ej. la piel) están formados por
células, el sistema nervioso no es la excepción. Las células que lo conforman son
llamadas neuronas o células nerviosas, las cuales se encargan de las actividades
características del sistema nervioso central como la transmisión de impulsos
nerviosos o la elaboración de información sensitiva (adicionalmente existe otro tipo
de células llamadas neurogliales o gliales que al parecer tienen que ver con el
soporte de las neuronas y su nutrición) [23].

Aunque la fisiología de una neurona varía dependiendo del tipo de función que
desempeñe, por lo general pueden distinguirse en su morfología sus componentes
típicos (figura 3.2):

• Dendritas. Zona que responde a un tipo de estimulación (recepción de


impulsos nerviosos).

• Cuerpo celular (soma). Es donde se localizan los principales sistemas


bioquímicos de síntesis, secreción y transporte de sustancias que requiere la
célula para su funcionamiento (centro metabólico).

• Axón. Estructura que conduce el impulso nervioso sin decremento.

• Sinápsis. Puede considerarse como los puntos de contacto entre neuronas,


que puede tener una función excitadora o inhibitoria.

37
Figura 3.2 Esquema de la neurona biológica.

Figura 3.3 Unión sináptica.

Durante el estudio del sistema nervioso de varios tipos de organismos, se han


diferenciado varias clases de neuronas en cuanto a su morfología (figura 3.4),

38
donde también existen diferencias en cuanto a la especialización en aspectos
tales como la transformación de estímulos dendríticos en potenciales de acción a
lo largo de sus axones (células neurosensoriales), la detección de cambios en la
temperatura o deformación mecánica (células neurosensitivas) o el control de
músculos (células neuromotoras).

Una forma simple de asimilar el funcionamiento de la neurona es la mecánica de


estímulo-respuesta, donde se produce una reacción al incitar por medio de algún
mecanismo a un objeto a cambiar de estado. En este caso el estímulo se logra por
medio de impulsos nerviosos, que no son otra cosa que señales eléctricas (o
diferencias de potencial eléctrico) producidas por reacciones químicas en las
uniones sinápticas y el soma, lo que provoca que la neurona genere un nuevo
impulso o respuesta, que viaja a través del axón. Una referencia más completa
sobre todo el proceso fisiológico de la neurona puede encontrarse en [23].

Figura 3.4 Tipos de neuronas. Morfología de las neuronas y las células neurosensoriales. (a)
células neurosensoriales olfatorias, (b) células neurosensoriales somestésicas, (c) neurona bipolar
(d) neurona motora multipolar, (e) interneurona.

39
3.2.2 La neurona artificial.

Basado en los elementos que forman parte de la morfología de la neurona


biológica, así como sus principios de funcionamiento, es posible plantear el
modelo de su equivalente artificial.

La neurona artificial se define en [12] y [19] como una unidad de procesamiento


que consta de cuatro partes:

- Componente receptor. Es la parte de la neurona a donde llegan una o varias


señales de entrada x i , que generalmente provienen de otras neuronas y que son
atenuadas o amplificadas por un factor de peso correspondiente w i , el cual
denota la fuerza de la conexión (sinápsis) entre dos neuronas. Las entradas o
conexiones pueden ser excitadoras o inhibidoras pero no ambas al mismo tiempo.

- Componente sumador (o integrador). Efectúa la suma algebraica del producto


de las señales de entrada (excitadoras e inhibidoras) y los factores de peso (o
suma ponderada), definida mediante la expresión:

S = ∑ xi ⋅ wi

S = ∑ E xc − ∑ In h

S = ∑Exci ⋅ wi − ∑Inhj ⋅ wj

La primera expresión define la función del sumador de forma general como la


sumatoria del producto de las entradas x de la neurona por sus pesos w. Las
siguientes muestran una división de esta operación dependiendo del tipo de
entradas que llegan a la neurona (excitadores o inhibidoras).

40
Figura 3.5 Esquema de la neurona artificial.

- Componente de la función activadora. Compara el valor obtenido del elemento


sumador contra una función no lineal de umbral para decidir si la neurona es o no
activada.

Figura 3.6 Funciones de respuesta (escalón,rampa y sigmoide).

- Componente de salida (axones). Produce una señal o respuesta dependiendo


del valor de comparación. La función que realiza este componente puede ser
complementada por la consideración de retardo del valor de salida, causado por
los nodos de Ranvier del axón de la neurona. Con base en la definición 2.9, dicho
retardo puede modelarse como un arreglo A de n celdas de memoria (donde n sea
equivalente a los instantes de retardo de la señal), que contenga el valor de salida

41
s producido por la neurona en el instante t en A1, y a medida que el tiempo avance
s se recorra de forma ascendente hasta que An=s=y en t+n (figura 3.7)

A A A
1 2 3
t t+1
x=1 --> Sumador/Comparador --> | 1 | 0 | 0 | --> y=An=0

t+1 t+2
x=0 --> Sumador/Comparador --> | 0 | 1 | 0 | --> y=An=0

t+2 t+3
x=0 --> Sumador/Comparador --> | 0 | 0 | 1 | --> y=An=1

Figura 3.7 Ejemplo del comportamiento de una neurona con un retardo de 3 instantes (n=3, será el
tamaño del arreglo). Suponiendo que los componentes sumador y comparador no afecten el valor
de entrada A1=x. Notese como con cada incremento en el tiempo, el valor contenido en A se
desplaza hasta alcanzar la posición An.

Esta definición es aplicable a modelos de neuronas tales como el de MacCulloch


y Pitts, integrador y disparo e integrador con fugas. Tomando en cuenta que el tipo
de problemas propuestos hasta ahora por medio de la lógica proposicional y de la
LDT han sido de carácter binario, es necesario que el modelo de neurona a utilizar
cumpla a su vez con este requisito.

El modelo de MacCulloch & Pitts se caracteriza por describir los cambios de


actividad de una neurona postsináptica en una escala de tiempo discreta,
considerando solo el total de sinápsis activas en el instante de registro para la
descripción del potencial integrador [19].

El funcionamiento de este modelo se basa en los siguientes puntos [8]:

1. La actividad de la neurona es un proceso todo o nada, o binario (basado en el


concepto de potencial de acción).
2. Un cierto número de sinápsis (>1) deben ser excitadas en un periodo de suma
latente para que una neurona sea excitada.
3. El único retraso significativo en un sistema nervioso es el retraso sináptico.
4. La actividad de cualquier sinápsis inhibitoria evita de manera absoluta la
excitación de la neurona en ese tiempo.
5. La estructura de las conexiones de la red no cambia con el tiempo.

42
Estos lineamientos son sintetizados en el siguiente algoritmo que describe el
funcionamiento de una neurona artificial McCulloch y Pitts, el cual es un caso
particular del planteado en [10].

Inicializar parámetros:

Definir señales excitadoras e inhibidoras (características).


Definir tiempo de simulación total.
Definir valor o función de umbral.
Definir tiempo de retardo.

Mientras (T≤ Tiempo de Simulación) hacer

Exc=Suma de las entradas excitadoras en el instante T.


Inh =Suma de las entradas inhibidoras en el instante T.

Calcular entrada total: Etotal = (Exc-Inh)

Comparar Etotal y el valor de umbral de la neurona:


Si Etotal > Umbral entonces
Respuesta de la neurona = 1
sino
Respuesta de la neurona = 0
Retardar la respuesta n instantes
Incrementar T

Fin Mientras.

* Cabe aclarar que de aquí en adelante se hace referencia al término de neurona


como análogo de neurona artificial con el fin de simplificar la terminología.

Aunque cada neurona tiene capacidades de procesamiento, su potencial


individual puede ser extendido por medio de interconexiones entre ellas. Las
topologías resultantes de este agrupamiento es lo que se conoce como redes
neuronales donde:

a. Cualquier neurona por sí misma es una red neuronal.


b. Si N1 y N2 son neuronas tales que al conectar la salida de N1 al componente
receptor de N2 se obtienen una red neuronal.

Bajo este contexto, la idea de utilizar la LDT para representar un conjunto de


procesos, y en específico desde este momento redes neuronales, hace necesaria
una revisión de las bases de la LDT con el objetivo de definir los conceptos
necesarios para que ambos marcos teóricos sean compatibles y aplicables.

43
3.3 Uso de neuronas artificiales para la LDT.

A causa de la estructura de las unidades de procesamiento seleccionadas para


este trabajo, se hace necesario un replanteamiento de la LDT en función de las
características de las neuronas artificiales. Esto implica ampliar la notación hasta
ahora usada y definir cual es el papel que los componentes neuronales adoptarán
mediante su representación por medio de la LDT.

Para empezar se representará un proceso cualquiera por medio de una variable


proposicional dependiente del tiempo de la forma (notación definida en el capítulo
anterior)

P(t)

y en particular un elemento de procesamiento neuronal se representará como

N i (t )

tal que indique el estado de salida de una neurona en un instante t.

Para simplificar el análisis de una red neuronal por medio de la LDT los valores
de los pesos w i de toda neurona serán unitarios, de modo que las entradas de
una neurona sean los únicos valores tomados en cuenta (por lo menos por el
momento). Esta restricción simplifica por mucho los cálculos de las respuestas en
las neuronas además de su representación simbólica.

Con respecto a la temporalidad de cada unidad de procesamiento, estará


definida por cierto número de retardos, que será equivalente al tiempo de
respuesta (o procesamiento) de cada neurona. Así la expresión

Dn Ni (t ) = Ni (t + k ) , k=1,2,...

será la descripción del estado de una neurona con un tiempo de respuesta de n


instantes.

Este tiempo puede ser interpretado como el retraso sináptico de la neurona, o en


otro contexto como la duración del procesamiento de los valores de entrada.

Por otro lado se tiene el umbral de disparo de la neurona (que es el valor máximo
que puede adoptar la función de activación de la neurona), el cual condiciona el
resultado del elemento sumador a superar un valor limite para que la neurona
responda. Esta condición no estaba originalmente planteada en la LDT pero puede
ser acoplada por medio de los siguientes pasos:

44
1. Sea u (un numero entero) el valor del umbral de la neurona N i .
2. Si el valor obtenido por el componente sumador de las entradas de la neurona
x o (t ), x1 (t ),..., x n (t ) es mayor que el rango de valores (a , b) establecido por u,
entonces N i (t + k ) se activará.

Este tipo de consideraciones nos llevan a definir el término lógica de umbrales


como el proceso de comparar un valor de entrada con un límite para obtener un
valor de verdad.

Adicionalmente es necesario tener una representación de lo anterior por lo que


se plantean las siguientes opciones:

- N i ,u (t ) . Donde i es el identificador de la neurona y u su umbral. Esta notación no


es conveniente pues existen representaciones que utilizan (i,u) de forma que i sea
el identificador de la neurona y u la capa en la que se encuentra.

- N i (t , u) . En este caso el umbral puede causar confusiones con los términos que
definen los instantes de tiempo, sobre todo si la notación temporal es ampliada.
- N i n (t ) . Donde el exponente n es el umbral de la neurona. La ventaja de manejar
de esta manera el valor del umbral es que no hay ninguna definición en la LDT
que ocupe este lugar en la notación. Además debe tomarse en cuenta que el
umbral no solo es un valor, sino un rango de valores expresados por la pareja
ordenada (a,b), siendo a el limite inferior y b el limite superior del umbral, por lo
que bastará sustituir la pareja ordenada en n.

3.4 Representación de la lógica proposicional y la LDT con redes


neuronales.

Toda la notación y metodología adicional que implica la combinación de la LDT y


las redes neuronales ahora serán aplicados, primero a la representación de la
lógica proposicional y luego se extenderá a la LDT.

Un proceso definido por una red neuronal tiene la capacidad de ser ajustados de
manera que sea posible obtener equivalencias entre la respuesta de la red y las
tablas de verdad de los operadores lógicos.

Las redes neuronales serán representadas por grafos donde los arcos
representan las conexiones entre las neuronas de la red. Dichas conexiones
tienen en su extremo final círculos pequeños. Los círculos rellenos representan las

45
conexiones excitadoras, y los vacíos las inhibidoras. Los cuerpos de las neuronas
son representados por círculos más grandes que contienen el valor de umbral de
la neurona. La salida está expresada por un arco adicional.

Figura 3.8 Representación de un elemento de procesamiento neuronal.

Figura 3.9 Representación de una red neuronal.

46
3.4.1 Representación de los operadores de la lógica
proposicional.
Considérese primero a las neuronas como procesos instantáneos (o como se
planteó anteriormente en términos de la LDT, en donde el tiempo no cambia).

Por ejemplo, en el caso de una neurona N1 con una sola entrada x1 de tipo
excitadora (Exc) se tiene que al comparar el resultado del sumador con el umbral,
la respuesta de la neurona es la misma que la de la entrada (elemento neutro).

i. Elemento neutro.
- Tipo de entrada : Exc
- Valor de Umbral : 1

x1 Sumador N1
1 1 1
0 0 0

Cambiando las condiciones del umbral y los tipos de entrada se pueden obtener
las siguientes funciones:

ii. Tautología.
- Tipo de entrada : Exc
- Valor de Umbral : 0

x1 Sumador N1

1 1 1
0 0 1

iii. Antitautología.
- Tipo de entrada : Inh
- Valor de Umbral : 1

x1 Sumador N1

1 -1 0
0 0 0

47
iv. Negación.
- Tipo de entrada : Inh
- Valor de Umbral : 0

x1 Sumador N1

1 -1 0
0 0 1

Figura 3.10 Implantación de operadores unarios con neuronas.

Estos resultados pueden ser ampliados conforme aumenta el número de


entradas de N1. Para el caso de que la neurona tenga dos entradas [x1,x2], se
pueden generar respuestas similares a las de los operadores lógicos. A
continuación se presentan las configuraciones neuronales equivalentes. Cabe
mencionar que se utiliza la notación en ingles (and, or, not, etc.) para resaltar que
el resultado se ha obtenido tras la aplicación de un proceso y resumir la
descripción de cada operador.

a. Or (|) (Umbral = 1)

x1 x2 S=Exc(x1,x2) N1

0 0 0 0
1 0 1 1
0 1 1 1
1 1 2 1

48
b. NOr (Umbral = 0)

x1 x2 S=Inh(x1,x2) N1

0 0 0 1
1 0 -1 0
0 1 -1 0
1 1 -2 0

c. And (&) (Umbral = 2)

x1 x2 S=Exc(x1,x2) N 1

0 0 0 0
1 0 1 0
0 1 1 0
1 1 2 1

d. NAnd (Umbral = -1)

x1 x2 S=Inh(x1,x2) N1

0 0 0 1
1 0 -1 1
0 1 -1 1
1 1 -2 0

Siguiendo con el análisis de las redes de una sola neurona, es conveniente tratar
de ampliar los resultados obtenidos al caso general donde se tenga un numero n-
ésimo de entradas a la neurona, sobre todo en los operadores binarios.

Sea la neurona N j con n entradas, donde p son excitadoras y q son inhibidoras, y


el valor de umbral es u.

S = Exc(e1,...,ep) - Inh(i1,...,iq) ; n = p+q

49
Figura 3.11 Implantación de los operadores lógicos con neuronas.

Los siguientes resultados pueden ser útiles.

I. Si S≥u , la neurona dispara.

II. Si todas las entradas se encuentran en estado alto (1) y:


a. Si p=q , S = 0.
b. Si p>q ó p<q , S = p-q.
c. Si p=0 , S = -q.
d. Si q=0 , S = p.

III. Si todas las entradas se encuentran en estado bajo (0) y:


a. Si p=q , S = 0.
b. Si p>q ó p<q , S = 0.
c. Si p=0 , S = 0
d. Si q=0 , S = 0.

IV. Si por lo menos r de p y s de q entradas se encuentran en estado alto y:


a. Si r=s ó r>s ó r<s , S = r-s.
b. Si s=0 , S = r.
c. Si r=0 , S = -s.
d. S≥u.

V. Si a lo más r de p y s de q entradas se encuentran en estado alto y:


a. Si r=s ó r>s ó r<s , S = r-s.
b. Si s=0 , S = r.
c. Si r=0 , S = -s.
d. S≤u.

50
Para cada uno de los operadores se tienen las siguientes generalizaciones.

a.1 Or. Si el numero de entradas n≥2 , por (II.b) y (IV.a) tal que p>q para que S sea
positiva, y un valor de umbral u=1.

b.1 Nor. Si el numero de entradas n≥2 , por (II.b) y (IV.a) tal que p<q para que S
sea negativa o cero, y un valor de umbral u=0.

c.1 And. Si el numero de entradas n≥2 , por (II.d) y (IV.b) tal que q=0 para que S
sea positiva, y un valor de umbral u=p ó u=r. Para el caso de u=r debe referirse
como a lo más r de p entradas (un operador de a lo más r entradas activadas).

d.1 NAnd. Si el numero de entradas n≥2 , por (II.c) y (IV.c) tal que p=0 para que S
sea negativa, y un valor de umbral u=1-q ó u=1-s. Para el caso de u=1-s debe
referirse como a lo más s de q entradas.

3.4.2 Representación de los operadores de la LDT.

Adaptar los resultados anteriores a la LDT es simple, si se siguen los siguientes


pasos:

• Las neuronas utilizadas tendrán una respuesta al menos un instante después


con respecto a sus entradas.

• Transformar las variables proposicionales en variables proposicionales


dependientes del tiempo.

x1 , x 2 ,... x n → x1 (t), x 2 (t),..., x n (t)

• La respuesta de las neuronas N i debe transformarse a su forma N i (t ) . Para


ello debe tomarse el factor de retraso de cada neurona y su umbral.

Ni → D k N i u (t ) = N i u (t + k )

• Expresar la respuesta de cada neurona en términos de sus entradas y la clase


a la que pertenecen.

u
N i (t + k ) = ( Exc( x1 (t ), x 2 (t ),...) − Inh( y1 (t ), y2 (t ),...))

51
Aquí Exc e Inh representan las sumatorias de las entradas excitadoras e
inhibidoras de la neurona.

Como ejemplo de esto, sea la representación neuronal del operador


proposicional de conjunción (&). Como el proceso ejecutado por la neurona para
generar una respuesta es el mismo si el tiempo está relacionado o no, si el factor
de retraso es de un instante se tiene

x1 , x 2 --> x1 (t), x 2 (t)


N1 --> N1 (t+1)
2
N 1 (t+1) = (Exc [ x1 (t), x 2 (t)])
2
N 1 (t+1) = ( x1 (t) & x 2 (t))

donde t es el instante inicial y (t+1) es un instante después donde la neurona


genera su respuesta.

Por lo tanto los operadores definidos para la lógica proposicional son válidos
también para la LDT, aunque con la diferencia de la temporalidad, por lo que las
equivalencias entre operadores son las siguientes:

Lógica proposicional LDT

i. Elemento neutro. Retraso (delay).


ii. Tautología. Siempre encendido.
iii. Antitautología. Siempre apagado.
iv. Negación. Negación con retraso.

a. Disyunción. Disyunción con retraso.


b. Disyunción negada. Disyunción negada con retraso.
c. Conjunción. Conjunción con retraso.
d. Conjunción negada. Conjunción negada con retraso.

3.5 Representación de procesos simples en el tiempo.

Tras haber definido los operadores de la LDT por medio de sistemas de una
neurona, el próximo paso es el estudio de sistemas con más de una neurona. Aquí
se discuten ciertos casos que se encuentran comúnmente en la estructura de casi
toda red neuronal, así como su comportamiento. Este es el caso de la conexión
serial y paralela de neuronas, y configuraciones con retroalimentación. A esto se
agrega la consideración de un nuevo tipo de entradas de modo que estás también
tengan un factor de temporalidad. Esta nueva clase de entradas serán las señales.

52
3.5.1 Configuraciones en serie y paralelo de neuronas .

Es un hecho que el número de topologías de redes neuronales posibles es


infinito (por lo menos a primera vista), y la cuestión es si la LDT como ha sido
definida hasta el momento tiene la capacidad de representar dichos arreglos. Por
lo tanto para empezar sea el subconjunto de redes neuronales que se distingue
por la condición de que sus elementos tienen conexiones solo con los elementos
que les suceden y no con ninguno previo en la red.

Figura 3.12 Configuraciones serial y paralela de neuronas.

Un caso sencillo es el de dos neuronas conectadas de manera consecutiva figura


(3.13) tal que la salida de la primera es la única entrada de la segunda. La
representación simbólica de tal red está dada por

Nn1(t+i) = Exc (x1(t),x2(t))


Nn2(t+j) = Nn1(t+i)

Figura 3.13 Red de dos neuronas consecutivas.

53
Si bien para este tipo de arreglos el procedimiento es similar, la complejidad de
representación aumenta al tener como entradas a una neurona las salidas de
otras. En el caso expuesto en la figura (3.14) la expresión resultante está dada por

Nn1(t+1) = (Exc (x1(t) , x2(t)))


Nn2(t+2) = (Exc (Nn1(t+1)))
Nn3(t+2) = (Inh (Nn1(t+1)))
Nn4(t+3) = (Exc (Nn2(t+2) , Nn3(t+2)))

Si se quisiera separar a las neuronas en bloque correspondientes según su orden


en el proceso (capas), la expresión estaría dada por

Nn1,1(t+1) = (Exc (x1(t) , x2(t)))


Nn1,2(t+2) = (Exc (Nn1,1(t+1)))
Nn2,2(t+2) = (Inh (Nn1,1(t+1)))
Nn1,3(t+3) = (Exc (Nn1,2(t+2) , Nn2,2(t+2)))

donde el primer numero del subíndice de N indica el identificador de la neurona en


la capa, y el segundo la capa referida.

Figura 3.14 Red de cuatro neuronas.

Para obtener el máximo provecho de lo expuesto en cuanto a la representación


de los operadores lógicos en la sección anterior, supónganse los valores de los
umbrales de N1,...,N4 como (1,0,1,2) respectivamente. Con ello es posible
establecer si las neuronas están comportándose como operadores de la LDT. La
expresión se traduce entonces en

N1(t+1) = (x1(t) | x2(t))


N2(t+2) = (N1(t+1))
N3(t+2) = (¬N1(t+1))
N4(t+3) = (N2(t+2) & N3(t+2))

54
puesto que en t+2 existen 2 retardos (uno por cada neurona en ese instante) al
reducir la expresión se considera como uno solo (puesto que ambos elementos
procesan al mismo tiempo y tardan lo mismo), por lo que la respuesta de la red
está dada por

N2(t+2) = D ( N1(t))
N3(t+2) = D (¬N1(t))
N4(t+3) = D (D² N2(t) & D² N3(t))

N4(t+3) = D (D² ((x1(t) | x2(t)) & ¬(x1(t) | x2(t))))


N4(t+3) = Dn((x1(t) | x2(t)) & ¬(x1(t) | x2(t))) ; n=3

3.5.2 Representación de la autosinápsis.

El siguiente caso es el de redes neuronales cuyas conexiones entre sus


elementos tienen como característica particular que, por lo menos uno de los
impulsos de entrada de una neurona proviene de sí misma o de otra neurona que
actúa después que la primera.

Supóngase la configuración de la figura (3.15) donde x(t) es una entrada externa


y la otra entrada a la neurona es la respuesta de N1. Su representación está dada
por la expresión

N1 (t+1) = Exc (x(t), N1(t))

Figura 3.15 Autosinápsis de una neurona a sí misma.

Esto denota claramente un proceso recursivo, por lo menos en la estructura de la


expresión obtenida al ser N 1 parte de su definición.

Esta comparación no es completamente exacta, sobre todo si se considera que


en un proceso recursivo existe una condición de salida (o de paro), tal que este se
detenga. En una neurona esto no ocurre pues los valores del proceso así como su
estado en el tiempo, solo determinan el tipo de respuesta del elemento. La única

55
forma de que un proceso definido por medio de neuronas termine, es que no
existan entradas que alimenten de datos a la red o que el instante de tiempo en el
que se encuentre el sistema sea mayor al determinado en un principio para sus
funciones.

La forma para determinar la respuesta de un arreglo con retroalimentación puede


representarse de la siguiente manera:

a) Para el caso planteado por la figura (3.15) y variando el valor de umbral de N1


se tienen los siguientes resultados:

Para N1 (t) = 0

Umbral = 0
x(t) N1 (t+1) N1 (t+2)
0 1 1
1 1 1

Umbral = 1
x(t) N1 (t+1) N1 (t+2)
0 0 0
1 1 1

Umbral = 2
x(t) N1 (t+1) N1 (t+2)
0 0 0
1 0 0

Aquí se dan dos resultados importantes:

i) La entrada de autosinápsis tiene valor de cero en el instante inicial.


ii) La respuesta real de este arreglo con retroalimentación, se da un instante
después de que la neurona evalúa sus entradas en el instante inicial. Por lo que
si N1 responde en t+1 la respuesta real relacionada con la respuesta de la
neurona se dará en t+2, pues por lo anterior, el valor de la salida de la neurona
en el instante t es cero. Esto esta dado por la expresión

N1 (t+1) = Exc(x(t), N1(t))


N1 (t+2) = Exc(x(t+1), N1(t+1))

donde N1(t)=0.

b) Para el caso de un arreglo conformado por N1 y N2, donde N1 esta conectada a


N2 de forma consecutiva y la salida de N2 es una de las entradas de N1 (figura
3.16) tal que

56
N1 (t+1) = Exc(x(t), N2(t+2))
N2(t+2) = Exc(N1 (t+1))

Figura 3.16 Retroalimentación entre neuronas.

3.5.3 Uso de señales como valores de entradas en las neuronas.

Hasta el momento se han utilizado los valores de 0 y 1 para realizar las


evaluaciones en las neuronas. Una forma de ampliar estos resultados es dando un
carácter temporal a los valores con los que se obtiene la respuesta de los
elementos de procesamiento.

Así en vez de considerar los valores de verdad como constantes y estáticos,


estos variarán con respecto al tiempo. La representación de esta dependencia
estará expresada por la forma funcional s(t), en donde s implica el uso de una
señal que varía en el tiempo.

Esto no es nuevo en la notación, pues las entradas de las neuronas están


denotadas por x1(t),...,xn(t). La particularidad de los valores de las entradas hasta
ahora usados es que han sido constantes con respecto al tiempo, es decir

s(t) = constante
por ejemplo
x1(t) = 0 ; x2(t) = 1

Este es el caso más sencillo de señal entrada, pero ¿qué pasa cuando las
señales no son continuas en el tiempo? Esto implica una variación en el valor de la
señal, la cual puede ser periódica (f(t) = f(t+T);donde T es el periodo) o no.

Estos cambios deben tomarse en cuenta al definir la función que cada neurona
desempeña en la red, con el fin de establecer las condiciones para un
comportamiento correcto del sistema, por ejemplo:

57
• que tipo de señales de entrada pueden utilizarse;
• cual es el rango de tiempo entre cada instante (para discretizar la señal);
• si las señales de entrada deben de estar sincronizadas o no;
A estas especificaciones se agregan a continuación algunas otras con respecto
al diseño de sistemas dependientes del tiempo.

3.6 Consideraciones para el uso de neuronas artificiales en el


diseño de sistemas.
Así como en electrónica digital se hace uso de un conjunto pequeño de
elementos (como compuertas lógicas) para el diseño de circuitos más complejos,
dicho enfoque puede ser aplicado de la misma manera a la serie de operadores
dependientes del tiempo identificados.

Cabe mencionar que las configuraciones mostradas hasta el momento no son


únicas para cada función, puesto que pueden existir configuraciones de más de
una neurona que realicen la misma operación.

Estas topologías de alguna manera son tautologías de los arreglos más sencillos,
aunque la diferencia obvia es la temporalidad de ambos arreglos. Mientras que
una neurona causa que su respuesta se dé por lo menos un instante después que
sus entradas, los arreglos de más de una neurona causan que el incremento en el
tiempo de respuesta sea proporcional al numero de elementos de procesamiento
conectados de manera consecutiva.

Aunque las especificaciones de diseño del sistema impliquen que la respuesta se


dé después de cierto tiempo, al momento de implementar esto es preferible
adoptar el operador (equivalente neuronal) más sencillo y añadir retardos, a incluir
una tautología del mismo que reste claridad a la configuración de la red.

Por otro lado se tiene el factor de paralelismo entre unidades de procesamiento,


lo que permite que varias tareas se ejecuten en un mismo intervalo de tiempo.

La retroalimentación puede aplicarse para la activación de un evento después de


que otros han sido activados cierto número de instantes después, o la verificación
de que un proceso está efectuándose de manera satisfactoria. Esto da como
resultado un mecanismo de activación de procesos y de alarma. Su uso debe
quedar restringido por el momento a este tipo de tareas, para no modificar la forma
en que responda el sistema con otro tipo de configuraciones.

58
Figura 3.17 Ejemplos de configuraciones equivalentes de neuronas.

Al modelar un sistema con estas técnicas y representarlo simbólicamente es


recomendable:

• hacer una representación gráfica del modelo;


• tener una descripción de la función de cada neurona;
• tratar que la descripción de las neuronas que dependan de elementos
anteriores se base en elementos próximos;
• identificar que neuronas generan la respuesta del sistema;
• simplificar la notación de las neuronas usando el operador D en lugar de
incrementar el numero de instantes en las variables;
• simplificar la notación de las neuronas que coinciden con las configuraciones de
funciones lógicas.

59
3.7 Comentarios.

La extensión de la LDT podría haber ido más lejos si se hubiesen tomado en


cuenta partes de la neurona como los pesos o conexiones dendriticas, las
funciones de disparo o hasta un modelo diferente de neuronas (como el de
integrador o integrador con disparo) con lo que hubiera aumentado de igual
manera su complejidad. La sola consideración de los umbrales es por el momento
suficiente para el análisis desarrollado.

Para ampliar la información sobre otros modelos de neuronas consulte


[PEREZ95].

Hasta el momento todo el desarrollo del trabajo ha estado orientado a aprovechar


la tecnología de redes neuronales y la teoría de LDT, para la descripción de
procesos. Los resultados presentados hasta el momento se han obtenido de la
manipulación directa de los valores de las neuronas, con el fin de mostrar su
funcionamiento, así como el comportamiento de los arreglos más simples .

En conjunto se tienen resultados que pueden servir de criterio para el diseño de


sistemas por medio de neuronas (por lo menos de neuronas binarias).

Por último, con respecto a la configuración de autosinápsis puede decirse que,


por lo menos a nivel esquemático, es similar a la retroalimentación, y puede
intentarse darle aplicación en la activación de eventos cierto numero de instantes
después, o la verificación de que un proceso está efectuándose de manera
satisfactoria.

60
Capítulo 4.

Diseño y simulación de
sistemas dependientes del tiempo.

“Para el científico como individuo, incluso la valoración parcial de


esta unión entre el hombre y el proceso histórico requiere una
visión anticipatoria e imaginativa de la historia, que resulta difícil y
que es sólo alcanzable limitadamente. Siempre tenemos que
ampliar al máximo la potencia de nuestra imaginación".

Norbert Wiener.

4.1 Introducción.

El potencial de aplicación que poseen las redes neuronales en conjunto con la


LDT es explorado en este capítulo, bajo la premisa de retomar algunos diseños de
circuitos lógicos convencionales, para diseñar algunos sistemas con base en
ambas teorías, con el fin de entender como desarrollarlos, así como su
funcionamiento.

La idea es plantear y desarrollar algunos problemas cuya, solución esté


relacionada al uso de elementos lógicos. Con ello se busca:

• establecer las implicaciones de la consideración del tiempo como parte del


análisis de un sistema;
• ver como las señales de entrada, ya sean constantes o variables en el tiempo,
afectan la respuesta del sistema;
• entender la diferencia en cuanto a interpretación de los resultados con respecto
a un modelo estático;

La manera de obtener dichos resultados se basará en la siguiente serie de


pasos:

• Utilizar las técnicas de diseño de circuitos digitales para obtener una solución
basada en arreglos de compuertas lógicas (también llamados circuitos
combinacionales).

61
• En base a lo anterior, obtener redes neuronales equivalentes.
• Describir el funcionamiento de las neuronas con la LDT.

Las formas en que las soluciones son planteadas difieren únicamente en su


implementación, por lo que el modelo original servirá de referencia para establecer
la veracidad de los resultados obtenidos.

Los casos de estudio que se plantean abarcan configuraciones comunes de


circuitos lógicos, así como la solución de algoritmos. Su descripción es la
siguiente:

i. Sumador de dos bits.


ii. Codificación y decodificación de datos.
iii. Celdas de memoria (flip-flops).
iv. Control de eventos.

El desarrollo de estos problemas estará enfocado a demostrar que al


implementar circuitos digitales básicos con neuronas artificiales, entonces es
posible la construcción de sistemas aún más complejos, así como la forma de
aplicar las teorías de la LDT, las redes neuronales y las técnicas para diseño de
sistemas digitales, en casos ya existentes.

El objetivo de este capítulo es el de plantear el desarrollo de una herramienta que


permita verificar los diseños equivalentes de los casos de estudio propuestos.
Para ello se planteará la estructura del funcionamiento de un programa de
simulación de redes neuronales, para después aprovechar sus capacidades para
obtener resultados cuantitativos de las redes neuronales equivalentes a cada uno
de los circuitos que se han planteado como caso de estudio.

4.2 Simulación de redes neuronales dependientes del tiempo.

La justificación para el desarrollo de un programa de simulación de redes


neuronales dependientes del tiempo, se basa en la necesidad de simplificar las
actividades de diseño, implementación y obtención de resultados de sistemas de
neuronas, cuyos cálculos manuales pueden volverse tediosos y complicados a
medida que la estructura de las redes crece en numero de elementos y de
conexiones.

62
Además existe un factor de complejidad adicional, relacionado a la forma en que
se razona al efectuar un procedimiento de cálculo, pues por lo general la mayor
parte de estos están estructurados de forma secuencial, por lo que es poco
probable que la ejecución de cálculos que requieran de una atención simultánea,
puedan ser precisos sin un entrenamiento especializado.

Además, debe quedar claro que el objetivo del desarrollo de sistemas


dependientes del tiempo será el de concentrar la mayor parte del esfuerzo
intelectual a las consideraciones teóricas y prácticas del problema.

4.2.1 Análisis y Diseño.

El objetivo del sistema de simulación de redes neuronales dependientes del


tiempo, será definir la estructura de redes de neuronas artificiales que dependan
del tiempo (expuestas en el capítulo 3) y calcular la respuesta de sus elementos
en cualquier instante durante la duración del periodo de simulación.

La definición de tales sistemas deberá tomar en cuenta la declaración de


configuraciones seriales, paralelas y de autosinápsis (retroalimentación). Toda
configuración definida en el simulador podrá ser reutilizable, por lo que deberá
contar con la capacidad de almacenar todos los parámetros que permitan la
regeneración de las redes para posteriores evaluaciones y aprovechamiento.

El desarrollo del sistema de simulación estará enfocado sobre todo a plantear los
algoritmos fundamentales para el procesamiento de información, dejando para
trabajos posteriores todo lo referente a interfaces gráficas.

La representación de la arquitectura del sistema y la descripción de sus


componentes se hará en base al enfoque de la metodología orientada a objetos
(en específico la planteada por Coad y Yourdon), aunque la implementación este
codificada en un lenguaje estructurado como Pascal (apéndice A). Esta
"discrepancia" de criterios se ha dado a causa de no contar en el momento, con
los recursos necesarios para hacer el desarrollo con una herramienta más
apropiada. Sin embargo, es una buena oportunidad para demostrar a los puristas
que las metodologías que puedan usarse para la solución de problemas, no tienen
por que generar conflictos al usarse de forma combinada. De la misma manera
podría decirse que, como requerimiento adicional, lo óptimo para la implantación
del sistema sería una plataforma que tuviera capacidades de multiproceso y hasta
de tiempo real, pero a causa de las limitaciones que se tienen en el país al
respecto, el desarrollo esta planteado para computadoras personales
(secuenciales) por ser la plataforma más accesible que existe actualmente.

63
Para comenzar, es necesario identificar los componentes que formarán parte del
sistema de simulación. En el capítulo 3 se planteó a las neuronas artificiales como
los elementos de procesamiento a utilizar para el planteamiento de sistemas cuyo
comportamiento dependiera del tiempo. Sin embargo, surge la cuestión acerca de
como obtendrán las neuronas sus valores de entrada. Para ello será necesario
definir un nuevo componente que sea capaz de ser relacionado a las conexiones
sinápticas de las neuronas, tal que de los valores que produzca sean binarios.
Este componente será llamado generador de señales (GS). Además para poder
obtener los valores que produzcan estos elementos, se agregará un componente
que haga la función equivalente a la de un multimetro, cuyas puntas se colocan en
el lugar donde se precise obtener un valor. Este componente será llamado punto
de medición (PM).

A continuación se presenta la descripción de cada uno de estos componentes


como clases de objetos.

Clase : Neurona Artificial (NA).

Atributos.

x0,..xn Conexiones sinápticas (entradas)


w0,...wn Pesos
u Valor del umbral de disparo
d Tiempo de Retardo
dBuffer Bloque de memoria para simular el retardo de la señal.
y Respuesta (salida)

n Numero de entradas
id Identificador

Métodos.

neurona Crea una nueva instancia de la clase.


p:t Procesamiento de los valores de entrada
de la neurona en el instante t.
status:t Despliega los valores de la respuesta de la neurona en el instante t.

Clase : Conexión sináptica (CS).

Atributos.

64
tipo Tipo de conexión (excitadora o inhibidora)
fuente Fuente del valor de entrada.
valor Valor de entrada.

Métodos.

Clase : Generador de Señales (GS).

Atributos.

id Identificador.
tipo Tipo de señal a generar.
amp Amplitud de la señal.
fase Fase de la señal.
valor Valor de la señal generada.

Métodos.

Generador Crea una nueva instancia de la clase.


generaValor:t Genera un nuevo valor para el instante t.

Clase : Punto de medición (PM).

Atributos.

id Identificador.
fuente Identificador del elemento a medir.
valor Valor de entrada.

Métodos.

PuntoM Crea una nueva instancia de la clase.


obtenerValor Obtiene el valor del elemento que se esta midiendo.
mostrarValor Despliega el valor del punto de medición.

Con base en las clases definidas, plantear una clase de red neuronal sería una
limitación, puesto que solo es una colección de neuronas artificiales, y en este
caso, se deben relacionar los elementos de generación de señales y de medición.
Por lo tanto se definirá una clase llamada sistema dependiente del tiempo (SDT)
como una colección de neuronas artificiales, generadores de señales y puntos de
medición relacionados entre sí.

65
Clase : Sistema dependiente del tiempo (SDT).

Atributos.

conecciones Relaciones entre los elementos del sistema.

Métodos.

inicializar Crea un nuevo diccionario de conecciones entre los


componentes.
conectar:a con:b Crea una nueva relación entre componentes GS,NA,PM.
simularSDT Realiza el proceso de simulación de los componentes del
SDT.

La interacción entre los objetos planteados se muestra en el siguiente diagrama.

La interpretación del diagrama de la estructura de los objetos, es la siguiente:

a. Un PM es parte de un SDT.
b. Un GS es parte de un SDT.
c. Una NA es parte de un SDT.

66
d. Una CS es parte de una NA.
e. Una NA tiene por lo menos una CS y a lo más m CSs.
f. Un SDT puede no tener MPs o a lo más n MPs.
g. Un SDT puede no tener GSs o a lo más p GSs.
h. Un SDT puede no tener NAs o a lo más puede tener q NAs.
i. El modelo McCulloch y Pitts es una especialización de la clase NA.

Las especificaciones para crear, almacenar y regenerar cualquier objeto SDT


estarán dadas basadas en las definiciones del diccionario de datos de cada uno
de sus componentes. Dichas definiciones son:

Neurona Artificial = idNA + {x} + {w} + y + n + u + d

Conexión sináptica = [Exc|Inh] + [idGS|idNA] + valor

Generador de señales = idGS + [Patrónes de Señales] + valor + amp + fase

Punto de medición = idPM + [idGS|idNA] + valor

Exc = 1

Inh = 0

Las especificaciones de como esta información es almacenada, pueden ser


consultadas en el apéndice A.

Para lograr la simulación precisa de un objeto SDT, los eventos más importantes
que deben tomarse en cuenta son los disparos (o respuestas) de las neuronas, así
como la producción de valores por parte de los generadores de señales.

Hay que recordar que ambos eventos son simultáneos, por lo que cabe aclarar
que aunque a nivel de implementación su declaración sea secuencial, se
considerará que para cada intervalo de simulación su ejecución será paralela.

Esta consideración es necesaria para poder plantear soluciones validas a los


problemas que traten de ser resueltos con el simulador.

Así, el proceso de simulación de un SDT (implementado en el método


simularSDT) quedará definido entonces por el siguiente algoritmo

67
Mientras (T<=Tiempo total de simulación)
Obtener el valor de cada generador de señales
Obtener el valor de salida de cada neurona
Para las n neuronas de la red
Cada neurona procesa sus valores de entrada
Checar puntos de medición
Desplegar puntos de medición
Incrementar contador de tiempo T
fin Mientras

donde cada ciclo de la estructura MIENTRAS, representará un instante del tiempo


total de simulación Ts. Cada uno de los generadores de señales definidos
generará un valor para cada instante de la simulación, los cuales serán asignados
a las conexiones sinápticas a las que se encuentren relacionados. Inmediatamente
después se obtendrán los valores de salida de las neuronas del SDT, para no
causar conflictos en la estructura de retardo. Acto seguido, estos valores serán
asignados a las conexiones sinápticas a las que se haya relacionado a la neurona
como fuente de un valor de entrada. Ya actualizados los valores de entrada de las
neuronas se procede a ejecutar el procesamiento de cada una de ellas y se
actualiza su estructura de retardo. Después se procede a actualizar los valores en

68
los punto de medición para su despliegue, y por último se incrementa el valor
contador de tiempo en uno (reloj).

Por último, puede ser necesario obtener el desempeño que el simulador tiene
para una configuración específica, sobre todo a nivel de tiempo de procesamiento.
Para hacer un cálculo estimado del tiempo que requerirá la simulación de un SDT,
se tendrá, con base a la definición 2.6, que la duración d del intervalo entre los
instantes de Ts (tiempo total de simulación), estará en función de los tiempos
totales de los procesos de generación de señales Tgs, respuesta de los elementos
neuronales de procesamiento Tna y la medición de señales Tpm, donde dna, dgs
y dpm serán la duración de los procesos que efectúen los componentes del SDT,
que podrán determinarse en base a las capacidades de procesamiento del CPU
que se este utilizando.

d = Tgs + Tna + Tpm

dna = Tna1 + Tna2 + ... + Tnam

dgs = Tgs1 + Tgs2 + ... + Tgsp

dpm = Tpm1 + Tpm2 + ... + Tpmq

Tna = m * dna

Tgs = p * dgs

Tpm = q * dpm

Ts = n * d

A continuación serán desarrollados los casos de estudio planteados al principio


de este capítulo, con el fin de aplicar la teoría expuesta en los capítulos anteriores,
y en los cuales los resultados cuantitativos han sido obtenidos con ayuda del
sistema de simulación.

4.3 Sumador de dos bits.

El primer caso que se plantea, es la implementación de la operación aritmética


de la suma de dos dígitos binarios, la cual está definida como:

69
0+0=0
0+1=1
1+0=1
1 + 1 = 10

Mientras que las tres primeras operaciones generan solo un bit de salida, la
cuarta genera dos, donde el bit más significativo es llamado bit de acarreo, por lo
que es necesario considerar dos entradas y dos salidas binarias.

Con lo anterior, la operación puede representarse por medio de la siguiente tabla


de verdad.

Términos
x y C S Mínimos Máximos

0 0 0 0 m0 M0
0 1 0 1 m1 M1
1 0 0 1 m2 M2
1 1 1 0 m3 M3

Por medio de la técnicas para obtener la función de respuesta correspondiente a


una tabla de verdad en las formas de productos normalizados (términos mínimos)
o sumas normalizadas (términos máximos) descritas en [16], se tiene para el caso
de términos mínimos

f1 = C = xy = m3
f2 = S = x'y + xy' = m1 + m2

y para el caso de términos máximos

F1 = C = (x+y)(x+y')(x'+y) = M 0 * M 1 * M 2
F2 = S = (x+y)(x'+y') = M 0 * M 3

donde una de las reducciones posibles es

F1 = C = x(y+y')(x'+y)
C = x(x'+y) = xx'+xy = xy

F1 = C = xy
F2 = S = (x+y)(x'+y')

70
Lo anterior da como resultado las configuraciones de compuertas lógicas que se
muestran en la figura (4.1).

Figura 4.1 Implementación del sumador con compuertas lógicas.

Para representar lo anterior por medio de redes neuronales, en el caso de los


términos mínimos la configuración resultante es la que se muestra en la figura
(4.2)

Figura 4.2 Implementación del sumador con neuronas.

En el caso de que el tiempo sea estático la red (4.2) tiene una respuesta igual a
la del arreglo (4.1). Pero si se asume que la red es dependiente del tiempo su
resultado varía de forma significativa, pues mientras que el bit de acarreo es
generado un instante después, el resultado de la suma es generado varios

71
instantes después. Si se toma en cuenta, que cada neurona responde un instante
después de haber admitido un valor de entrada, se tiene

N1(t+1) = Exc (x(t),y(t)) {|}


N2(t+1) = Inh (x(t))
N3(t+1) = Inh (y(t))
N4(t+1) = Exc (x(t),y(t)) {&}
N5(t+2) = Exc (N1(t+1))
N6(t+2) = Exc (N2(t+1),N3(t+1)) {|}
N7(t+2) = Exc (N4(t+1))
S = N8(t+3) = Exc (N5(t+2),N6(t+2)) {&}
C = N9(t+3) = Exc (N7(t+2))

Si se considera que las entradas son constantes en el tiempo, llegará un


momento en el que la respuesta de la red será la deseada aunque con un retraso
considerable. Dicho retraso está dado por el bloque de neuronas encargadas de
generar el resultado de la suma, las cuales provocan que el bit S se genere dos
instantes después que el bit de acarreo.

En este caso, lo que se debe procurar es una respuesta uniforme en el tiempo,


es decir, que los datos resultantes sean generados n instantes después, pero de
manera simultánea. Esto es importante si se considera que las entradas de la red
solo duran el mínimo intervalo de tiempo, es decir un instante.

Una manera de lograr una respuesta uniforme en el tiempo, es el uso de retardos


en la red, con el fin de compensar el tiempo de respuesta de las neuronas. El
inconveniente de esta solución es, que si el diseño de la red (o el circuito) no es
óptimo, el incremento en el tiempo de respuesta no será el mejor.

4.4 Codificación y decodificación de datos.

En ocasiones la estructura de un sistema puede sugerir la transformación de sus


datos de entrada, de manera que se pueda seleccionar un proceso específico, o
para su conversión a una base numérica diferente. Se llamará decodificación a la
transformación que permite que un dato sea enviado a varios destinos, y
codificación a su proceso inverso.

Los ejemplos planteados se refieren, a la decodificación de un numero binario de


dos dígitos de manera que para cada uno de sus valores se active una de sus
salidas, y su proceso inverso. El funcionamiento de cada uno se específica en las
figuras (4.3 y 4.4), donde se ha derivado la expresión en términos mínimos y
máximos correspondiente a cada uno.

72
x y D0 D1 D2 D3

0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1

D0 = x'y'
D1 = x'y
D2 = xy'
D3 = xy

Figura 4.3 Circuito lógico decodificador de dos bits.

D0 D1 D2 D3 x y
1 0 0 0 0 0
0 1 0 0 0 1
0 0 1 0 1 0
0 0 0 1 1 1

x = D2 + D3
y = D1 + D3

73
Figura 4.4 Circuito lógico codificador de dos bits.

El equivalente neuronal de los circuitos anteriores esta dado por las siguientes
expresiones:

a. Decodificador.

N1(t+1) = Exc(x(t))
N2(t+1) = Inh(x(t))
N3(t+1) = Exc(y(t))
N4(t+1) = Inh(y(t))
N5(t+2) = Exc(D(N2,N4))
N6(t+2) = Exc(D(N2,N3))
N7(t+2) = Exc(D(N1,N4))
N8(t+2) = Exc(D(N1,N3))

Figura 4.5 Red neuronal decodificadora de dos bits.

74
b. Codificador.
N1(t+1) = Exc(D2(t),D3(t))
N2(t+1) = Exc(D1(t),D3(t))

Figura 4.6 Red neuronal codificadora de dos bits.

Al igual que el sumador de dos bits, el codificador y el decodificador deben


generar de manera simultánea su respuesta en las líneas de salida. De otra forma,
se obtendría un resultado que no sería generado en un instante específico, por lo
que no sería correcto por su incertidumbre temporal, y por lo tanto no sería de
utilidad.

Tal vez el único inconveniente de la solución obtenida de los equivalentes


neuronales, es que la respuesta del decodificador implicará un defasamiento en el
tiempo de un instante más con respecto a la codificación de los datos originales, lo
cual tendría que ser compensado probablemente con un elemento de retardo.

4.5 Elementos de memoria.

Hasta ahora los ejemplos que se han planteado solo se encargan de efectuar el
procesamiento de sus valores de entrada. Sin embargo son elementos que
carecen de memoria, pues su respuesta depende directamente de los estados de
sus entradas en ese momento.

Existen otras situaciones en que es necesaria la capacidad de almacenar


información, de manera que pueda usarse para influir en el futuro del
comportamiento del proceso. Para ello, es necesario un componente que cumpla
con esta función. Este es llamado un elemento de memoria, el cual se encarga de
almacenar información binaria, la cual en un tiempo dado indica el estado de un
proceso.

75
La unidad mínima de almacenamiento se denomina celda, la cual puede guardar
un bit. La condición que debe cumplir es la de tener dos condiciones internas
distinguibles, las cuales son llamadas condiciones de la celda. El estado de la
celda es indicado por la variable de estado y, que puede tomar valores de cero y
uno. Para cambiar el estado de la celda es necesaria una señal de entrada
[BOOTH].

Estos elementos pueden implementarse de varias maneras, una de las cuales es


el uso de componentes llamados flip-flops. Aquí se hará referencia en específico
al flip-flop RS (Reset-Set).

Su funcionamiento puede expresarse de la siguiente forma: si la entrada S recibe


un 1, activa el circuito al estado uno, mientras que al aplicar un 1 a la entrada R,
inicializa el circuito al estado cero.

S R Q Q'

1 0 1 0
0 0 1 0
0 1 0 1
0 0 0 1
1 1 0 0

Figura 4.7 Flip-flop RS. Implementación con compuertas NOR.

El equivalente neuronal de los circuitos anteriores esta dado por las siguientes
expresiones

76
N1(t+1) = Inh(S(t),N2(t))
N2(t+1) = Inh(R(t),N1(t))

Figura 4.8 Redes neuronales equivalentes a un flip-flop RS.

El resultado más importante de esta configuración (implementación del flip-flop


con Nor's) es que la respuesta de las neuronas no corresponde con los valores de
salida del flip-flop, como lo comprueban las siguientes sustituciones:

t t+1 t+2 t+3 t+4


R 0 0 1 0 1
S 1 0 0 0 1

N1(t) = N2(t) = 0

Sustituyendo los valores de R y S en las proposiciones que definen a N1 y a N2 se


obtienen los siguientes resultados:

N1(t+1) = 0
N2(t+1) = 1

N1(t+2) = 0
N2(t+2) = 1

N1(t+3) = 0
N2(t+3) = 0

N1(t+4) = 1
N2(t+4) = 1

N1(t+5) = 0
N2(t+5) = 0

Basado en la definición original de celda de memoria, puede tomarse parte de la


estructura del flip-flop como referencia para implementar una red que realice esta

77
función. Si por ejemplo, se mantiene la condición de que la celda de memoria
tenga dos entradas, y su contenido este especificado por una sola salida, puede
definirse el comportamiento de este elemento de forma similar a la del flip-flop RS:
si S esta en estado alto la respuesta será uno, y si R está en alto, la respuesta será
cero.

Tomando en cuenta lo mencionado en el capítulo 3, referente a las conexiones


de autosinápsis en las neuronas, se sabe que esta configuración mantiene
constante el estado de un elemento de procesamiento indefinidamente, lo cual
puede aprovecharse en este caso. Tómese el caso de una neurona con dos
entradas. Si una entrada de la neurona es excitadora y la otra retroalimenta a la
misma neurona, si x(t)≥u la neurona se mantendrá en estado alto a partir de t+1. Si
una entrada de la neurona es inhibidora y la otra retroalimenta a la misma
neurona, si u>0 la neurona se mantendrá en estado bajo a partir de t+1.
Aprovechando estos resultados, sea la neurona descrita por la expresión

N1(t+1) = Exc(S(t),N(t))+Inh(R(t))

donde si S=1, Q=1 y si R=1, Q=0; y para valores iguales de S y R el estado de la


neurona no es afectado.

Para N(t)=0 :

N(t+1) = 1 , si S=1
N(t+1) = 0 , si R=0

y para N(t)=1 :

N(t+1) = 1 , si S=1
N(t+1) = 0 , si R=0

lo que es equivalente a que el estado de la neurona cambiará a uno solo si S=1, y


cambiará a cero solo si R=1.

Para cualquier otro caso (S=R=0 ó S=R=1) el valor contenido por la neurona se
mantiene.

S R Q

0 0 X
1 0 1
0 1 0
1 1 X

78
Figura 4.9 Red neuronal equivalente a una celda de memoria.

Nótese que las líneas de retroalimentación influyen en que el estado actual del
proceso dependa de su estado anterior.

Una de las aplicaciones que puede tener este dispositivo es el de servir como
indicador (o bandera) de la ocurrencia de un evento determinado. Así el estado del
proceso no cambiará hasta que otra señal lo inicialice.

4.6 Control de eventos.

Por último se plantea un sistema para el control de eventos discretos. El caso de


estudio que se tomó es la regulación del tráfico en una calle de dos sentidos por
medio de semáforos. El objetivo es construir una red neuronal que se encargue de
generar los pulsos correspondiente para que los semáforos cambien su estado en
un instante dado.

Para ello es necesario definir la secuencia en la que dichos estados deben


aparecer. Sean SN y SS los semáforos norte y sur respectivamente, y cada uno
tiene como posibles estados V (verde), A (amarillo) y R (rojo). Durante los dos
primeros instantes SN estará en V y SS en R. En el siguiente SN cambiará a A
mientras SS continúa en R. Durante los dos siguientes instantes SN estará en R y
SS en V, y en el siguiente instante SS cambiará a A mientras SN continúa en R.

79
Figura 4.10 Algoritmo para el control de eventos de dos semáforos.

t SNV SNA SNR SSV SSA SSR

1 1 0 0 0 0 1
2 1 0 0 0 0 1
3 0 1 0 0 0 1
4 0 0 1 1 0 0
5 0 0 1 1 0 0
6 0 0 1 0 1 0

En contraste con los ejemplos anteriores el diseño se hará directamente con


neuronas, en vez de obtener primero un circuito combinacional. Según el algoritmo
se tiene una secuencia de cuatro eventos, donde cada uno genera una señal que
activa o desactiva los semáforos, la cual puede representarse como una
secuencia de retardos

N1(t+1) = x(t)
N2(t+2) = N1(t+1)
N3(t+3) = N2(t+2)
N4(t+4) = N3(t+3)
N5(t+5) = N4(t+4)
N6(t+6) = N5(t+5)

80
Figura 4.11 Red neuronal para el control de semáforos (primera versión).

donde x(t) es la señal de activación del sistema (su estado en t es uno y


subsecuentemente es cero). Las respuestas de las neuronas tienen la siguiente
correspondencia con los estados de los semáforos:

1 N1 → SNV,SSR
2 N2 → SNV,SSR
3 N3 → SNA,SSR
4 N4 → SNR,SSV
5 N5 → SNR,SSV
6 N6 →SNR,SSA

Si bien esto permite que se habiliten los estados de los semáforos en el instante
preciso ¿qué pasa con los otros estados? Es necesario generar también las
señales que deshabiliten los estados que en ese instante deben estar apagados,
por lo que el diseño planteado originalmente debe modificarse, tomando en cuenta
que estas señales inhibidoras se deben generar al mismo tiempo que las
respuestas obtenidas.

Para ello puede manipularse la respuesta de la neurona en el instante


correspondiente por medio de una negación. La neurona encargada de esta
función tendrá la característica de no tener un tiempo de retardo con el fin de no
perder la sincronización del sistema (o en su defecto un negador digital, aunque
un sistema híbrido sería un tanto confuso de analizar). El sistema resultante es el
siguiente:

N1(t+1) = x(t)
N7(t+1) = ¬N1(t+1)
N2(t+2) = N1(t+1)
N8(t+2) = ¬N2(t+2)
N3(t+3) = N2(t+2)
N9(t+3) = ¬N3(t+3)
N4(t+4) = N3(t+3)

81
N10(t+4) = ¬N4(t+4)
N5(t+5) = N4(t+4)
N11(t+5) = ¬N5(t+5)
N6(t+6) = N5(t+5)
N12(t+6) = ¬N6(t+6)

t
1 N1 -> SNV,SSR , N7 -> SNA,SNR,SSV,SSA
2 N2 -> SNV,SSR , N8 -> SNA,SNR,SSV,SSA
3 N3 -> SNA,SSR , N9 -> SNV,SNR,SSV,SSA
4 N4 -> SNR,SSV , N10 -> SNV,SNA,SSA,SSR
5 N5 -> SNR,SSV , N11 -> SNV,SNA,SSA,SSR
6 N6 -> SNR,SSA , N12 -> SNV,SNA,SSV,SSR

Figura 4.12 Red neuronal para el control de semáforos (segunda versión).

Ya establecida de manera completa la secuencia y el resultado de los eventos,


solo quedaría por establecer el comportamiento de la red en conjunto. Si se
asume a x(t) como la señal que comienza la secuencia de eventos se tienen dos
alternativas:

a. Definir a x(t) tal que genere un pulso cada determinado periodo.


b. Permitir que x(t) solo genere un pulso si se quiere iniciar el sistema, y en lo
sucesivo ciclar dicho pulso.

82
La primera opción implicaría dejar el diseño tal como esta. La segunda es más
interesante, pues implica el uso de la retroalimentación en la estructura de la red
neuronal, en específico, después de que el pulso de inicio se ha recibido, el
sistema generará su respuesta un periodo después, en base a la salida de su
último elemento. Esta modificación implica el cambio de la primera neurona de la
red, que en vez de ser un retardo ahora será un operador OR:

N1(t+1) = Exc(x(t),N6(t))

Figura 4.13 Red neuronal para el control de semáforos (versión final).

De manera sorprendente, la sencillez de la red neuronal resultante para este


sistema de control incluso posee la misma estructura que el diagrama de flujo.

Un planteamiento similar de este problema en [27] es resuelto mediante un


circuito secuencial que consta de una ROM y algunos flip-flops (figura 4.14).

83
Figura 4.14. Controlador de tráfico.

En este caso la ROM contiene la codificación de la secuencia de estados del


sistema, así como sus señales de salida.

4.7 Comentarios.

Es importante darse cuenta la forma en que se complementan y enriquecen, las


teorías de la LDT y las redes neuronales, en conjunto con las técnicas de diseño
de sistemas digitales, pues el resultado es una forma nueva de solucionar
problemas, que impliquen el uso de elementos de estados binarios y en cuyo
comportamiento el tiempo influya.

El uso de metodologías alternativas es útil en el diseño de circuitos equivalentes,


aunque no en su totalidad.

Al tratar de convertir un circuito lógico a su equivalente neuronal, la


correspondencia en cuanto a componentes no es siempre uno a uno, a causa de
la temporalidad de las neuronas.

Mientras que el retardo de cualquier elemento lógico está determinado por la


estructura física del mismo, y puede variar de elemento a elemento, aun siendo

84
del mismo tipo [BOOTH], las neuronas no solo tienen un retraso uniforme sino que
este puede ser ajustado dependiendo de la aplicación que se requiera.

De hecho es esta característica la que cambia los criterios de diseño de un


sistema, pues dependerá del tiempo de respuesta requerido por un proceso, el
decidir:

• el numero de neuronas a utilizar, así como los valores de sus parámetros;


• que tipo de señales de entrada serán utilizadas;
• si es conveniente el uso de retroalimentación.

Contrario a lo que se pueda pensar, el desarrollo de una herramienta, ya sea de


software o de hardware, para el análisis o la implantación de dichos sistemas es
en realidad, la parte trivial de este asunto.

El trabajo importante está en el planteamiento de los sistemas en sí, por medio


de la teoría expuesta hasta el momento. Como ya se mencionó un diseño que
tome en cuenta el funcionamiento de todos sus componentes en todo momento,
brindará buenos resultados.

85
Capítulo 5.

Conclusiones y Perspectivas.

" Lo que aconsejaba la Sibila no sólo valía para aquellos que


vivieron en su tiempo, sino también para los hombres que vinieron
después de su desaparición, y que ella no conoció jamás; todavía
hoy, al cabo de tantos años, solemos consultar públicamente sus
libros cuando deseamos que se haga algún portento a favor
nuestro: no dudo, pues, que podré, mientras viva, dar igualmente
algunos consejos necesarios que aprovechen los que están cerca
de mí".

De la cosas del campo.


Marco Terencio Varrón.

1. Introducción.

En este último capítulo son expuestas las conclusiones obtenidas durante el


desarrollo de este trabajo, con respecto a las ventajas y desventajas de la teoría
propuesta, así como de sus posibles aplicaciones.

2. Resultados.

En relación al aspecto teórico de este trabajo, se considera que los logros más
importantes son los siguientes:

i) Plantear las ideas básicas relacionadas con la dependencia temporal y como


relacionarlas con un sistema lógico.

Reflexionar acerca del tiempo de forma práctica fue interesante, a causa de la


variedad de consideraciones existentes referentes a la relación del tiempo en el
desarrollo de un proceso, aunque todas convergen en la idea de saber en que
momento del tiempo se produce un evento. Al tener esta noción, se tiene la
capacidad no solo de llevar un registro de la historia del proceso, sino hasta de

86
describir eventos futuros, aunque es obvio que cuantitativamente se dependerá
del resultado inmediato anterior.

En cuanto a relacionar al tiempo con un sistema lógico, como el cálculo


proposicional, no es difícil si se toma en cuenta que la descripción de argumentos
ya existía, pero no tomaba en cuenta los cambios que el tiempo produce en dicho
argumento. Si a esto se agrega que los argumentos analizados son procesos
digitales, la relación es mucho más obvia, por lo que solo algunos cambios en la
notación y la interpretación del sistema original dan como resultado una
metodología mucho más completa.

ii) Relacionar la estructura de la lógica dependiente del tiempo, con la teoría de


redes neuronales tal que ambas fueran complementarias.

Tal vez la principal ventaja al hacer esto, es que la misma estructura de los
elementos de procesamiento neuronal, implicaban en su funcionamiento el
fenómeno temporal de retardo, lo que relacionó la simbología planteada en la LDT
de forma natural. En general, la relación entre la LDT y las neuronas puede ser
descrita de tal manera que, cada una de las entradas a una neurona o sus salidas
pueden ser expresadas como una variable proposicional dependiente del tiempo,
mientras que una neurona corresponde a una transformación (u operador) de
dichas variables.

En comparación a otros trabajos sobre redes neuronales, cuyo objetivo por lo


general es el estudio de métodos que transforman la respuesta de sus elementos
(ej. redes de retropropagación) para producir un resultado dado, el enfoque de
está tesis ofrece una forma de expresar cualitativamente el diseño de sistemas
basados en neuronas artificiales. Esta capacidad es muy útil, sobre todo si se
toma en cuenta que varios de los modelos de redes neuronales están orientados a
resolver problemas no algoritmicos (en específico los que funcionan en base
modelos de entrenamiento), por lo que la capacidad de tener una representación
simbólica de sus elementos y valores resultantes, permitirá tratar de entender e
interpretar como la solución a un problema dado se encuentra distribuida en los
elementos de la red.

Es obvio que por las restricciones impuestas en las neuronas utilizadas (el valor
de los pesos de las neuronas es siempre de uno), tratar de hacer un análisis
descriptivo de redes con pesos de valores diferentes de uno no será válido, a
menos que se planteen los operadores equivalentes utilizando el rango de valores
definido para los pesos.

87
Ejemplo. El operador T de la LDT.

Tx(t) = Nn(t) = Exc(x(t)) , n=0 y w1=1 (n es el umbral)

Si w1 ∈ [0,1] entonces

Tx(t) = Nn(t) = Exc(x(t)*w1) , n=0 y w1 ∈ [0,1]

La principal diferencia y ventaja, es la definición de configuraciones de neuronas


cuyo comportamiento está bien definido, y por lo tanto, puede ser aprovechado
para la construcción de arreglos más complejos, con lo que no se tiene la
incertidumbre de tener una red demasiado grande, que consuma demasiados
recursos y no ofrezca resultados satisfactorios.

3. Aplicaciones.

La aplicación de la teoría de la LDT en conjunto con la tecnología de redes


neuronales, dependerá directamente de la influencia que el tiempo pueda tener en
la estructura y comportamiento del sistema analizado, además de que dependerá
en gran parte de identificar cuando un sistema dependa del tiempo. No hay una
manera precisa de definir esto, pero pueden considerarse los siguientes puntos:

• Los componentes del sistema definan un proceso que debe ejecutarse en un


instante preciso.

• Las entradas (o señales) del sistema varíen en el tiempo.

• Los procesos que se ejecuten puedan ser definidos por medio de funciones
lógicas.

Esto permitirá que el modelado de problemas sea más real, con lo que las
soluciones que se obtengan tendrán un contenido de información mucho más
extenso y útil en comparación de los modelos estáticos.

Al plantear el funcionamiento de un proceso, no solo habrá de encontrar un


algoritmo que genere un resultado, sino que se debe tomar en cuenta el tiempo
que el proceso tardará en producir un resultado, tal que dicho tiempo se ajuste a

88
los requerimientos generales del sistema. Es decir, si un proceso P produce una
salida S, P deberá tardar un periodo finito de tiempo, definido por el número de
elementos de procesamiento involucrados en el proceso, así como por el retraso
de n instantes que cada elemento tenga definido para generar una respuesta.

Si P esta compuesto por P = {N1(t),N2(t),...,Nj(t)}, donde el retardo en cada


neurona es unitario, si N1...Nj están conectados de manera consecutiva P tardará j
instantes en generar S, el cual será el periodo máximo para generar una
respuesta. Si N1 es el único elemento en P, S se obtendrá un instante después, lo
cual será el periodo mínimo de respuesta.

Es obvio que si se busca optimizar el tiempo de respuesta de P con j elementos


el periodo máximo no es el ideal. Sin embargo, si la topología resultante adopta
conexiones en paralelo entre las neuronas, el tiempo requerido será menor a j
instantes.

Hay que recalcar que en lo que respecta al modelado de sistemas, solo se ha


planteado una correspondencia entre las configuraciones neuronales y elementos
lógicos digitales. Si un planteamiento requiere modelar un sistema con una función
de transferencia compleja, debe contemplarse primero si es viable su
representación discreta, para luego implementarse con la metodología aquí
expuesta.

Por lo que respecta a la aplicación de esta teoría, se proponen dos áreas en las
que se considera que puede tener un mayor impacto:

• Neurobiología. Si se toma en cuenta que hasta ahora, solo se han identificado


áreas de nuestro sistema nervioso encargadas de ciertas funciones, sin saber a
ciencia cierta como funcionan, tal vez en un futuro cercano, contando con una
sofisticación tecnológica mayor, sea posible un análisis más minucioso de sus
estructuras, para lo que se deberá contar con una metodología de
representación y herramientas que permitan comprobar los resultados
obtenidos. Con ello se podrían construir equivalentes artificiales para sustituir
los tejidos dañados.

• Diseño de hardware y software. La tendencia de crear computadoras con


estructuras semejantes a las de nuestro cerebro se ha visto impulsada en este
fin de siglo, por lo que si realmente se quiere hacer un análogo artificial, se
deberá contar con circuitos electrónicos equivalentes a las neuronas o en su
defecto con sistemas de software que emulen sus características.

• Sistemas de control. La mayor parte de los sistemas de control que utilizan


unidades de procesamiento digital, tienen una arquitectura centralizada, es

89
decir, que un microprocesador o un microcontrolador se encargan de realizar
todas las operaciones del proceso se control (p.ej. sensado, análisis de señales,
etc.). Los sistemas de redes neuronales serían capaces de distribuir dicho
procesamiento en unidades especializadas y de menor costo (teóricamente),
evitando además en caso de una falla, una total caída del sistema.

4. Extensión de la LDT y el uso de redes neuronales para su


representación.

La lógica dependiente del tiempo, así como el cálculo de predicados, puede


ampliarse para convertirse en una teoría más general. Las posibles extensiones
que pueden plantearse para futuros trabajos pueden tomar dos tendencias:

i) Ampliar el marco teórico de la LDT en cuanto a representación de sus elementos


y valores de verdad.

a) Extender el modelo de lógica proposicional dependiente del tiempo a una lógica


de predicados y, posteriormente, a un álgebra dependientes del tiempo.

En el primer caso, serían necesarias la inclusión de operadores de cuantificación


y la modificación de las reglas de sintaxis.

b) Plantear el modelo de dependencia temporal en el contexto de un sistema


lógico multivaluado o hasta difuso.

Cualquiera de estás extensiones puede obtenerse (en principio) aplicando la


misma metodología empleada para obtener la parte proposicional: entender el
planteamiento y uso de la teoría, y relacionarla con el tiempo.

Tal vez lo más complejo sea el adaptar los modelos de neuronas para que
presenten una respuesta no binaria.

ii) Aplicar nuevos modelos de neuronas artificiales a la representación de la LDT.

a) Aplicar modelos neuronales más aproximados a la fisiología de sus


contrapartes biológicos para poder hablar realmente de sistemas neuronales.

Como se mencionó en capítulo 3, existen varios modelos de neuronas artificiales


(p.ej integradora con fuga). Tomar en cuenta modelos más elaborados bajo el
esquema de la LDT seguramente traerá como consecuencia un replanteamiento

90
tanto a nivel de interpretación como, posiblemente, a nivel de la estructura del
sistema lógico, pues para empezar estos modelos pueden tener como respuesta
un rango de valores que dejan de ser simplemente verdadero y falso. Sin
embargo, la idea de poder expresar de manera simbólica redes de neuronas de
este tipo no deja de ser un reto, por lo que la experiencia plasmada en esta tesis
puede servir como guía para tal desarrollo.

La representación de la LDT por medio de redes neuronales resultó ser útil para
el modelado de sistemas ya existentes, tales como sus equivalentes construidos
con compuertas digitales. Las diferencias radicales entre ambas técnicas son la
homogeneidad entre los elementos de procesamiento y dependencia temporal.

Por un lado las compuertas digitales sólo pueden llevar a cabo una operación
previamente definida, mientras que el comportamiento de las neuronas puede ser
modificado variando el valor de umbral de cada elemento, así como su número de
entradas.

Llevar a cabo una modificación de este tipo en una compuerta implicaría, a nivel
de hardware, una nueva configuración de los elementos del circuito, y hasta la
adición de otros tantos; en cambio, en una neurona, tal vez solo sea necesario
agregar algunos elementos para incrementar sus entradas.

Con respecto al factor de tiempo, es cierto que las compuertas digitales sufren un
retardo al generar su salida, pero la forma en que son usadas, en máquinas de
estados secuenciales por lo general, no implica una dependencia temporal
propiamente dicha. En cambio el uso de neuronas define a cada elemento como
un factor de cambio en el tiempo del sistema, donde igualmente se puede realizar
un proceso de forma secuencial, como paralela, sin la necesidad de incluir nuevos
elementos, ni consideraciones especiales en la arquitectura.

91
Referencias bibliográficas.

[1] Michael A. Arbib.


Brains, Machines & Mathematics.
2nd. edition. Springer-Verlag. 1987.

[2] Averill M. Law & W. David Kelton.


Simulation, modeling & analysis.
2nd. edition. McGraw-Hill. 1991.

[3] Taylor L. Booth.


Introduction to computer engineering hardware and software design.

[4] Irving M. Copi.


Lógica simbólica.
Ed. CECSA. 1979.

[5] José Cuena.


Lógica informática.
Alianza editorial. 2a.ed. 1986.

[6] Nikos Drakos.


Formal methods for the specification and
design of real time safety critical systems.
Computer based learning unit. University of Leeds. 1994.

[7] Bas C. Van Frassen.


Semántica formal y lógica.
UNAM. 1987.

[8] James A. Freeman & David M. Skapura.


Neural networks. Algorithms, aplications and programming techniques.
Addison Wesley Publication Company. 1992.

[9] Peter Gibbins.


Logic with Prolog.
Clarendon press. 1988.

[10] E.J. Hernández Valdelamar y J. Vasconselos Santillán.

92
Simulación de modelos de neuronas artificiales.
ANIEI. 1995.

[11] William H. Hyat Jr. & Jack E. Kemmerly.


Análisis de circuitos en ingeniería.
Cuarta de. McGraw-Hill. 1988.

[12] Felipe Lara Rosano.


Redes neuronales artificiales: una introducción.
Informe final. Proyecto 9507.
UNAM. Octubre, 1990.

[13] Gran enciclopedia Larousse.


Tomo X. pp. 181-184. Editorial Planeta. 1980.

[14] David Maier & David S. Warren.


Computing with logic.
The Benjamin/Cummings Publishing Company, Inc. 1988.

[15] Alejandro Medina.


Time dependent logic.
Comunicaciones técnicas Vol. 4, No. 12. CIMMASS. UNAM. 1972.

[16] M. Morris Mano.


Lógica digital y diseño de computadoras.
Prentice Hall. 1982.

[17] R.J. Nelson.


Introduction to automata.
Ed. John Wiley & sons, Inc. 1968.

[18] Katsuhik Ogata.


Ingeniería de control moderna.
Prentice Hall. 1980.

[19] José Luis Pérez Silva.


Notas para la materia de redes neuronales.
Centro de instrumentos, UNAM. 1995.

[20]José Luis Pérez Silva.


Lógica clásica.
Centro de instrumentos. UNAM. 1995.

[21] J.L. Pérez S., A. Herrera B., Sergio Quintana T.,


G. Hernández C., A. Miranda V., A. Garces M.

93
Time and threshold dependent logic.
Centro de Instrumentos. UNAM.
Sian ka'an International conference.
The first joint Mexico-US international workshop on neural networks and
neurocontrol. September 5-15, 1995.

[22] R. Canales Ruiz y R. Barrera Rivera.


Análisis de sistemas dinámicos y control automático.
Primera reimpresión. Ed. Limusa. 1980.

[23] C.U.M. Smith.


El cerebro (The brain. Towards an understanding).
Alianza Editorial. 1972.

[24] Robert R. Stoll.


Set theory and logic.
Dover Publications, Inc. 1979.

[25] Edited by Andre Thayse.


From standart logic to logic programming.
Ed. John Wiley & sons, Inc. 1988.

[26] Richmond H. Thomason.


Symbolic logic.
The Macmillan company. 1970.

[27] Claude A. Wiatrowski & Charles H. House.


Logic circuits and microcomputer systems.
McGraw-Hill. 1981.

[28] Francisca Zubieta R.


Lógica matemática elemental.
Ed. Esfinge. 1988.

94
Glosario.

Análisis.
Es la investigación bajo condiciones específicas del funcionamiento de
un sistema cuyo modelo matemático se conoce.

Circuitos digitales combinacionales.


Arreglos de compuertas lógicas en donde las salidas en un instante dado de
tiempo son enteramente dependientes de las entradas presentes en ese mismo
tiempo.

Codificador.
Es una función digital que produce una operación inversa a la del decodificador.
Un codificador tiene 2n (o menos) líneas de entrada y n líneas de salida. Las
líneas de salida generan el código binario para las 2n variables de entrada.

Decodificador.
Es un circuito combinacional que convierte la información binaria de n líneas de
entrada a un máximo de 2n líneas únicas de salida.

Estado.
El estado de un sistema es la colección de variables necesarias para describir un
sistema, en un tiempo particular relativo a los objetivos del estudio [OGATA80].

Evento.
Es una ocurrencia instantánea que puede cambiar el estado del sistema.

Fisiología.
Relativo al estudio de las funciones orgánicas.

Instante.
Mec. Momento preciso en que la variable temporal tiene un valor exactamente
determinado.

Intervalo.
Porción de espacio o tiempo que media entre dos cosas. Conjunto de los valores
que toma una magnitud entre dos limites dados.

95
Momento.
Periodo de duración indeterminado en que se hace cierta cosa o sucede algo.

Morfología.
Relativo a la forma.

Periodo.
Tiempo que tarda una cosa para volver al estado que tenía al principio.

Proceso.
Sucesión de fases que se reproducen regularmente en un fenómeno.

Síntesis.
Es la obtención de un procedimiento directo para que un sistema funcione de
modo específico.

Señal.
Variación de una corriente eléctrica, una presión u otra magnitud que representa
una información en virtud un elemento regulador u órgano cualquiera ejercerá
alguna acción sobre otro.

Señal analógica.
Señal que puede tomar cualquier valor en un rango continuo.

Señal digital.
Señal que solo puede variar en intervalos, y no en un rango continuo.

Sistema.
Colección de entidades que actúan e interactúan en conjunto para lograr algún
fin lógico (Schmidt & Taylor, 1970).

Sistema discreto.
Es aquel en que sus variables de estado cambian instantáneamente en puntos
separados en el tiempo.

Sistema continuo.
Es aquel en que sus variables de estado cambian continuamente con respecto al
tiempo.

Retroalimentación (feedback).
Información sensorial sobre el desempeño de una tarea.

96
Apéndice A.

Documentación y código fuente del simulador.

• Sistema para diseño de redes neuronales.


Prototipo Versión: 1.0
Última actualización: Septiembre, 1996.

Documentación.

1. Requerimientos.

• Computadora PC o compatible, con un microprocesador i286 o superior, 640Kb


de memoria RAM. Monitor monocromático o color.

• Sistema operativo DOS versión 4.0 o superior.

2. Archivos del sistema.

La arquitectura del sistema se basa en un programa ejecutable encargado de


llevar a acabo el procesamiento de información, así como de administrar la
entrada y salida de datos. Adicionalmente se cuenta con archivo de configuración
que determina la ruta de acceso a los archivos utilizados por el sistema. Las
configuraciones de elementos definidas en los proyectos que se implementen es
guardada en archivos con extensión PRY.

Nombre del archivo ejecutable: DSRN01.EXE


Nombre del archivo de configuración: DSRN.CFG

3. Manual de operación.

Una vez inicializado el sistema, se cuenta con las siguientes opciones:

• Definir un generador de señales. Crea un elemento que transmite pulsos (0,1),


y permite seleccionar el orden en que dichos pulsos son emitidos.

97
• Definir una neurona. Crea una neurona artificial, permitiendo definir sus
parámetros (número y tipo de entradas, conexiones, valor del umbral, cantidad
de instantes de retardo).

• Definir un elemento de medición. Crea un elemento que se encarga de registrar


los valores de salida de un generador de señales o de una neurona.

• Listar los elementos del sistema. Muestra un listado de todos los elementos del
proyecto y sus características.

• Inicializar el sistema. Inicializa las estructuras de datos del sistema.

• Cargar un proyecto existente. Abre y lee el archivo especificado para


reestablecer los elementos de un proyecto ya existente.

• Salvar el proyecto actual. Crea y escribe en un archivo la estructura de todos


los elementos de un proyecto.

• Simulación de la red neuronal.

las cuales están distribuidas en un menú. La selección de estas se hace tecleando


el digito correspondiente a la opción.

• Estructura de los archivos PRY.

A continuación se presenta un ejemplo de un archivo PRY, el cual contiene el


proyecto correspondiente a una red neuronal encargada de la codificación de dos
bits.

Nombre del archivo: codifica.pry

{codifica} Nombre y comentarios sobre el proyecto.


5 Numero de puntos de medición.
2 Numero de neuronas.
3 Numero de generadores de señales.
1 Ids de los elementos sensados (generadores o neuronas).
2
3
4
5
4112 Parámetros de NNet[i] (id,threshold,retardo y entradas)
21 Entradas de la neurona (id de la fuente y tipo (Inh o Exc))
31
5112
31

98
11
16 Generadores de señales (id y tipo de patrón de la señal).
27
38
<EOF>

• Código fuente del sistema.

{
Diseño y simulación de redes neuronales.

Eugenio Jacobo Hernández Valdelamar. 1996.


Archivo fuente: dsrn01.pas
Versión: 1.0
Lenguaje: Pascal (Borland Turbo Pascal 5.5).

* Convenciones:

I. El modelo de neurona utilizado es el McCulloch & Pitts.

1. Todos los pesos son considerados con valor de 1.


2. Toda neurona recibe sus valores de entrada de un
elemento generador de señales cuando forma parte
de la primera capa.
3. Un punto de medición es un elemento pasivo que no
influye en la temporalidad del proceso.
4. La unidad de tiempo es un instante, el cual a
tiempo de ejecución es equivalente a una iteración
del procedimiento de simulación.
5. Las neuronas pueden ser conectadas en serie, en
paralelo y hasta retroalimentarse.

II. Por tratarse de un prototipo las estructuras de datos


en que se almacenan los elementos del sistema son
estáticas (arreglos) cuya longitud se encuentra
establecida en el área de definición de constantes.

La ruta de acceso a los archivos del sistema se define


en el archivo DSRN.CFG

Los archivos *.PRY contienen la información de la estructura


de un proyecto.

!!! Se prohibe la distribución comercial de este programa !!!


}

program dsrn_system;

uses crt;

99
const

n_neurons = 20; {numero máximo de neuronas}


n_signals = 10; {numero máximo de señales}
n_points = 20; {numero máximo de puntos de medición}
max_delay = 11; {el tiempo de retraso máx. real es de max_delay-1}

{patrones de las señales de entrada}

p0:array[1..8] of byte=(1,0,1,0,1,0,1,0);
p1:array[1..8] of byte=(0,1,0,1,0,1,0,1);
p2:array[1..8] of byte=(1,1,1,1,1,1,1,1);
p3:array[1..8] of byte=(0,0,0,0,0,0,0,0);
p4:array[1..8] of byte=(1,1,0,0,1,1,0,0);
p5:array[1..8] of byte=(1,1,1,1,0,0,0,0);
p6:array[1..8] of byte=(1,0,0,0,0,0,0,0);
p7:array[1..8] of byte=(0,1,0,0,0,0,0,0);
p8:array[1..8] of byte=(0,0,1,0,1,0,1,1);
p9:array[1..8] of byte=(1,0,0,0,1,0,1,1);

ESC = #13;

type

{Entradas de la neurona}
input = record
in_from,
in_type : byte; {0-Inh; 1-Exc}
value : byte;
end;

{Neurona artificial}
neuron = record
id : byte;
inputs : array[1..10] of input; {entradas}
n_in : integer; {numero de entradas}
thr : integer; {umbral de disparo}
delay_t : byte; {tiempo de retardo}
d_buff: array [1..max_delay] of byte; {buffer para el retardo}
output : byte; {salida de la neurona }
end;

{Elemento generador de señal}


signal = record
id : byte;
s_type : byte; {Tipo de patrón de Pulsos}
c :byte; {contador}
amp :byte; {amplitud}
value : integer;
end;

100
{Punto de medición}
messure_point = record
cfrom:byte;
value:integer;
end;

var

NNet : array [1..n_neurons] of neuron; {red neuronal}


Mpts : array [1..n_points] of messure_point; {puntos de medición}
Sign : array [1..n_signals] of signal; {señales de entrada}

id_ctrl, {total de elementos del sistema}


n_mps, {total de puntos de medición}
n_ns, {total de neuronas en la red}
n_sig, {total de señales}
time_c, {contador de tiempo}
total_time: integer; {tiempo total de la simulación}
pathn:string; {ruta de acceso a los archivos .PRY}

{----------------------------------------------------}

procedure load_sys_config ; {carga el archivo de configuración del sistema}


var
str:string;
c:char;
fcfg:text;
begin
assign(fcfg,'dsrn.cfg');
{$I-}
reset(fcfg);
{$I+}
if IOResult=0 then
begin
while (not eof(fcfg)) do
begin
c:=#0;
while c<>'}' do read(fcfg,c);
readln(fcfg,pathn);
readln(fcfg,pathn);
str:='';
While str<>'FIN' do
readln(fcfg,str);
end;
close(fcfg);
end
else
begin
writeln('El archivo de configuración no existe !'); readln;
end;

101
end;

procedure initialize_sys; {inicialización de variables}


begin
id_ctrl:=0;
n_mps:=0;
n_ns:=0;
n_sig:=0;
time_c:=0;
total_time:=0;
fillchar(NNet,sizeof(NNet),0);
fillchar(Mpts,sizeof(Mpts),0);
fillchar(Sign,sizeof(Sign),0);
end;

procedure scr_format; {presentación de los resultados de la simulación}


var i:byte;
begin
clrscr;
write('Mpts');
for i:=1 to n_mps do
begin
gotoxy(2,i+2);
write (Mpts[i].cfrom);
end;
gotoxy(6,1);
for i:=0 to total_time do
begin
gotoxy(i*3+9,1);
write ('t',i);
end;
end;

function pattern_val (pn,c:byte):byte;


var s:byte;
begin
case pn of
0: s:=p0[c];
1: s:=p1[c];
2: s:=p2[c];
3: s:=p3[c];
4: s:=p4[c];
5: s:=p5[c];
6: s:=p6[c];
7: s:=p7[c];
8: s:=p8[c];
9: s:=p9[c];
end;
pattern_val:=s;
end;

102
procedure show_patterns;
var i,j:byte;
begin
gotoxy(54,12);
write('Señales');
for i:= 0 to 9 do
begin
gotoxy(48,i+14);
write('p',i);
end;

for i:= 1 to 8 do
for j:=0 to 9 do
begin
gotoxy(50+(i*2),j+14);
write(pattern_val(j,i));
end;
end;

procedure show_sys;
{muestra un listado de los elementos del sistema}
var i:byte;
begin
clrscr;
for i:=1 to n_ns do
with NNet[i] do
begin
writeln('Elemento ',id,' Neurona/ #Entradas ',n_in,
' Umbral ',thr,' Delay ',delay_t); {conexiones}
end;
writeln;
for i:=1 to n_sig do
with Sign[i] do
begin
writeln('Elemento ',id,' Señal / Patrón ',s_type);
end;
writeln;
for i:=1 to n_mps do
with Mpts[i] do
begin
writeln('Muestra ',i,' Origen ',cfrom);
end;
writeln;
write('Presione ENTER para continuar...');
readln;
end;

procedure new_element_id (var id:byte);


{genera un id para un nuevo elemento}
begin
id_ctrl:=id_ctrl+1;

103
id:=id_ctrl;
end;

{----------------------------------------------------}

procedure new_mp ; {crea un nuevo punto de medición}


var elem:byte;
begin
inc(n_mps);
write('Se obtendrá el valor del elemento: ');
readln(elem);
if elem>id_ctrl then
write('Error en la asignación del id!')
else
Mpts[n_mps].cfrom:=elem;
writeln;
write('Presione ENTER para continuar...');
readln;
end;

procedure check_mp_value; {revisa los valores en los puntos de medición}


var i,j,k:byte;
begin
for i:=1 to n_mps do
begin
for j:=1 to n_ns do
if Mpts[i].cfrom=NNet[j].id then
Mpts[i].value:=NNet[j].d_buff[NNet[j].delay_t+1];
for k:=1 to n_sig do
if Mpts[i].cfrom=Sign[k].id then
Mpts[i].value:=Sign[k].value;
end;
end;

procedure display_mps; {despliega los puntos de medición}


var i:byte;
begin
for i:=1 to n_mps do
begin
gotoxy(time_c*3+6,i+2);
write (Mpts[i].value);
end;
end;

{----------------------------------------------------}

procedure p_signals (var s:signal);


begin
case s.s_type of
0: s.value:=p0[s.c];
1: s.value:=p1[s.c];

104
2: s.value:=p2[s.c];
3: s.value:=p3[s.c];
4: s.value:=p4[s.c];
5: s.value:=p5[s.c];
6: s.value:=p6[s.c];
7: s.value:=p7[s.c];
8: s.value:=p8[s.c];
9: s.value:=p9[s.c];
end;
inc(s.c);
if s.c>8 then s.c:=1;
end;

procedure signal_type (var s:byte); {selección de la señal}


begin
show_patterns;
gotoxy(1,18);
write('Tipo de señal [0..9] : ');
readln(s);
if not(s in [0..9]) then
begin
s:=0;
writeln('Valor erroneo. Señal asignada p0 !!!');
end;
writeln;
write('Presione ENTER para continuar...');
readln;
end;

procedure new_signal; {crea un nuevo generador de señales}


begin
inc(n_sig);
with Sign[n_sig] do
begin
new_element_id (id);
signal_type (s_type);
c:=1;
end;
end;

{----------------------------------------------------}

procedure set_inputs;
{captura de los datos de entrada de una neurona}
var
i:byte;
begin
with NNet[n_ns] do
begin
write ('Numero de entradas [1..10]: ');
readln (n_in);

105
for i:=1 to n_in do
begin
write ('La entrada X',i,' es Exc [1] o Inh [0]: ');
readln (inputs[i].in_type);
write ('El valor de la entrada X',i,' viene de: ');
readln (inputs[i].in_from);
if inputs[i].in_from>id_ctrl then
writeln('Advertencia: el ID no existe');
end;
write ('Valor del umbral: ');
readln (thr);
write ('Valor del delay: ');
readln (delay_t);
end;
end;

procedure new_neuron; {crea una nueva neurona}


begin
n_ns:=n_ns+1;
with NNet[n_ns] do
begin
new_element_id (id);
writeln('Neurona ',id);
set_inputs;
writeln;
write('Presione ENTER para continuar...');
readln;
end;
end;

{----------------------------------------------------}

procedure neuron_outp (var n:neuron);


var i:byte;
begin
for i:=n.delay_t downto 1 do {retardo de la neurona}
n.d_buff[i+1]:=n.d_buff[i];

{n.d_buff[1]:=n.output;}
n.output:=n.d_buff[n.delay_t+1]; {salida de la neurona con retardo}
end;

procedure p_neuron (var n:neuron);


{procesamiento de información por medio de una neurona}
var
i,j,inp:byte;
exc,inh,sum:integer;
begin
sum:=0;
exc:=0;
inh:=0;

106
inp:=0;
for i:=1 to n.n_in do
begin
{se obtienen las entradas a la neurona por medio de los id's}
for j:=1 to n_ns do
if NNet[j].id=n.inputs[i].in_from then
inp:=NNet[j].output;

for j:=1 to n_sig do


if Sign[j].id=n.inputs[i].in_from then
inp:=Sign[j].value;

if n.inputs[i].in_type=1 then
exc:=exc+inp
else
inh:=inh+inp;
end;

sum := exc-inh;
if sum>=n.thr then
n.d_buff[1]:=1
else
n.d_buff[1]:=0;
end;

procedure p_net; {representa un ciclo de simulación}


var i,j,k,l:integer;
begin
for i:=1 to n_sig do {se obtiene el valor de cada señal}
p_signals(Sign[i]);

for i:=1 to n_ns do {se obtiene el valor de salida de cada neurona}


neuron_outp(NNet[i]);

for i:=1 to n_ns do {cada neurona procesa sus valores de entrada}


p_neuron (NNet[i]);

check_mp_value;
display_mps;
end;

procedure simulation;
var ch:char;
i:byte;
begin
write('Tiempo total de la simulación: ');
readln(total_time);
writeln;
write('Presione ENTER para comenzar la simulación...');
readln;
scr_format;

107
time_c:=1;
for i:=1 to n_sig do
Sign[i].c:=1;
for i:=1 to n_ns do
begin
fillchar(NNet[i].d_buff,sizeof(NNet[i].d_buff),0);
fillchar(NNet[i].output,sizeof(NNet[i].output),0);
end;
while (time_c<=total_time) and (ch<>ESC) do
begin
p_net;
time_c:=time_c+1;
if keypressed then ch:=readkey;
end;
writeln; writeln;
write('La simulación ha concluido ! Presione ENTER para continuar...');
readln;
end;

{----------------------------------------------------}

procedure load_sys ; {reestablece una red neuronal ya creada}


var
c:char;
fcfg:text;
scf,pname:string;
i,j:byte;
begin
initialize_sys;
write('Nombre del proyecto : ');
readln(pname);
scf:=concat(pname,'.pry');
scf:=concat(pathn,scf);
assign(fcfg,scf);
{$I-}
reset(fcfg);
{$I+}
if IOResult=0 then
begin
while (not eof(fcfg)) do
begin
while c<>'}' do read(fcfg,c);
readln(fcfg,n_mps);
readln(fcfg,n_ns);
readln(fcfg,n_sig);
for i:=1 to n_mps do
readln(fcfg,Mpts[i].cfrom);

for i:=1 to n_ns do


with NNet[i] do
begin

108
readln(fcfg,id,thr,delay_t,n_in);
for j:=1 to n_in do
readln(fcfg,inputs[j].in_from,inputs[j].in_type);
end;

for i:=1 to n_sig do


with Sign[i] do
readln(fcfg,id,s_type);

end;
id_ctrl:=n_ns+n_sig;
close(fcfg);
end
else
begin
writeln('El archivo ',scf,' no existe !'); readln;
end;
end;

procedure save_sys;
{salva la red neuronal activa y los elementos asociados}
var
sc,pname:string;
fcfg:text;
i,j:byte;
begin
write('Nombre del proyecto : ');
readln(pname);
sc:=concat(pathn,copy(pname,1,length(pname)));
sc:=concat(sc,'.pry');
assign(fcfg,sc);
{$I-}
rewrite(fcfg);
{$I+}
writeln(fcfg,'{',pname,'}'); {nombre del proyecto}
writeln(fcfg,n_mps); {numero de puntos de medición}
writeln(fcfg,n_ns); {numero de neuronas}
writeln(fcfg,n_sig); {numero de generadores de señales}
for i:=1 to n_mps do
writeln(fcfg,Mpts[i].cfrom); {conexiones}

for i:=1 to n_ns do


with NNet[i] do
begin
writeln(fcfg,id,' ',thr,' ',delay_t,' ',n_in);
for j:=1 to n_in do
writeln(fcfg,inputs[j].in_from,' ',inputs[j].in_type);
end;

for i:=1 to n_sig do


with Sign[i] do

109
writeln(fcfg,id,' ',s_type); {tipo de señal}

close(fcfg);
end;

{----------------------------------------------------}

procedure main_menu; {texto del menu}


begin
writeln('- Simulación de redes neuronales -');
writeln;
writeln('Opciones: ');
writeln('0. Nuevo proyecto');
writeln('1. Crear generadores de señales');
writeln('2. Crear neuronas');
writeln('3. Definir puntos de medición');
writeln('4. Listar estructura del sistema');
writeln('5. Iniciar la simulación');
writeln('----------------------------------');
writeln('6. Salvar configuración');
writeln('7. Cargar sistema existente');
writeln('9. Salir ');
writeln;
write('Opción : ')
end;

procedure menu; {menu de opciones del sistema}


var op:byte;
begin
op:=0;
while op<>9 do
begin
clrscr;
main_menu;
readln(op);
writeln;
writeln;
case op of
0: initialize_sys;
1: new_signal;
2: new_neuron;
3: new_mp;
4: show_sys;
5: simulation;
6: save_sys;
7: load_sys;
end;
end;
end;

begin

110
load_sys_config;
initialize_sys;
menu;
end.

111

Vous aimerez peut-être aussi