Está en la página 1de 5

Desarrollo de la Actividad:

Para la creación de esta actividad primero que nada fue importante hacer la tabla de la cual se
sostendría la misma. Esta tabla que recopila los datos provenientes de 6 sensores distintos,
con 100 valores cada uno, los cuales dan por si mismos distintos valores dependiendo del
entorno en el que se encuentren, en dada situación se dará un estimado subjetivo de acuerdo
con la “suma” de estos valores. De acuerdo con nuestro planteamiento, consideramos como
nuestros seis sensores, o 6 variables la temperatura, humedad, iluminación, sonido y calidad
del aire. Esto con el fin de determinar cual seria el nivel de estrés que podría sufrir un individuo
en una habitación. A continuación, se muestra la grafica junto con los valores que se han dado
a esta por los compañeros del equipo.

Después de hecha la grafica se pasa a la parte de programación. Para la realización del código
se utilizo el lenguaje de programación de Python utilizando el programa llamado spider dentro
del navegador anaconda. El plan es utilizar los datos de nuestra tabla de Excel para con el
programa hecho en Python.

A continuación, se muestra el código utilizado, parte con la importación de datos de Excel al


programa, así como también se utiliza el código que nos fue proporcionado en clase.
import numpy as np
from random import *
from math import *
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import matplotlib.pyplot as grafica

def normalizar(r,lb,ub):
return (r-lb)/(ub-lb);

def desnormalizar(n,lb,ub):
return n*(ub-lb)+lb;

def maxp(V):
#(val,pos)=maxp(V)
n=len(V);
pos=0;
val=V[pos];
for e in range(n):
if V[e]>val:
val=V[e];
pos=e;
return val,pos
def minp(V):
#(val,pos)=minp(V)
n=len(V);
pos=0;
val=V[pos];
for e in range(n):
if V[e]<val:
val=V[e];
pos=e;
return val,pos

def DatabaseRead():
#Database or table
#DataBrute=DatabaseRead();
#Excel reading
#df = pd.read_excel('Act 2.xlsx')
df = pd.read_excel('Act 2.xlsx');
Nrows=len(df); Ncols=len(df.columns);
DataBrute = [[0 for i in range(Ncols)] for j in range(Nrows)];
for r in range(Nrows):
for c in range(Ncols):
DataBrute[r][c]=df[df.columns[c]][r];
Return DataBrute

#programa principal
def NormalData(DataExp):
###LMTT092018
### (DataNorm,MRange)=NormalData(DataExp)
Trows=len(DataExp);
Tcols=len(DataExp[0]);
V = [0 for i in range(Trows)];
MRange = [[0 for i in range(2)] for j in range(Tcols)];
DataNorm = [[0 for i in range(Tcols)] for j in range(Trows)];
for c in range(Tcols):
for r in range(Trows):
V[r]=DataExp[r][c];
(valmax,posmax)=maxp(V);
(valmin,posmin)=minp(V);
for r in range(Trows):
DataNorm[r][c] = normalizar(DataExp[r][c],valmin,valmax);
MRange[c][0]=valmin;
MRange[c][1]=valmax;
return DataNorm, MRange
def CalcD(V1,V2):
B = len(V1);
s=0
for b in range(B):
s = s + (V1[b]-V2[b])**2;
d = s**0.5;
return d
def Agente(X,DB,MRange):
Trows = len(DB);
Tcols = len(DB[0]);
Xn = [ 0 for j in range(Tcols-1)];#Tcols-1 = total de entradas
D = [ 0 for j in range(Trows)];
V1 = [ 0 for j in range(Tcols-1)];
V2 = [ 0 for j in range(Tcols-1)];
y = 0;
for b in range(Tcols-1):
Xn[b] = normalizar(X[b],MRange[b][0],MRange[b][1]);
for r in range(Trows):
for c in range(Tcols-1):
V1[c] = Xn[c];
V2[c] = DB[r][c];

#Cálculo de distancia Euclideana


D[r] = CalcD(V1,V2);

#Distancia mínima
(val,pos) = minp(D);
#Extraer la respuesta
y = DB[pos][Tcols-1]

y = desnormalizar(y,MRange[Tcols-1][0],MRange[Tcols-1][1]);
return y

Casos que fueron utilizados.

Para probar lo que nos arrojaría el agente, utilizaremos dos casos tal como se
describe en la actividad, con un agente que nos proporcionara una respuesta
no normalizada para saber cuan alto es el nivel del resultado dado.

 Caso 1. Diagnóstico de poca probabilidad de lluvia


Primero que nada, es definido lo que es la variable “X”:
X = [Nivel de agua, Temperatura, Presión Atmosférica, Humedad, Luz,
Calidad del aire]

X en este primer caso sería:

X = [555, 36, 33, 14, 10, 53]


Hecho esto, se corre y define el agente que nos entregara la respuesta.

 Caso 2. Diagnostico con mucha probabilidad de lluvia


X = [798, 39, 40, 21, 17, 233]
Captura de pantalla del código en el programa utilizado (anaconda)

También podría gustarte