Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2 1. Matrices: Generar matrices con las características que se indican a) Matriz de 6x5 de valores aleatorios enteros. Las primeras tres filas en el intervalo (0,1), las tres filas restantes en el intervalo (-1,1). A=round(rand(3,5)) B=-1+(1+1)*randn(3,5) C=[A;B] b) Matriz A de 20x25 de valores enteros positivos. Extraer una matriz A1(3x8) desde la posición (5,5). Matriz A2 que resulte de la eliminación de las columnas 11 a 14 y las filas 9 a 13 de A. A=randi([1 100],20,25) %Crea una matriz 20x25 en el intervalo [1 100] A=round() A1=A(5:7,5:12) % Extraer una matriz A1(3x8) desde la posición (5,5) aux=A %Crea una matriz auxiliar para trabajar sobre ella aux(:,11:14)=[] %Elimina las columnas desde la 11 hasta la 14 aux(9:13,:))=[] %Elimina las filas desde la 9 a la 13 A2=aux %Asigna la matriz auxiliar a una matriz A2 c) Matriz de 15x1 de números aleatorios enteros de dos dígitos. Determinar la posición y valor del menor y del mayor. A=round(9+91*rand(15,1)) %Matriz de 15x1 de números aleatorios enteros de dos dígitos [Valor,Fila]=min(A(:,1)) %Devuelve el menor valor y su posición [Valor,Fila]=max(A(:,1)) %Devuelve el mayor valor y su posición d) Matriz aleatoria de 5x5, valores enteros en el intervalo (-25 ; 75). Ordenar por filas (orden creciente). Ordenar por columnas (orden decreciente). A=round(-25+100*rand(5,5)) % Matriz aleatoria de 5x5, valores enteros en el intervalo (-25 ; 75). 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 3 f=sort(A,2) %El 2 indica ordenación por filas de la matriz A por defecto en forma Ascendente c=sort(A,1,'descend') %El 1 indica ordenación por columnas de la matriz A en forma Descendente 2. Grafica. Desde la línea de comandos ejecutar las sentencias necesarias para graficar las siguientes funciones: a) Funciones seno y coseno en el intervalo [0, 2π] con un mínimo de 100 puntos cada una, línea continua, color rojo para seno, grosor 2, marca x; color azul para coseno, grosor 2, marca rombo. Graficar sobre el mismo sistema de ejes (ver comando hold on). >> x = linspace(0, 2*pi,100); >> y1 = sin(x); >> y2 = cos(x); >> plot(x,y1,'rx','lineWidth',2) >> hold on >> plot(x,y2,'bd','linewidth',2) >> xlabel(‘Eje X'); >> ylabel('Eje Y'); >> title('CURVAS DE SENO Y COSENO.'); >> gtext('SEN(X)'); >> gtext('COS(X)'); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 4 b) y2 = e((((x-5).^2)/2)) Intervalo (0 ; 10), línea de trazos, color negro, grosor 2, marca rombo. Mínimo 50 puntos. >> x = linspace(0, 10,50); >> y2=exp((((x-5).^2)/2)); >> plot(x,y2,'k-d','linewidth',2) >> xlabel('X'); >> ylabel('Y'); >> title('FUNCION e'); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 5 >> plot(x,y2,'k--d','linewidth',2) c) Graficar la función definida por partes que se indica. Cada intervalo debe contener por lo menos 20 puntos. Cada sección debe ser de un color diferente. X1 = linspace (-10,-2, 20); X2 = linspace (-2, 0, 20) ; X3 = linspace (0, -10, 20); Y1 = -2.186*X1 -12.864; Y2 = 4.246 * X2; Y3 = 10*exp(-0.05*X3-0.5).*sin(0.03*X3.^2+0.7*X3); plot(X1, Y1, X2, Y2, X3, Y3); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 6 d) Matlab utiliza funciones identificadas como membership functions (mf) para aplicarlas en los sistemas de lógica fuzzy. Identificar las funciones identificar las funciones gaussmf y trapmf (usar el help) y definir sus parámetros para graficarlas completas en el intervalo [0 ; 10]. Graficar ambas sobre el mismo sistema de ejes (hold on) y distinto color. x = 0:0.1:10; y1 = gaussmf(x,[2 5]); y2 = trapmf(x,[1 5 7 8]); plot(x,y1) hold on plot(x,y2) xlabel('gaussmf, P=[2 5]') xlabel('trapmf, P=[1 5 7 8]') ylim([-0.05 1.05]) gtext('gaussmf'); gtext('trapmf'); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 7 3. Series. Generar las series que se indican: a) Generar una serie de 33 números aleatorios enteros de 3 cifras, en el intervalo [100;200]. z=fix(linspace(100,200,33)) b) Generar una serie S1 en el intervalo [0 ; 2] con un intervalo de /3.3 (usar el operador ‘:’). Generar una serie S2 en el mismo intervalo que contenga 7 elementos (usar la función linspace). Comparar ambas series y explicar sus diferencias. S1=[0:(pi/3.3):2*pi] S2=linspace(0,2*pi,7) La primera serie su elemento i esimo es (n-1)*pi/3.3 Y la otra serie se genera i esimo es (n-1)*1.0472 c) Explicar cuál es el problema al intentar generar las siguientes series: >> [10 : -2 : 25]> [-5 : 11 : 9] >> [42 : 2.5 : 23] • [10 : -2 : 25] no se puede porque está retrocediendo con “ -2 ”. • [-5 : 11 : 9] el salto es muy grande supera a la cota superior • [42 : 2.5 : 23] el “2.5” tiene que se negativo ya que el lado izquierdo es mayor que el 23 4. Escribir funciones en línea de comando. Detectar e indicar cuál es el problema que ocurre al intentar escribir en Matlab las siguientes funciones, solucionarlo y escribirlas adecuadamente: a) >> P1 = a * x^2 + b * x + c x = 1 3 4 >> P1 = a * x^2 + b * x + c El problema es el punto en x.^2 si x es un vector Problema de Definición de variable b) >> F(A,B,C) = 3 + 9^2 + pi 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 8 Error de sintaxis c) >> a=5; b=21; x=[4 5 6]; f1 = a*x+b*x^2 a=5; b=21; x=[4 5 6]; f1 = a*x+b*x.^2 el error en el punto por que x es un vector d) >> m=ones(2); n=magic(2); x=[7 8 9]; g1=m^2*x+x^*n Las dimensiones internas de la matriz deben coincidir. e) ¿para qué sirve el operador ‘.’ y el operador ‘;’? R/ “;” : sirve para definir el final de una operación parcial ”delimita cuando termina una línea de código” R/ “.”este carácter de punto separa las partes entera y fraccional de un número, como 3.1415. Los operadores de MATLAB que contienen un punto siempre actúan elemento por elemento. El carácter de punto también le permite acceder a los campos de una estructura, además de a las propiedades y los métodos de un objeto. 5. Cambio de escala (reescalado). x=linspace(0,4,10) y=(4/3)*x x1=linspace(0,4,10) y1=-4*x+16 plot(x,y,x1,y1) b) La ecuación siguiente representa a una función wavelet Morlet. Graficarla en el intervalo (-10,10) con un mínimo de 100 puntos. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 9 Re escalar la secuencia (sólo de ordenadas) al intervalo (-1,0) y graficar conjuntamente con la función original x=-10:0.001:10; y=cos(3*x).* exp(-(x.^2/2)); x1=-1:0.001:0; y1=cos(3*x1).* exp(-(x1.^2/2)); plot(x,y,x1,y1); title('FUNCION WAVELET MORLET.'); xlabel('X'); ylabel('Y'); gtext('y=cos(3*x).* exp(-(x.^2/2))'); gtext('y1=cos(3*x1).* exp(-(x1.^2/2))'); 6. Ruido. Sobre la secuencia temporal generada por la ecuación: y = 10 * sin(2*t) + 5 a) Obtener 50 puntos para t perteneciente a [0,120º]. Verificar en qué unidades trabaja sin(). t=linspace(0,2.0944,50); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 10 y = 10 * sin(2*t) + 5; b ,c) Graficar la señal sin ruido en rojo y superponer la señal con ruido en azul. y = 10 * sin(2*t); ruido=awgn(y,0.1); plot(t,y,'r',t,ruido,'b','linewidth',3); grid on; x1=0:0.0001:1; d) Calcular para ambas secuencias, la media (µ) y la desviación estándar (σ). >> u=mean(t); >> o=std(t); %desiviacion estandar >> u , o u = 1.0472 o = 0.6231 7. Scripts a) Escribir un script que dibuje un pulso como el de la figura. Los puntos (a, b, c, d) deben ser solicitados al usuario. Los flancos deben verse verticales. while (true) num1=input('ingrese valor: '); num2=input('ingrese valor: '); num3=input('ingrese valor: '); num4=input('ingrese valor: '); x=[num1num2 num2 num3 num3 num4]; z=[0 0 1 1 0 0 ]; plot(x,z); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 11 break; end b) Escribir un script que genere una matriz identidad de 1010. Luego, el script debe rellenar la matríz con valores aleatorios enteros del intervalo [2 ; 9], excepto en las celdas donde están los ‘1’. Orientación: revisar las funciones eye() y randi(). x=eye(10); for i=1:10 for j=1:10 if i ~= j x(i,j)=2+round(7*rand()); end end end x c) Escribir un script para ejecutar en forma automática el problema 3.a) anterior. La cantidad de números de la serie debe ser introducida por el usuario (función input), lo mismo que la cantidad de cifras de los números y el intervalo de la serie. clear; d=input('ingrese numeros de la serie'); fprintf('\n'); f=input('ingrese cantidad de cifras'); fprintf('la cantidad de cifras del numero elegido debe ser %d \n',f);%4 a=input('ingrese a');%a cantidad de cifras 4 canta=length(int2str(a)); while canta<f || canta>f fprintf('haga caso \n'); a=input('ingrese a'); canta=length(int2str(a)); end %b cantidad de cifras mayor o igual 4 fprintf('la cantidad de cifras del numero elegido debe ser %d \n',f); fprintf('y mayor que a'); b=input('ingrese b'); cantb=length(int2str(b)); while cantb<f || cantb>f || b <= a fprintf('haga caso \n'); b=input('ingrese b'); cantb=length(int2str(b)); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 12 end z=fix(linspace(a,b,d)); z 8. Script 2. Dada la siguiente matriz booleana, diseñar un script que: a) Genere 15 matrices booleanas, del mismo tamaño, conteniendo cada una 15 “unos” dispuestos en forma aleatoria. b) Compare las 15 matrices con la matriz de muestra e identifique las matrices de mayor y menor similitud. c) Por cada comparación realizada genere un índice de similitud (IS אԸ) entre 0 y 1 (un valor 1 significa que las matrices son iguales). Orientación: investigar el índice de Jaccard. Blanco = ‘0. 8) function y = cagarquince(b) for j=1:15 matrix{j}=zeros(b); i=1; while i<=15 rand1=round((b-1).*rand)+1; %VARIAR DE 1 A 10 rand2=round((b-1).*rand)+1; %VARIAR DE 1 A 10 if matrix{j}(rand1,rand2)==0 %1,5 matrix{j}(rand1,rand2)=1 ; i=i+1; end end end y=matrix; end 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 13 function y=similitud(A,B)%es la matris ejempleo,bes la selecionada de 15 matris l1=size(A); l2=size(B); if l1(1)~=l2(1) error('La matriz denden ser del mismo tamaño');%faltaba una coma end if l1(1)~=l1(2) error('La matriz debe ser cuadrada');%faltaba una coma end i=0; for j=1:l1(1) % A(j,t) for t=1:l1(1) if A(j,t)== B(j,t) i=i+1; end end end y=i/(l1(1)*l1(1)); end function w= PORCENTAJE(A,ORI) for i=1:length(A) c(i)=similitud(A{i},ORI); end w=c; end INCRESO POR CONSOLA A= cagarquince(10); ORI=zeros(10) ORI(2,7)=1 ORI(3,5)=1 ORI(3,6)=1 ORI(3,8)=1 ORI(4,4)=1 ORI(4,9)=1 ORI(5,3)=1 ORI(5,10)=1 ORI(6,3)=1 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 14 ORI(6,10)=1 ORI(7,2)=1 ORI(7,10)=1 ORI(8,3)=1 ORI(9,4)=1 ORI(10,5)=1 PORCENTAJE(A,ORI) %LA MAS SIMILAR Y LA MENOS SIMILAR [min,pos]=min(w) [max,pos]=max(w) 9) Función 1. Identificar qué hace la función que sigue. Previamente deben ser encontrados y corregidos dos errores en el código. CÓDIGO CORRECTO: function p = diagonal(matriz,valor) FilCol=size(matriz); if (valor~=0)&&(valor~=1) error('El 2do parámetro debe ser 0 o 1');%faltaba una coma end if FilCol(1)~=FilCol(2) error('La matriz debe ser cuadrada');%faltaba una coma 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 15 end for i=1:FilCol(1) for j=1:FilCol(2) if i==j%faltaba un = para que sea un condicional matriz(i,j)=valor; end end end%faltaba cierre del for p=matriz; end%faltaba un finalizar end La función lo que hace es poner en la diagonal principal el valor uno o cero dependiendo de que ingrese el usuario y si es otro valor te tira una excepción. 10. Función 2. Escribir una función con las características indicadas: a) Debe generar una matriz A (dimensión 10x10) de números enteros aleatorios en el rango [-4, 8] A=randi([-4 8],10,10); b) Debe encontrar la primera ocurrencia de una submatriz B2x2, dada por el usuario como argumento de la función, dentro de la matriz A. c) La función devolverá la posición (fila y columna) de la matriz encontrada. En caso contrario generará un mensaje de error indicando tal situación. d) La función debe verificar que la matriz ingresada sea de 2x2 y que sus valores estén en el rango indicado para A. Caso contrario, se emitirá un mensaje de error. 10) b) c) d) >>B=[2 3;4 5] >> matdos(A,B)% 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 16 function y= matdos(A,B)% L pos='No se encontro la matris B buscada en la matris A'; B=input('Ingrese matris 2x2: ') for j=1:(length(A)-1) for i=1:(length(A)-1) if A(i,j)==B(1,1) if A(i+1,j)== B(2,1) if A(i,j+1)==B(1,2) End y=po s; end end end end end if A(i+1,j+1)==B(2,2) pos=[i j] ; end 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Inteligencia Artificial Trabajo Práctico N° 2 Tema: Lógica Fuzzy INTEGRANTES: 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO 1. Funciones de pertenencia: a) Utilizando la interfaz gráfica de los sistemas de inferencia, definir 3 variables con las siguientes características: • 1º variable (v1): alcance (-10,+10). Tres particiones lineales hombro-triangulo- hombro con parámetros (-10, -8, -2), (-6,1, 5), (2, 7, 10) respectivamente. Creamos la variable V1: • 2º variable (v2): alcance (0,20). Cinco particiones tipo hombro-trapecio- triangulotrapecio-triangulo igualmente espaciados con solapamiento del 30%. 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Creamos la variable V2: • 3º variable (v3): alcance (0, 10). Cinco particiones con funciones continuas y derivables Z shape (zmf()) - gaussiana - campana generalizada - gaussiana - S shape (smf()). Parámetros a definir por el usuario para una distribución simétrica y un solapamiento aproximado al 25%. Creamos la variable V3: b) Un sistema de lógica fuzzy debe reemplazar dos funciones lineales por tramos, con funciones continuas y derivables, de manera que el error cuadrático medio sea menor a 10-2. Calcular los parámetros en cada caso: 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO • 1º función escalón (heaviside): alcance (0, 10), con flanco creciente en 7. Reemplazar con función hombro derecho (s- shape) o función sigmoide según convenga. >> x = 0:0.01:10; >> y = heavisisde (x-7); >> z = smf (x, [2 9]); >> ecm = mse (y-z) ecm = 0.0898 >> • 2º función triángulo (trimf): alcance (0, 10), con parámetros (3,6,9). Reemplazar con función gaussiana o diferencia de sigmoides según convenga. En Matlab el error cuadrático medio se calcula con la función mse(). ECM = Error Cuadrático Medio (en español); MSE = Mean Square Error (en inglés). Investigar la posible utilización de la aplicación gráfica cftool. >> x = 0:0.01:10; >> y = trimf (x, [3 6 9]); >> z=gaussmf (x, [4 8]); emf = 0.2259 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO 2. Definir y escribir los script de Matlab que realicen las siguientes funciones. Graficar.a) Función concentración f1 = concen(x,mu0) function y=concen(x,mu) if size(x)==size(mu) y=(mu).^2; plot(x,y,'g'); hold on plot(x,mu,'r' ); title('Funcion Concentracion'); xlabel('A'); ylabel('MOU'); gtext('A');gtext ('MUY A'); hold off else error('la dimesión de los datos es incorrecta'); end 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Ingresamos las variables de entrada desde command window: >> x = 1:11 x = 1 2 3 4 5 7 8 9 10 11 >> mu = 0:0.1:1 mu = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 >> b) Función dilación f2 = dilac(x,mu0) f2= μ if size(x)==size(m u) y = mu.^0.5; plot(x,y,'g'); hold on plot(x,mu,'r' ); xlabel('A'); ylabel('MOU'); title('Funcion Dilación'); gtext('A'); gtext ('MAS O MENOS A'); hold off else error('la dimesión de los datos esincorrecta'); end 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Ingresamos en la venta de command window: >> x = 1:11; >> mu = 0:0.1:1; >> dilación (x,mu) c) Función intensificación f3 = intens(x,mu0) function y=intensif (x,mu) [i,j]=size(x); [i,j]=size(mu); if size(x)==size(m u) mu2=mu; for k=1:j if mu2(i,k) >=0 && (i,k) <=0.5 mu2(i,k)=2 * mu2(i,k); else if mu2 (i,k) > 0.5 && mu2 (i,k) <=1 mu2(i,k)=1 - (2* (1-mu2(i,k))^2); en d end end plot(x, mu, 'r'); xlabel ('X'); ylabel ('MUO'); title ('Función Intensificación'); hold on plot (x,mu2, 'g'); 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO hold off y=mu2 ; gtext('A'); gtext('INTENSAMENTE A'); else disp ('La dimensión de los datos es incorrecta'); end end Ingresamos en la ventana de command window: >> x = 1:11; >> mu = 0:0.1:1; >> intensif (x,mu) >> intensif (x,mu) ans = >> 0 0.2000 0.4000 0.6000 0.8000 1.0000 0.6800 0.8200 0.9200 En todos los casos implementar el control de datos para cada función, como por ejemplo que los argumentos sean vectores fila de igual longitud, que la función de pertenencia de entrada esté en el alcance correcto, etc. Utilizando las funciones anteriores como base, escribir por lo menos tres funciones representativas de adverbios fuzzy, darles valores en el intervalo [0 ; 1], fuzzyficar y graficar junto a la función de base. 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Función Mas: function y=mas(x,mu) if size(mu)==size(x) y=mu.^1.25; plot(x,y,'b'); hold on plot(x,mu,'g' ); xlabel('A'); ylabel('MUO'); title('Funcion Mas'); gtext('A'); gtext('MAS(A)'); Ingresamos en la ventana de comand window: >> x = 1:11; >> mu = 0:0.1:1; >> mas (x,mu) Funcion Sumamente: function y=sumamente(x,mu) if size(x)==size(mu) y=mu.^3; plot (x,y,'b'); hold on plot(x,mu,'g'); xlabel('A'); ylabel('MUO'); title('Función Sumamente'); gtext('SUMAMENTE A') 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO else error('La dimensión de los datos es incorrecta'); end Ingresamos en la ventana de Window Command: >> x = 1:11; >> mu = 0:0.1:1; >> sumamente (x,mu) Función Cercano: function y=cercano(x,mu) if size(x)==size(mu) y=mu.^1.4; plot (x,y,'b'); hold on plot(x,mu,'g'); xlabel('A'); ylabel('MUO'); title('Función Cercano'); gtext('CERCANO A'); hold off else error('La dimensión de los datos es incorrecta'); end Ingresamos en la ventana de Command Window: >> x = 1:11; >> mu = 0:0.1:1; >> cercano (x,mu) 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Función Menos: function y=menos(x,mu) if size(x)==size(mu) y=mu.^0.75; plot (x,y,'b'); hold on plot(x,mu,'g'); xlabel('A'); ylabel('MUO'); title('Función Menos'); gtext('MENOS A'); hold off else error('La dimensión de los datos es incorrecta'); end 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Definir según un criterio coherente, las variables lingüísticas aspecto (particiones “lindo”, “estándar”, “feo”); y altruismo (particiones “generoso”,“insensible” “avaro”). Seleccionar las funciones de pertenencia para cada partición, en un rango [0 ; 10]. Luego, mostrar cómo se componen las funciones de pertenencia cuando se aplican los operadores lógicos que se indican a continuación: a) Lindo y no avaro. b) Feo o generoso. c) Estándar XOR insensible (en este caso conviene descomponer la función XOR en los operadores básicos. Comentar cómo resultan las funciones de pertenencia compuestas (comprimidas, expandidas, sesgadas, deformadas, etc. Establecemos las entradas x=0:10; Definimos las variables lingüísticas % aspectos FEO, ESTANDAR LINDO feo=trimf(x, [0 2 4]); estandar=trimf(x, [2 5 7]); lindo=trimf(x, [5 8 10]); % altruismo AVARO, INSENSIBLE, GENEROSO avaro= trimf(x,[-4 0 4]); insensible= trimf(x,[0 5 8]); generoso= trimf(x,[5 10 12]); Lindo y no avaro. lindoNOavaro=min(lindo,(1-avaro)); plot(x,lindoNOavaro,'r', 'linewidth',4); 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Feo o generoso. feoOgeneroso=max(feo,generoso); plot(x,feoOgeneroso,'r','linewidth',3); Estándar XOR insensible (en este caso conviene descomponer la función XOR en los operadores básicos. XOR=estandaryNoinsensible + noestandarYinsensible estandaryNoinsensible=min(estandar,(1-insensible)); noestandarYinsensible=min((1- estandar),insensible); XOR=max(estandaryNoinsensible,noestandarYinsensible); plot(x,XOR,'r', 'linewidth',4); 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO 3. Dibujar las modificaciones que sufren las funciones de pertenencia dadas, al aplicarle sucesivamente los adverbios fuzzy que se indican: a) Función de base: (x) Periferia Calcular (x) de la figura, utilizando por lo menos 100 puntos. Modificación 1: 1(x) cercano a (Periferia) function y=cercano(x,mu) if size(x)==size(mu) %Compara tamaño de vectores y si solo es igual continua% y=mu.^1.4; plot(x,mu,'r' ); hold on plot(x,y,'b'); xlabel('A'); ylabel('MU'); title('FUNCION CERCANO A ...'); gtext('Funcion A'); gtext('Muy cercano'); hold off end 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO x = linspace(10,60,100) y=trapmf(x,[10 25 50 50]) z=cercano(x,y) Modificación 2: 2(x) ligeramente cercano en (Periferia) LIGERAMENTE(A) = INT(MAS(A)) AND NOT(CON(A)) Primero que nada para poder trabajar con un función “LIGERAMENTE” debemos crear una función negación function y=negacion(x,mu) if size(x)==size(x) y=1-mu; plot(x,y,'g'); hold on plot(x,mu,'r' ); title('FuncionNegacion '); xlabel('A'); ylabel('MOU'); legend('Negado','A' ); hold off end x = linspace(10,60,100) y=trapmf(x,[10 25 50 50]) z=negacion(x,y) 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Ahora ya podemos trabajar sobre una función “ligeramente” trabajando con otras funciones definidas en puntos anteriores function y=ligeramente(x,mu) if size(x)==size(mu) fm=mas(x,mu); fi=intensif(x,fm); fc=concen(x,fi); fn=negacion(x,fc); fl=min(fi,fn); flc=cercania(x,fl); y=flc; plot(x,mu,'r' ); hold on plot(x,y,'b'); xlabel('A') ylabel('MUO'); title('FUNCION LIGERAMENTE CERCANA A'); legend('periferia','ligeramente cercana a periferia'); hold off end x = linspace(10,60,100) y=trapmf(x,[10 25 50 50]) z=ligeramente(x,y) 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO b) Función de base: (x) Cerca Modificación 1: 1(x) Más(Cerca) Se ingresa las variables de entrada e invocamos a la función MAS ya creada x=0:0.1:10 y=zmf(x,[3 7]) z=mas(x,y) Ref. (x) = zmf(x,[3,7]) con x = 0:0.1:10 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Modificación 2: 2(x) Bastante(Más(Cerca)) Se crea la función para el adverbio “bastante” conociendo que BASTANTE(A) = INT(A) AND NOT(INT(CON(A))) Y donde se necesitara el uso de funciones ya creadas function y=bastante(x,mu) if size(x)==size(mu) i=intensif(x,mu); c=concen(x,mu ); intcon=intensif(x, c); n=negacion(x,intcon); and=min(intcon,n); y=and; plot(x,mu,'r' ); hold on plot(x,y,'b'); xlabel('A'); ylabel('MUO'); legend('A','Bastante '); hold off end Utilizamos otra función para acercar aun mas el valor 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO function y=bastantemascerca(x,mu) if size(x)==size(mu) m=mas(x,mu); b=bastante(x,m); y=b; plot(x,mu,'r' ); hold on plot(x,y,'b'); xlabel('A'); ylabel('MUO'); legend('A','bastantemas cerca') hold off end x=0:0.1:1 0 y=zmf(x,[3 7]) z=bastantemascerca(x, y) 4. Aplicación de adverbios múltiples. Escribir una función de Matlab que aplique sucesivamente hasta tres adverbios fuzzy a una secuencia de pertenencia base mu0, con las siguientes condiciones: a) La función debe recibir como entrada una secuencia [x0 , mu0]. b) Debe incorporar adicionalmente una, dos o tres etiquetas que indiquen el tipo de adverbio a aplicar. En la función se debe reconocer la cantidad de adverbios a aplicar (comando nargin). Las etiquetas pueden ser por ejemplo ‘no’, ‘muy’, ‘algo’, ‘aproximadamente’, etc. 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO c) Incorporar controles para asegurar que x0 y mu0 sean de la misma longitud y que los valores de mu0 estén en el intervalo [0 ; 1]. d) Incorporar un mínimo de cinco adverbios reconocibles por la función (se pueden utilizarlos propuestos en clase). Puede utilizar internamente las funciones definidas en el punto anterior como funciones auxiliares (deben estar en la misma carpeta). e) Como argumentos de salida, la función debe generar la secuencia de base x0 (la misma que ingresa), la secuencia de pertenencia mu0 (la misma que ingresa) y la secuencia de pertenencia modificada -muadv- por la aplicación sucesiva de los adverbios indicados en el argumento de la función. Por ejemplo: [ x 0 , m u 0 , m u a d v ] = a d v _ m u l t i p l e s ( x 0 , m u 0 , ’ n o ’ , ’ m u y ’ , ’ a p r o x i m a d a m e n t e ’ ) f) La función debe generar además una gráfica que muestre el conjunto de base y los conjuntos modificados con diferentes colores, sobre el mismo sistema de ejes. function [x0,mu0,muadv]=advMultiples(x0,mu0,muadv) clc if (nargin<3)&&(nargin>5) error('FALTA DEFINIR ADVERBIOS'); end if (length(x0) == length(mu0)) switch muadv case'sumamente' muadv = sumamente(x0, mu0); case'mas' muadv = mas(x0, mu0); case'menos' muadv = menos(x0, mu0); case'cercano' muadv = cercano(x0, mu0); case'negacion' muadv = negacion(x0, mu0); otherwise error('Adverbio no definido') end end Entradas x = 0:.1:10; mu=gaussmf(x,[2,5]); 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO Aplicando la función [x0,mu0,muAdv]=advMultiples(x,mu,'sumament e'); Gafica para el argumento ‘sumamente’ por ejemplo Grafica para el argumento ‘negacion’ por ejemplo 2020 Facultad de Ingeniería UNJu GRUPO: IA_EN_TU_BOLSILLO 5. Ajuste de funciones. Un experto proporciona al Ing. de Conocimiento un conjunto de 21 puntos representativos de una variable cripsVc. Para poder utilizar tal información el Ing. debe seleccionar(del conjunto de funciones mf de Matlab) una función que represente a tales puntos. Investigar entre las funciones de pertenencia usuales (lineales y no lineales), cual es la que mejor se ajusta al conjunto de puntos dados (mínimo valor de ECM). En el caso de las funciones paramétricas, se deben ajustar adecuadamente sus parámetros. Indicar el valor del ECM obtenido y dibujar sobre un sistema de ejes la nube de puntos iniciales (función stem()sin el tallo) y la función seleccionada(con plot()). Estrategia: es conveniente dibujar el perfil de puntos iniciales, ordenados para Vc, para reconocerel parecido. Entradas x = (0:1:20); y = [0.097, 0.126, 0.278, 0.546, 0.632, 0.814, 0.905, 0.913, 0.957, 0.964, 0.970, 0.959, 0.957, 0.915, 0.800, 0.792, 0.655, 0.485, 0.421, 0.157, 0.141]; function punto6(x,y) title('Funcion STEM y Funcion PIMF'); y1= [x,y]; y2= pimf(x,[-2 8 12 22]); plot(x,y2,'g ') hold on stem(x,y, 'LineStyle','none','MarkerFaceColor','red','MarkerEdgeColor','white') axis([0 21 0 1]) legend ('PIMF', 'STEM'); end Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO Inteligencia Artificial Trabajo Práctico N° 3 Tema: Sistemas de Inferencia Fuzzy INTEGRANTES: Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO 1. Proceso de agregación/composición: trabajando desde la línea de comando, generar tres funciones implicadas por el método de Larsen (producto), en un intervalo [0;10]. a) Función triángulo(trimf)en[015],implicada con un DOF=0.5. b) Función trapecio(trapmf)en[1469],implicada con un DOF=0.7. c) Función triángulo(trimf)en[57.59],implicada con un DOF=0.9. Utilizando una cantidad suficiente de puntos (min 100) en cada secuencia, aplicar a estas funciones un proceso de agregación por máximo y graficar las cuatro secuencias en un mismo sistema de ejes. El proceso debería verse como muestra la figura de la derecha. Luego, aplicar a las funciones de base anteriores, un proceso de agregación por suma y graficar las cuatro secuencias en un mismo sistema de ejes, diferente al anterior. Si la secuencia excede el valor máximo(1), recortar. Para las dos secuencias implicadas calcular el centroide (función defuzz) y comentar el resultado. Entradas x = linspace(0,10); mu1 = 0.5.*trimf(x,[0 1 5]); mu2 = 0.7.*trapmf(x,[1 4 6 9]); mu3 = 0.9.*trimf(x,[5 7.5 9]); Opcion 1 agregacion por sumas agregacion(x,mu1,mu2,mu3,1 ) Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO Opcion 2 agregacion por maximo agregacion(x,mu1,mu2,mu3,2) Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO Función Utilizada function agregacion(x,mu1,mu2,mu3,tipo) hold on plot(x,mu1,'r','linewidth',2); hold off hold on plot(x,mu2,'g','linewidth',2); hold off hold on plot(x,mu3,'y','linewidth',2); hold off switch tipo case 1 a=(mu1+mu2)-(mu1.*mu2); aux1=(a+mu3)- (a.*mu3); aux=aux1; hold on plot(x,aux,'c','linewidth', 2); title('Resultado de agregacion por suma'); aux=max(mu1,max(mu2,mu); hold on plot(x,aux,'c','linewidth',2); Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO title('Resultado de agregacion por maximo'); legend('mu1','mu2','mu3','agregacion max'); hold off otherwise disp('Ingrese valores correctos'); en d end 2. Considerando la función implicada y agregada de la figura, defuzzyficar con los siguientes criterios: Calcular el centroide aplicando fórmulas para funciones regulares. Calcular el centroide con la función defuzz. Calcular el ECM para ambos centroides calculados. Proponer un método de defuzzyficación diferente a los estudiados y calcular el valor crisp (defuzzyficación) de la función de la figura. Calcular el ECM entre el método propuesto y el método defuzz. Calcular el centroide aplicando fórmulas para funciones regulares. Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO AREA 𝟎. 𝟐 ∗ 𝟎. 𝟓 𝑨𝟏 = 𝟐 = 𝟎. 𝟎𝟓 𝐴5 = 0.2 ∗ 0.25 2 = 0.025 𝑨𝟐 = 𝟎. 𝟐 ∗ 𝟎. 𝟓 = 𝟎. 𝟏 𝐴6 = 1 ∗ 0.25 = 0.25 𝑨𝟑 = 𝟎. 𝟒 ∗ 𝟎. 𝟓 𝟐 = 𝟎. 𝟏 𝐴7 = 1.4 ∗ 0.5 = 0.7 𝑨𝟒 = 𝟎. 𝟒 ∗ 𝟎. 𝟐𝟓 = 𝟎. 𝟏 𝐴8 = 𝑏 0.2 ∗ 0.75 2 ℎ = 0.075 𝑟𝑒𝑐𝑡𝑎𝑛𝑔𝑢𝑙𝑜 𝐶𝑥 = 2 ; 𝐶𝑦 = 2 Para centroide 𝑑𝑒 𝑐𝑎𝑑𝑎 𝑓𝑖𝑔𝑢𝑟𝑎 𝑏 𝑡𝑟𝑖𝑎𝑛𝑔𝑢𝑙𝑜 𝐶𝑥 = 3 ; ℎ 𝐶𝑦 = 3 𝐶 = 2𝑏 ; 𝐶 = ℎ { 𝑥 3 𝑦 3 f1: Cx= 2*0.2/3=0.13Cy=0.5/3=0.17 f2: Cx=0.2/2=0.1 Cy=0.5/2=0.25 f3: Cx=2*0.4/3=0.26 Cy=0.5/3=0.17 f4: Cx=0.4/2=0.2 Cy=0.25/2=0.125 f5: Cx= 0.2/3=0.07 Cy=0.25/3=0.08 f6: Cx=1/2=0.5 Cy=0.25/2=0.125 f7: Cx=1.4/2=0.7 Cy=0.5/2=0.25 f8: Cx=0.2/3=0.07 Cy=0.75/3=0.25 Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO Para el centroide de la figura 𝐴1 ∗ 𝑋1 + 𝐴2 ∗ 𝑋2…. 𝑥 = 𝐴𝑇 𝑦 = 𝐴1 ∗ 𝑌1 + 𝐴2 ∗ 𝑌2…. 𝐴𝑇 𝑥 = 0.05 ∗ 0.13 + 0.1 ∗ (0.3 + 0.66 + 1) + 0.025 ∗ 1.27 + 0.25 ∗ 1.3 + 0.7 ∗ 1.1 + 0.075 ∗ 1.87 1.4 = 0.05 𝑦 = 0.05 ∗ 0.17 + 0.1 ∗ (0.25 + 0.67 + 0.875) + 0.025 ∗ 0.83 + 0.25 ∗ 0.625 + 0.7 ∗ 0.25 + 0.075 ∗ 0.25 1.4 = 0.4 Por lo tanto el centroide estará [0.05, 0.4] Calcular centroide con la función defuzz x=-1:0.2:1; f1=trapmf(x,[-1 -0.8 -0.4 -0.2]); f2=trapmf(x,[-1 -0.2 0.2 1]); f3=trapmf(x,[0 0.2 0.8 1]); FT=max(0.5*f1,1*f2); FT=max(FT,0.75*f3); plot(x,FT,'Linewidth',3); grid on; x1=defuzz(x,FT,'centroid '); Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO h1 = line([x1 x1],[0.4 1],'Color','k'); t1 = text(x1,0.4,' centroide','FontWeight','bold'); X1=0.05 Calcular el ECM (error cuadráticomedio) para ambos cálculos medio). 𝐸𝐶𝑀 = (0.05 − 0.05)^2 = 0 Proponer un método de defuzzyficación diferente a los estudiados y calcular el valor crisp (defuzzyficación) de la función de la figura. Método de la bisectriz: La bisectriz es la línea vertical que dividirá la región en dos subregiones de igual área. Es a veces, pero no siempre coincidente con la línea de centro. x=-1:0.1:1; f1=trapmf(x,[-1 -0.8 -0.4 -0.2]); f2=trapmf(x,[-1 -0.2 0.2 1]); f3=trapmf(x,[0 0.2 0.8 1]) Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO FT=max(0.5*f1,1*f2); FT=max(FT,0.75*f3); plot(x,FT,'Linewid th',3); grid on; x2 = defuzz(x,FT,'bisector'); h2 = line([x2 x2],[0.3 1],'Color','y','Linewidth',2); t2 = text(x2,0.3,'BISECTOR','FontWeight','bold'); x3 = defuzz(x,FT,'mom'); x4 = defuzz(x,FT,'som'); x5 = defuzz(x,FT,'lom'); h3 = line([x3 x3],[0.5 1],'Color','r','Linewidth',2); t3 = text(x3,0.7,' MOM','FontWeight','bold','Color','r'); h4 = line([x4 x4],[0.6 1],'Color','m','Linewidth',2); t4 = text(x4,0.6,' SOM','FontWeight','bold','Color','m'); h5 = line([x5 x5],[0.6 1],'Color','c','Linewidth',2); t5 = text(x5,0.6,' LOM','FontWeight','bold','Color','c'); x5=-0.2 Facultad de Ingeniería (UNJu) 2020 GRUPO:IA_EN_TU_BOLSILLO Calcular el ECM entre el método propuesto y el método defuzz. Calcular el ECM (error cuadráticomedio) para ambos cálculos medio). 𝐸𝐶𝑀 = (0.05 + 0.2)^2 = 0.0625 *El ECM calculado entre el método propuesto y el método por medio de la función deffuz nos da un error mas grande 3. Función de transferencia fuzzy. Con los conjuntos fuzzy que se muestran, y con la asistencia de la GUI fuzzy, mostrar como resultan las funciones de transferencia, para un sistema FIS con las siguientes condiciones. Considerar implicación de Mamdani y defuzzyficación por centroide. Comentar los resultados. * Dos entradas: e y De; una salida: U. * Implicación de Mamdani y defuzzyficación por centroide. * Las particiones y alcances para e y De son iguales. * Las reglas del sistema están implícitas en la tabla siguiente. Facultad de Ingeniería (UNJu) 2020 Reglas Función de transferencia GRUPO: IA_EN_TU_BOLSILLO 10 Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO 11 TOLAY Función de transferencia Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO 12 TOLAY Función de transferencia Lo que se obtiene al anular una de las entradas en cada grafica, es una grafica la cual es simétrica con respecto al origen 4. Sistema FIS genérico. Construir un sistema de inferencia fuzzy para un problema genérico que contiene tres variables, dos de entrada (x, y) y una de salida (z). Las variables (x, y, z) toman valores en el intervalo [0,10], y sus funciones de pertenencia son: µlow = trapmf(-5,0,3,8) µhigh = trapmf(4,6,10,12) La base de conocimiento está formada por las siguientes reglas regla 1: if x is low AND y is low then z is high regla 2: if x is low OR y is NOT high then z is low regla 3: if x is high AND y is low then z is low regla 4: if x is NOT high AND y is high then z is high Determinar la salida crisp del sistema para las siguientes instancias: (x y) = (0 3.2) ; (x y) = (5.5 1.3). Considerar una implicación tipo Mamdani y una defuzzificación por centroide. Obtener y mostrar la superficie de inferencia. Explicar qué es la superficie de inferencia. Facultad de Ingeniería (UNJu) 2020 Se crea el sistema genérico FIS con su dos variables de entrada (x, y) una de salida (z) y las consideraciones propuestas. GRUPO: IA_EN_TU_BOLSILLO 13 Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Determinar la salida crisp del sistema para las siguientes instancias: (x y) = (0 3.2) Z=4.97 (x y) = (5.5 1.3). Z=4.15 Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Superficie de inferencia Lo que se obtiene es una superficie (z) que representa la salida del controlador Fuzzy como función de las 2 señales de entrada x, y. 5) Control fuzzy de un equipo industrial. El control fuzzy (en este caso de acción en dos niveles)de un equipo industrial se maneja con las siguientes reglas. R1) Si la temperatura es alta entonces la presión es elevada. R2) Si la temperatura es baja entonces la presión es baja. R3) Si la presión es baja entonces la entrada de combustible debe ser grande R4) Si la presión es elevada entonces la entrada de combustible debe ser pequeña Los valores de pertenencia en puntos clave (/var) para cada variable, son los siguientes: Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO a) Interpretar y dibujar las funciones de pertenencia de las variables lingüísticas y fuzzy indicadas. b) Determinar la entrada de combustible al sistema (implicancia Mamdani/centroide)para valores de temperatura de 30º, 60º y 90º. Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Aplicamos las reglas: R1) Si la temperatura es alta entonces la presión es elevada. R2) Si la temperatura es baja entonces la presión Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Para valores de temperatura de 30º: Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Para valores de temperatura de 60º: Para valores de temperatura de 90º: Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Aplicamos las reglas: R3) Si la presión es baja entonces la entrada de combustible debe ser grande R4) Si la presión es elevada entonces la entrada de combustible debe ser pequeña GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 Presión de: 700 Presión de: 906 GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 Presión de: 1780 6. Control fuzzy de un acondicionador de aire. Se pretende controlar temperatura con un sistema de inferencia fuzzy (FIS). En función de la temperatura actual del ambiente y la temperatura previamente medida, se determina la potencia del sistema acondicionadorde aire. La implementación de las variables fuzzy de entrada –temperatura actual y anterior– fueron configuradas con tres particiones como se muestra en la tabla de decisión siguiente y la figura central. La potencia del calefactor (variable de salida), inserta en la tabla de reglas y mostrada en la figura de la derecha, se disgrega en cinco particiones: máximo frío (MF), frío (F), apagado (Off), calor (C) y máximo calor (MC), según la figura: GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 Variables entrada según la redefinición GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 Variable de Salida: Cuando la Temperatura Actual es igual a -15 y la T° Anterior igual a -10: Cuando la Temperatura Actual es igual a 18º y la Temperatura Anterior igual a -5º: GRUPO: IA_EN_TU_BOLSILLO Facultad de Ingeniería (UNJu) 2020 Facultad de Ingeniería (UNJu) 2020 Cuando la Temperatura Actual es igual a 3.4 y la Temperatura Anterior igual a 7: La Superficie de Respuesta es: GRUPO: IA_EN_TU_BOLSILLO 28 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO : ✓ Tabla de decisión: la tabla fue desarrollada de la manera propuesta, ya que se pensó en tender hacia el output “medio”. ✓ La forma de la superficie de respuesta se ve como si fuese la ladera de una montaña de viéndola de un solo lado, debido a que cuando las temperaturas son altas, disminuye la temperatura que emite el aire acondicionado y viceversa. ✓ Funcionamiento del sistema FIS: El sistema en general también se vio afectado en cuanto a la salida del mismo, por los rangos que se identificaron a cada variable de entrada, que fueron necesarios para que funcionasen acorde a la tabla. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Inteligencia Artificial Trabajo Práctico N° 4 REDES NEURONALES INTEGRANTES: 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Si se puede asociar más perceptron para realizar la compuerta XOR 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO ENTRENAMIENTO DE PATRONES function [ W ] = training( PATRON_SD ) % ENTRENAMIENTO CON DOS ENTRADAS SY_PATRON = []; W = 0.3 .* rand(1,3);% VECTOR DE PESOS ALEATORIOS 1x3 aprendido = logical(0);% INCICIANIZANDO CON EL VALOR VERDADERO while ~aprendido 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO for p=1:4 error = logical(0); while ~error NET = sum(W .* PATRON_SD(p,1:3)); SY_PATRON(p) = sign(NET); error = (PATRON_SD(p,4) - SY_PATRON(p)) == 0; if ~error fa = 0.8;%FACTOR DE APRENDISAJE % varW: VECTOR DE LOS DELTA Wi POR PATRON % varW = fa*xi*ei for i=1:3 varW(i) = [(fa * PATRON_SD(p,i)*(PATRON_SD(p,4) - SY_PATRON(p)))]; end W = W + varW; end end end for p = 1:4 salida(p) = sign(sum(PATRON_SD(p,1:3) .* W)); end %COMPROBACIÓN DEL APRENDIZJE aprendido = all(PATRON_SD(:,4)' == salida); end end %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ RED PERCEPTRON PARA LA FUNCIÓN XOR clear; clc; disp('RED PERCEPTRON PARA LA FUNCIÓN XOR'); neurona1 = [-1 -1 -1 -1; -1 1 -1 1; % X1 Y X2 BIAS ( x1 ?¬x2) 1 -1 -1 -1; 1 1 -1 -1]; %Patron para la neurona2 neurona2 = [ -1 -1 -1 -1; -1 1 -1 -1; % X1 Y X2 BIAS ( x1 ?¬x2) 1 -1 -1 1; 1 1 -1 -1]; %Patron para la neurona3 neurona3 = [ -1 -1 -1 -1; -1 1 -1 1; % X1 Y X2 BIAS (¬x1 ?x2)? (x1 ?¬x2) 1 -1 -1 1; -1 -1 -1 -1]; %FASE DE ENTRENAMIENTO W1 = training(neurona1); W2 = training(neurona2); W3 = training(neurona3); %FIN DEL ENTRENAMINETO %FASE DE FUNCIONALIDAD % EL VECTOR ENTRADA DEBE SER DE DOS ELEMNETOS band = logical(1); while band disp('Formato de la ENTRADA [X1 X2]') disp('ENTRADA binaria -1 y 1') ENTRADA = input('ENTRADA: '); ENTRADA(3) = -1; NET1 = sum(W1 .* ENTRADA); 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO NET2 = sum(W2 .* ENTRADA); SALIDA1 = sign(NET1); SALIDA2 = sign(NET2); NET3 = sum(W3 .* [SALIDA1 SALIDA2 -1]); SALIDA3 = sign(NET3); disp('Resultado de la operación'); disp(SALIDA3); OP = input('Desea continuar S/N: '); %ejemplo de un valor ['s'] band = OP == 's' || OP == 'S'; end %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ADALINE – ADAptive LINear Element: Modelo feedforward mononeuronal de aprendizaje supervisado. Opera en tiempo discreto, con aprendizaje off-line a través de la regla de mínimos cuadrados. SE VA USAR LA FUNCION LINEAL (Relu para los colegas) PARA LA FUNCION DE ACTIVACION % Binario a OCTAL Red Adaline clc % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %XXXXXXXXXXXXX Script TRAININGXXXXXXXXXXXXXXXXXXXX % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ X=[0 0 0; 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 0 0 1; 0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1]; Y=[0;1;2;3;4;5;6;7]; % Learning reat fact de aprendi alfa=0.03; W=-1+2*rand(3,1);% Pesos Iniciales Aleatorios entre [-1;1] matris 3x1 bias=-1; % Umbral o Bias inicial c=0;% Cont epsilon=0.00000000000000000000001;% Tolerancia % Error Cuadrático Medio Inicial Errorcm=2; % XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX % XXXXAprendizaje (LEARNED)XXXXXXXXXXXX % XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX while (Errorcm>epsilon) c=c+1; Out=X*W+bias; %MULTIPLICACION DE MATRICES NOS QUEDA UNA DE 8X1 el cual ya se encarga de hacer la suma de de los ?x*wii e=Y-Out;%Error Errorcm=sum(e.^2)/2;% Cálculo del Error Cuadrático Medio % Variación de los pesos para todos los patrones for i=1:8 Out(i,1)=X(i,:)*W+bias;%devolucion de 1x1 error=Y(i,1)-Out(i,1); W(1,1)=alfa*error*X(i,1)+W(1,1); W(2,1)=alfa*error*X(i,2)+W(2,1); W(3,1)=alfa*error*X(i,3)+W(3,1); bias=alfa*error+bias; end end % ----------------------------------------------------------------------- disp('Peso Sináptico W') disp(W); sprintf('Bias o Umbral= %g\n',bias) sprintf('Error Cuadrático Medio= %g\n',Errorcm); sprintf('X1 X2 X3 Y') [X Out] 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO clear, close all, clc %COMPUERTA XNOR % Patrones de aprendizaje y objetivos P = [0 0 1 1; 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 0 1 0 1]; T = [1 -1 -1 1]; Q = length(P); n1 = 2; ep = 1; % Ventana de valores iniciales % Valores iniciales W1 = ep*(2*rand(n1,2)-1); b1 = ep*(2*rand(n1,1)-1); W2 = ep*(2*rand(1,n1)-1); b2 = ep*(2*rand-1); alfa =0.003; for Epocas = 1:10000 sum = 0; for q = 1:Q % q = randi(Q); % Propagación de la entrada hacia la salida a1 = tansig(W1*P(:,q) + b1); a2(q) = tansig(W2*a1 + b2); % Retropropagación de la sensibilidades e = T(q)-a2(q); s2 = -2*(1-a2(q)^2)*e; s1 = diag(1-a1.^2)*W2'*s2; % Actualización depesos sinapticos y polarizaciones W2 = W2 - alfa*s2*a1'; b2 = b2 - alfa*s2; W1 = W1 - alfa*s1*P(:,q)'; b1 = b1 - alfa*s1; % Sumando el error cuadratico sum = e^2 + sum; end % Error cuadratico medio emedio(Epocas) = sum/Q; end figure, subplot(1,2,1), plot(emedio) % Verificación de la respuesta de la multicapa for q = 1:Q a(q) = tansig(W2*sign(W1*P(:,q) + b1)+ b2); end a % Frontera de decisión u = linspace(-2, 2, 100); v = linspace(-2, 2, 100); for i = 1:length(u) for j = 1:length(v) z(i,j) = tansig(W2*sign(W1*[u(i); v(j)] + b1) + b2); end end subplot(1,2,2), hold on, contour(u, v, z',[-0.9, 0, 0.9],'LineWidth', 2) %Por que debo transponer a z axis([-0.5 1.5 -0.5 1.5]), plot(P(1,[1,4]),P(2,[1,4]),'ro', P(1,[2,3]),P(2,[2,3]),'bo') 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO %RED DE HOPFIELD CON 3 NEURONAS %CÁLCULO DE PESOS %Patrones de entrada e(1,:) = [-1 -1 1 1]; e(2,:) = [-1 1 -1 1]; e(3,:) = [-1 -1 1 1]; w=[]; %Inicializa la matriz de pesos en cero %Cálculo de pesos (Regla de Cooper-Hebb) for i=1:4 for j=1:4 w(i,j)=0; for p=1:3 %cantidad de patrones if i~=j w(i,j)=w(i,j)+e(p,i)*e(p,j); end end end end clear i j A) pesos calculados 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO B) patrones no entrenados o no reconocidos por la red e1 e2 e3 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 clear s e= input( ' Ingrese patron ' ) ; s(1 ,:)=e; %Inicializa la red con el patrón a vereficar F=0 ; %Iniciali za un flag para control del segmento wh ile t=l; \Inicializa el tiempo de teraci6n t=1; while F==0 t=t+1; %muktipliacar lamtris por el valor for i=1:4 net(t,i)=0; for j =1:4 if i~=j paso= s(t-1,j)*w( i, j) ; net(t,i) = net(t,i)+paso; end end s(t,i)=sign(net(t,i)+e(i)); end if s(t,:)==s(t-1,:) % if logical (s(t,:) ==s (t-1, :) ) 1 1 logical (s (t , : ) == s ( t-2, :) )" F=1; end end %clear F t i j paso net 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO En la ultima entrada que se ingreso 1100=11-1-1 hay un error ya que toma como un valor ya aprendido y intenta iterar mas veces y si ingresamos un valor 1 -1 1 -1 se queda en un bucle infinito creo que son los pocas entradas qe tiene. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO CRUZ, ROBLES, TOLAY %DEFINICION DE FUNCION SIGMOIDE function y = sigmoide(n) y = 1./(1 + exp(-n)); end %ENTRENAMIENTO Y VERIFICACION clear,clc y=linspace(0,2*pi,20); x=linspace(0,2*pi,20); z=linspace(-1,1,20); T=sin(x)+cos(y)+z; P=x; Q = size(P,2); % Valores iniciales n1 = 3;%nro de neuronas en la capa 1 ep = 1; W1 = 2*ep*rand(n1,1) - ep; 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO b1 = 2*ep*rand(n1,1) - ep; W2 = 2*ep*rand(1,n1) - ep; b2 = 2*ep*rand - ep; error=1; epsion=0.001; alfa = 0.01; while error>epsion for Epocas = 1:2000 sum = 0; for q = 1:Q %q = randi(Q); % Propagación de la entrada hacia la salida a1 = sigmoide(W1*P(q) + b1); a2 = W2*a1 + b2; % Retropropagación de la sensibilidades e = T(q)-a2; s2 = -2*1*e; s1 = diag((1-a1).*a1)*W2'*s2; % Actualización de pesos sinapticos y polarizaciones W2 = W2 - alfa*s2*a1'; b2 = b2 - alfa*s2; W1 = W1 - alfa*s1*P(q)'; b1 = b1 - alfa*s1; % Sumando el error cuadratico sum = e^2 + sum; end % Error cuadratico medio emedio(Epocas) = sum/Q; error=sum/Q; end end figure, plot(emedio) % Verificación grafica de la respuesta de la multicapa p = -0:0.01:20; for q = 1:length(p) a1 = sigmoide(W1*p(q) + b1); a2(q) = W2*a1 + b2; end figure, plot(p,a2,P,T,'r*') % Calculo del error cuadratico medio para los patrones de ejemplo ec = 0; for q = 1:Q a1 = sigmoide(W1*P(q) + b1); a = W2*a1 + b2; ec = ec + (T(q) - a)^2; end ec/Q GRAFICA DEL ERROR CUDRATICO MEDIO Y APROXIMACION DE LA FUNCION 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO ERROR CUADRATICO MEDIO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO clc;clear; uno=xlsread('D:\MATERIASINGENIERIA\2020\IA\uno.xlsx'); UNO=[uno(1,:) uno(2,:) uno(3,:) uno(4,:) uno(5,:) uno(6,:) uno(7,:) uno(8,:) uno(9,:) uno(10,:) uno(11,:)]; cuatro=xlsread('D:\MATERIASINGENIERIA\2020\IA\cuatro.xlsx'); CUATRO=[cuatro(1,:) cuatro(2,:) cuatro(3,:) cuatro(4,:) cuatro(5,:) cuatro(6,:) cuatro(7,:) cuatro(8,:) cuatro(9,:) cuatro(10,:) cuatro(11,:)]; %========================================== %test unotest=xlsread('D:\MATERIASINGENIERIA\2020\IA\unotest.xlsx'); UNOTEST=[unotest(1,:) unotest(2,:) unotest(3,:) unotest(4,:) unotest(5,:) unotest(6,:) unotest(7,:) unotest(8,:) unotest(9,:) unotest(10,:) unotest(11,:)]; cuatrotest=xlsread('D:\MATERIASINGENIERIA\2020\IA\cuatrotest.xlsx'); CUATROTEST=[cuatrotest(1,:) cuatrotest(2,:) cuatrotest(3,:) cuatrotest(4,:) cuatrotest(5,:) cuatrotest(6,:) cuatrotest(7,:) cuatrotest(8,:) cuatrotest(9,:) cuatrotest(10,:) cuatrotest(11,:)]; %=========================================== %============================================= %PT PATRONES PT(1,:)=UNO; %PT(2,:)=DOS; %PT(3,:)=TRES; PT(2,:)=CUATRO; %PT(5,:)=CINCO; %PT(6,:)=SIES; %PT(7,:)=SIETE; %PT(8,:)=OCHO; %PT(9,:)=NUEVE; %PT(10,:)=CERO; %----------------------------------------------------------------------- % Inicializa la matriz de pesos en cero % Como la matriz es de 11x7, se tiene 77 neuronas, en consecuencia 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO % La matriz de pesos sera una matriz cuadrada de 77 W=zeros(77); %----------------------------------------------------------------------%- %carga de matris for i=1:77 for j=1:77 W(i,j)=0; for p=1:2 if j~=i W(i,j)=W(i,j)+PT(p,j)*PT(p,i); end end end end clear i j % OPERACION DE LA RED HOPFIELD %-------------------------------------------------------------------- clear s e= UNOTEST; s(1,:)=e; %Inicializa la red con el patrón a vereficar F=0 ; %Iniciali za un flag para control del segmento wh ile t=l; \Inicializa el tiempo de teraci6n t=1; while F==0 t=t+1;%muktipliacar lamtris por el valor for i=1:77 net(t,i)=0; for j =1:77 if i~=j paso=s(t-1,j)*W(i,j); net(t,i)=net(t,i)+paso; end end s(t,i)=sign(net(t,i)+e(i)); end if s(t,:)==s(t-1,:) % if logical (s(t,:) ==s (t-1, :) ) 1 1 logical (s (t , : ) == s ( t-2, :) )" F=1; end end S=[s(t,1:7); s(t,8:14); s(t,15:21); s(t,22:28); s(t,29:35); s(t,36:42); s(t,43:49); s(t,50:56); s(t,57:63); s(t,64:70); s(t,71:77)]; RE=S; for i=1:11 for j =1:7 if RE(i,j)==1 RE(i,j)='@'; end end end clear F t i j net paso 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO CONCLUSIONES :el nivel de recuperación es de un 100% con estos ejemplos en particular . 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO CRUZ, ROBLES, TOLAY Inteligencia Artificial Trabajo PrácticoN° 5 Tema:Redes neuronales artificiales 2 INTEGRANTES: 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 1. AGRUPAMIENTO a) Mediante un script de Matlab, generar una nube de datos bidimensionales aleatorios de 400 puntos, de tal forma que se distribuya en 4 grupos de aproximadamente 100 puntos por grupo, donde cada grupo esté mayormente contenido en cada circunferencia, como se muestra en la figura de la derecha. Dibujar los puntos sobre un sistema de ejes. b) Utilizando la función K-means, en configuración automática, deter- minar cómo realiza la agrupación el algoritmo. Consignar la cantidad de grupos identificados, cantidad de elementos por grupo, posición de los centros y la distancia media de cada grupo. Dibujar los puntos sobre un sistema de ejes, identificando cada grupo con un color y marca diferentes. c).Utilizando la función K-means (condiciones por defecto), realizar una agrupación en 4 grupos específicamente. Consignar la cantidad de elementos por grupo, posición de los centros y la distancia media de cada grupo. Dibujar los puntos sobre un sistema de ejes, identificando cada grupo con un color y marca diferentes. d) El algoritmo dispone de cinco métodos diferentes para medir las distancias entre los puntos. Repetir el problema del punto c), utilizando como opción de distancia los restantes cuatro métodos. e) Sacar conclusiones sobre los resultados obtenidos entre b) y c). f) Sacar conclusiones sobre los resultados obtenidos entre c) y d). La red debe clasificar los puntos (x, y) que se ingresen devolviendo las coordenadas de sus respectivos centros (cx, cy). El entrenamiento no supervisado para las funciones de las neuronas ocultas, queda concluido tomando los datos de los centros y aperturas de las circunferencias mostradas en la figura 11.b. Para el entrenamiento supervisado, se deben generar 10 puntos aleatoriamente distribuidos en cada circunferencia. En la fase de operación, comprobar los resultados para diferentes puntos ubicados dentro y fuera de cada circunferencia. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Valores obtenidos del esquema 12.2 Centroides: C1=(0.5,0.5) σ=1 amplitud de la circunferencia. C1=(-0.5,0.5) r=0.5 C1=(-0.5,-0.5) C1=(0.5,-0.5) [centroides]=CargarCentroide s(); [matrizX1X2]=CargarEntradas( ); salidaDeseada=[1 1 1 1]; [f,c]=size(matrizX1X2); pesos=[0.3 0.2 -0.5 0.5]; for j=1: 1000 sprintf('numero %g interaciones',j) fori=1:f [y]=NeuronaOculta(matrizX1X2(i,1),matrizX1X2(i,2),centroides); [salidaCalculada]=NeuronaSalida(y,pesos); [error,pesosN]=aprendizaje(pesos,salidaCalculada,salidaDeseada(1),y); errores(i)=error; pesos=pesos N; end cont=; fori=14 if(errores(i)<0.0001) cont=cont+1; end 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO end ifcont== 4 break; end end peso s %--------------------------------------------------------- function [centroides]=CargarCentroides() %funcion para cargar el centroide m(1,1)=0.5; m(1,2)=0.5; m(2,1)=-0.5; m(2,2)=0.5; m(3,1)=-0.5; m(3,2)=-0.5; m(4,1)=0.5; m(4,2)=-0.5; centroides= m; end %--------------------------------------------------------- function [matrizX1X2]=CargarEntradas(); %cargar las entradas para aprendizaje m(1,1)=0.8; m(1,2)=0.5; m(2,1)=-0.2; m(2,2)=0.5; m(3,1)=-0.5; m(3,2)=-0.8; 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO m(4,1)=0.5; m(4,2)=-0.2; matrizX1X2=m ; end %--------------------------------------------------------- function [y]=NeuronaOculta(x1,x2,centroides) %obtiene los resultados de la neurona de oculta fori=1:4 rj=(x1-centroides(i,1)).^2 +(x2- centroides(i,2)).^2; m(i)=exp(-rj/2); end y=m ; end %--------------------------------------------------------- function [salidaCalculada]=NeuronaSalida(y,pesos) %captura los resultados de la neurona de salida. suma=0; fori=1:4 suma= suma+y(i)*pesos(i); end salidaCalculada=suma; end %--------------------------------------------------------- function[error,pesosW]=aprendizaje(pesos,salidaCalculada,salidaDeseada,y) %aprendizaj e fori=1:4 m(i)=pesos(i)+0.5*(salidaDeseada- salidaCalculada)*y(i); end 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO e=salidaDeseada- salidaCalculada; pesosW=m; error=e; end %--------------------------------------------------------- function [cuadrante]=ComprobarDatos(x1,x2,centroides) %me permite comprobar las salidas fori=1:4 rj=(x1-centroides(i,1)).^2 +(x2- centroides(i,2)).^2; m(i)=exp(-rj/2); end aux=m(1) ; c=1; fori=1:3 if(m(i+1)>=aux ) aux=m(i+1); c=i+1; en d en d cuadrante= c; end 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2. La red RBF de la figura (a) se va a utilizar como herramienta de agrupamiento (clustering). Se implementará mediante las funciones de Matlab con un script. a) Utilizar los puntos de la figura (b) para crear los patrones de entrenamiento de la red. La respuesta deseada debe ser un ‘1’ en la neurona de salida que represente a la clase y un ‘0’ en las restantes neuronas de salida. b) Crear tres redes RBF para verificar la operación; una con 3 neuronas ocultas, otra con 4 neuronas ocultas (como en la figura a) y la tercera sin dar valor al parámetro de la cantidad de neuronas, en este último caso la función de creación de la red tomará la cantidad de neuronas necesarias (ver Problema Resuelto RBF). Seleccionar un valor de “spread” conveniente (por defecto utiliza el valor 1). Se recomienda un error objetivo igual a 0. c) Comprobar el funcionamiento de las redes con al menos 10 puntos (de la grilla - fig. b), no utilizados para el entrenamiento. Volcar los resultados sobre el mismo espacio de datos de la figura (b), uno para cada red. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO d) Dar conclusiones respecto de los resultados obtenidos. Sacamos los centros estimados de cada neurona: Parametros de entrada y salida para el entreamiento supervizado Código del script: 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Comprobamos el funcionamiento de la RNA utilizando tres puntos para cada clase y los resultados son los siguientes: Creamos las matrices de prueba a clasificar correspondiente a cada una de las clases. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Y los resultados de la simulación se muestran en la siguiente imagen: Se puede observar el correcto funcionamiento de la red para los patrones ingresados. 3. APROXIMACIÓN CON RED RBF. Se desea aproximar la función dada a continuación, con una red RBF, cuyo esquema genérico se muestra en la figura. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Red RBF. Armamos los datos de entrada y de salida para la red: Luego ejecutamos el comando nntoolpara crear la red. Creamos la red con ayuda de la GUI: Luego la exportamos al workspace. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO Para probar el resultado creamos una variable ejemplo que contiene el resultado de la red creada y graficamos con plotejemplo representada con ‘*’ y la función original con color rojo. 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO x=linspace(0,2*pi,20); y=linspace(0,2*pi,20); z=linspace(-1,1,20); valor_entrada=[x;y;z]; valor_salida=sin(x)+cos(y)+z; ejemplo=punto3_tp5marciocrack(valor_entrada ); holdon plot(valor_salida,'red' ) plot(ejemplo,'*')%==========newrbe()inciso_b============== %======================================== x=linspace(0,2*pi,20); y=linspace(0,2*pi,20); z=linspace(-1,1,20); valor_entrada=[x;y;z]; valor_salida=sin(x)+cos(y)+z; 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO net = newrbe (valor_entrada, valor_salida); ejemplo=net(valor_entrada); holdon plot(valor_salida,'red') plot(ejemplo,'*') %======================================== %======================================== 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO F=[F1 F2 F3 F4]; A=[ones(1,length(F1)) zeros(1,length(F1)) zeros(1,length(F1)) zeros(1,length(F1)) ]; B=[zeros(1,length(F1)) ones(1,length(F1)) zeros(1,length(F1)) zeros(1,length(F1)) ]; C=[zeros(1,length(F1)) zeros(1,length(F1)) ones(1,length(F1)) zeros(1,length(F1)) ]; D=[zeros(1,length(F1)) zeros(1,length(F1)) zeros(1,length(F1)) ones(1,length(F1))]; TTT=[A;B;C;D]; 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO 2020 Facultad de Ingeniería (UNJu) GRUPO: IA_EN_TU_BOLSILLO
Compartir