2.4 Critical Analysis of key research articles
2.4.3 Mediated Learning Experience in schools
Se utiliza Def search_section2() para crear un algoritmo que permite buscar la columna con menos autos
Capítulo 1 49
Figura 4-38: Algoritmo utilizando Def search_section2()
Donde Tmaxx es el número de columnas del parqueadero y Tmaxy es el número de filas del parqueadero
Se hace un barrido por medio de los ciclos for, por cada columna contando el número de plazas de parqueo que en la matriz parb se encuentren en 0, es decir las plazas de parqueo vacías y disponibles para parquear, si la plaza de parqueo se encuentra vacía pero en espera a que llegue un vehículo se asume para este caso como ocupada.
Conta: es un vector q almacena el número de plazas de parqueo disponibles en cada columna.
Maxx: representa el número más grande que tenga conta
Con el último for se haya, cual columna tiene la mayor cantidad de plazas de parqueo vacías.
La función Def Vacio () determina si el parqueadero está lleno, en el caso de no tener ninguna plaza de parqueo disponible retorna 1 que representa que el parqueadero está lleno.
50 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
Figura 4-39: Algoritmo utilizando Def Vacio ()
Se hace un barrido con los ciclos for en la matriz parb, al encontrar el primer espacio vacío se interrumpe el ciclo ya que indica que por lo menos se tiene un espacio vacío.
En este caso las plazas de parqueo en modo espera se cuentan como plazas de parqueo ocupadas. Esto se hace con el fin de evitar asignar dos carros a la misma plaza de parqueo al mismo tiempo.
La función Def Tiempo() determina que plazas de parque se encuentran en modo espera, después determina que tiempo llevan esperando cada una, si este tiempo supera los 5 minutos, se cancela su solicitud y pasa a estar en modo vacío.
Capítulo 1 51
Donde Matime es una matriz que almacena la hora en que se asignó cada plaza de parqueo a un usuario
Tiac es el tiempo actual.
Tmaxe es el tiempo máximo de espera. Si este tiempo es superado, la plaza de parqueo pasa a estar vacía, es decir pasa de valer 2 en la matriz parb a valer 0
Con los ciclos for se determina que plazas de parqueo están en modo espera, es decir que las plazas de parqueo que valgan 2 en la matriz parb.
La función Topos() determina la diferencia entre dos vectores, xx y yy. Esta diferencia representa la plaza de parqueo que se le asigna al usuario
Figura 4-41: Algoritmo utilizando Topos()
j: es el número de la columna con la mayor cantidad de plazas de parqueo vacías.
Poss es el nombre de la plaza de parqueo asignada al usuario.
La función Search_position() recibe un vector con que representa la columna con mayor cantidad de plazas de parqueo vacías.
52 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
Figura 4-42: Algoritmo utilizando Search_position()
El anterior segmento de código corresponde a buscar que se cumpla la primera condición del sistema, es decir dejar una plaza de parqueo vacía entre los autos.
El siguiente segmento del código se encarga de la segunda condición para el sistema, en caso de que la primera no pueda ser cumplida. Corresponde a dejar una plaza de parqueo vacía cada dos autos o plazas de parqueo ocupadas.
Figura 4-43: Segmento de código regla dos
El siguiente segmento de código se encarga de la 3 condición del sistema, en caso de que no se pueda cumplir la condición 1 o 2. Esta es ocupar la plaza de parqueo disponible. En caso de que tampoco se pueda cumplir esta condición se determina que le parqueadero está lleno.
Capítulo 1 53
Figura 4-44: Segmento de código regla tres
Mb: representa si se cumplió cualquier condición, si es 0 significa que no se cumplió, y si es 1 significa que si se cumplió, por lo tanto todo se detiene.
La función Sear_section1() determina que plazas de parqueo superaron el tiempo de espera y si el parqueadero cuenta con plazas de parqueo disponibles, por medio de las funciones tiempo y vacío, después si el parqueadero cuenta con plazas de parqueo vacías, se determina con la función search_section2 la columna con más plazas de parqueo disponibles.
54 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
Donde Pos y secac: representan el número de la columna del parqueadero con el mayor número de plazas de parqueo vacías y disponibles.
Mi: contiene el valor de todas las plazas de parqueo de la columna pos. Donde 0 representa las plazas de parqueo vacías, y 1 las plazas de parqueo ocupadas o en espera.
Mif: representa el valor de todas las plazas de parqueo de la columna pos, más la posición asignada al nuevo usuario.
Por medio del primer ciclo for se le asigna a los vectores mi y mif el valor de la columna pos de la matriz parb.
Con la función search_position() se le asigna la plaza de parqueo al usuario y se guarda su valor en el vector mif.
Con el segundo for se transfiere el nuevo valor del vector mif a la matriz parb donde se le asigna el estado de espera a la plaza de parqueo asignada y en la matriz matime se guarda la hora en que se solicitó la plaza de parqueo.
Después se publica el nombre de la plaza de parqueo por medio de la función topos.
Con la función Def learn() se tiene que:
Capítulo 1 55
Xi: es un valor de entrada que se desea q aprenda la red neuronal
Yi: es un valor de salida que se desea q aprenda la red neuronal.
Data_x: son los todos valores de entrada que se ingresaron para ser aprendidos por la red neuronal
Data_y: son los todos valores de salida que se ingresaron para ser aprendidos por la red neuronal
Esta función por medio de model.partial_fit(data_x,data_y) le enseña a la red neuronal un valor de entrada con su respectiva salida.
La función Def Prediccion() requiere un valor de entrada, y se le pide a la red neuronal que analice este valor y haga una predicción sobre este valor, la red neuronal retorna un vector con el mismo tamaño que el vector de entrada, también este vector contiene valores en porcentajes comprendidos entre 1 y 0, con el ciclo for se determina si este porcentaje equivale a un 1 o a un 0.
Figura 4-47: Algoritmo utilizando Def Prediccion()
56 PROTOTIPO DE SISTEMA PARA LA GESTIÓN DE OCUPACIÓN DE PARQUEADEROS EN UN CENTRO COMERCIAL
Figura 4-48: Algoritmo utilizando Def forlearn()
Por medio de un ciclo while se hacen muchas iteraciones, necesarias para que la red neuronal tenga muchos datos de los cuales aprender.
Por medio de la función ramm se crea un vector de 1 x 9 con valores aleatorios que varían entre 1 o 0, después con la función search_position se busca la plaza de parqueo asignada para el vector mx, que fue generado de manera aleatoria. Después se le enseña a la red neuronal el vector aleatorio con su respuesta hallada con la función
search_position, y con en el vector mx3 se guarda un vector proporcionado por la red neuronal que corresponde a la respuesta dada por esta al vector aleatorio, si este vector es igual a la respuesta dada por la función search_position se aumenta en uno la variable
cont, de lo contrario, si es diferente el vector de predicción de la red neuronal y el vector de respuesta dado por la función search_section, la variable cont se iguala a cero.
Cuando la variable cont es igual o mayor a 500 se detiene todo, ya que significa que las ultimas 500 interacciones la red neuronal respondió de la manera adecuada.
Para escribir en la página web se utiliza servi que es equivalente a servidor, y está en la dirección IP que tenga el servidor, es decir si el minicomputador tiene comunicación, en
Capítulo 1 57
este caso la IP del computador ya que este es el que comparte internet al minicomputador.
Figura 4-49: Algoritmo para la creación de códigos QR y la edición de la imagen en la
página web
Figura 4-50: Publicación de codigo QR y alfanumérico