Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

Domaci Pedja

1.% Zadatak 1_1

clear, close all, clc

m = 4;
n = 5;
b = 1008;
a = sqrt(b);

A = a + (b - a)*rand(m,n) % matrica slucajnih br A dim mxn


% na intervalu [a b]

max = A(1,1);
for i = 1:m
for j = 1:n
k = A(i,j);
if k > max
max = k;
end
end
end
MAX_A = max
%
for i = 1:m
for j = 1:n
k = A(i,j);
if k == max
pozicija_MAX_A = [i j]
end
end
end
%
%
min = A(1,1);
for i = 1:m
for j = 1:n
k = A(i,j);
if k < min
min = k;
end
end
end
MIN_A = min
%
for i = 1:m
for j = 1:n
k = A(i,j);
if k == min
pozicija_MIN_A = [i j]
end
end
end

% Zadatak 1_2

clear, close all, clc

k = 2017; % korak niza


b = 100; % br clcnova niza
n = [1];

for i = 2:b
n(i) = n(i-1) + k;
end
n
%
k = [];
for i = 7:7:100
k(i) = n(i);
end
k;
%
S = sum (k) % sabira sve clanove
% niza(vektora) k
% Zadatak 1_3

clear, close all, clc

n=15; % br clanova niza


f=[0 1]; % prva dva clana niza

for i = 3:n
f(i) = f(i-1) + f(i-2);
end
f
% Zadatak 1_4

clear, close all, clc


x = 0; y = 0; T = 0; Sl = 0; Sd = 0; b=10;
for i = 1:10
l = randn/100; % randn - matrica slucajnih brojeva
d = randn/100; % sa normalnom (Gaus) raspodelom
% na intervalu [-1, 1]
%
x = x + (Sd + Sl)/2*cos(T + (Sd - Sl)/(2*b))
y = y + (Sd + Sl)/2*sin(T + (Sd - Sl)/(2*b))
T = T + (Sd - Sl)/b
Sl = 0.5 + l;
Sd = 0.5 + d;
%
xlabel('X osa')
ylabel('Y osa')
plot (x, y, 'sr')
hold on
pause(0.5)
axis equal
end
title('SIMULACIJA RAVANSKOG KRETANJE MR')
grid on
% Zadatak 1_5

% MODEL KRETANJA mobilnog robota


% x,y,T - komponente vektora stanja
% x,y - pozicija
% T - orijentacija
% xp,yp - prethodna pozicija
% Tp - prethodna orijentacija
% Gt - Jakobijan u odnosu na polozaj
% Vt - Jakobijan u odnosu na upravljanje

clear, close all, clc


syms Sd Sl T b xp yp Tp
x = xp + (Sd + Sl)/2*cos(Tp + (Sd - Sl)/(2*b));
y = yp + (Sd + Sl)/2*sin(Tp + (Sd - Sl)/(2*b));
T = Tp + (Sd - Sl)/b;
%
G11 = diff(x, xp); G12 = diff(x, yp); G13 = diff(x, Tp);
G21 = diff(y, xp); G22 = diff(y, yp); G23 = diff(y, Tp);
G31 = diff(T, xp); G32 = diff(T, yp); G33 = diff(T, Tp);
%
V11 = diff(x, Sl); V12 = diff(x, Sd);
V21 = diff(y, Sl); V22 = diff(y, Sd);
V31 = diff(T, Sl); V32 = diff(T, Sd);
%
Gt = [G11 G12 G13; G21 G22 G23; G31 G32 G33]
Vt = [V11 V12; V21 V22; V31 V32]
% Zadatak 1
% AKTIVACIONE FUNKCIJE

clc, close all, clear

% compet
figure (1)
neti = -10:0.1:10; % od -10 do 10 sa korakom 0.1
f_neti = compet (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('COMPET')
% hardlim
figure (2)
neti = -10:0.1:10;
f_neti = hardlim (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('HARDLIM')
% hardlims
figure (3)
neti = -10:0.1:10;
f_neti = hardlims (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('HARDLIMS')
% logsig
figure (4)
neti = -10:0.1:10;
f_neti = logsig (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('LOGSIG')
% netinv
figure (5)
neti = -10:0.1:10;
f_neti = netinv (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('NETINV')
% poslin
figure (6)
neti = -10:0.1:10;
f_neti = poslin (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('POSLIN')
% purelin
figure (7)
neti = -10:0.1:10;
f_neti = purelin (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('PURELIN')
% radbas
figure (8)
neti = -10:0.1:10;
f_neti = radbas (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('RADBAS')
% satlin
figure (9)
neti = -10:0.1:10;
f_neti = satlin (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('SATLIN')
% satlins
figure (10)
neti = -10:0.1:10;
f_neti = satlins (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('SATLINS')
% softmax
figure (11)
neti = -10:0.1:10;
f_neti = softmax (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('SOFTMAX')
% tansig
figure (12)
neti = -10:0.1:10;
f_neti = tansig (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('TANSIG')
% tribas
figure (13)
neti = -10:0.1:10;
f_neti = tribas (neti);
plot(neti,f_neti, 'c', 'linewidth', 3)
xlabel ('net_i')
ylabel('f(net_i)')
axis equal
grid on
title ('TRIBAS')
% Zadatak 2
% Obucavanje vestacke neuronske mreze - VNM

clear, close all, clc

% vektor ulaznih vrednosti


i = -10:0.1:10;
% vektor izlaznih vrednosti
o = sin(i).*exp(i);
% arhitektura VNM oznacene sa net
net = newff(i, o, [12 10 8], {'tansig', 'logsig', 'logsig'}, 'trainlm');

net.trainParam.lr = 0.5; % parametri ucenja


net.trainParam.epochs = 1000; % broj iteracije (epoha)
net.trainParam.goal = 1e-5; % zadata greska

% obucavanje (treniranje) mreze


% za ulaz 'i' treba da da izlaz 'o'
net = train(net,i,o);

% predstavljanje dobijenih rezultata nakon obucavanja


y = sim(net, i);

% graficki prikaz
plot (i, o, 'c', 'linewidth', 5)
hold on
plot (i, y, 'r', 'linewidth', 2)
xlabel ('Ulazne vrednosti - i')
ylabel ('Izlazne vrednosti - o')
title ('REZULTATI TESTIRANJA VNM')
legend (' Grafik dobijen funkcijom', ' Grafik dobijen obucavanjem VNM')
grid on

% Zadatak 1
% Perceptron

clc, clear all, close all

% obucavajuci parovi
x1 = [1 2]'; x2 = [-1 2]'; x3 = [0 -1]'; % ' znaci da je transponovana matrica
o1 = 1; o2 = 0; o3 = 0;
% vektor ulaznih vrednosti
x = [x1 x2 x3];
% vektor izlaznih vrednosti
o = [o1 o2 o3];

% vestacka neuronska mreza


net = perceptron;

% obucavanje mreze
net = train(net, x, o);

% predstavljanje dobijenih rezultata nakon obucavanja


y = net(x)
clear all, close all, clc

% PERCEPTRON

% Obucavajuci parovi
x1 = [1 2]'; x2 = [-1 2]'; x3 = [0 -1]';
o1 = 1; o2 = 0; o3 = 0;
% vektor ulaznih velicina
X = [x1 x2 x3]
% vektor izlaznih velicina
O = [o1 o2 o3]
% vektor tezinskih odnosa
W=[1 -0.8];
% parametar ucenja
n=1;

for i = 1:length(O)
a(i) = W*X(:,i);
if a(i)<0
a(i)=0;
else a(i)=1;
end
end

while a(i)~=O(i)
for i = 1:length(O)
a(i) = W*X(:,i);
if a(i)<0
a(i)=0;
else a(i)=1;
end
W = W + n*(O(i)-a(i))*X(:,i)';
end
end
a
W

Kolokvijum
clc; clear; close all;
%Kinematicke jednacine robota za predjeni put tockova
% Za zadati predjeni put robota izracunavaju se X,Y i O kooridante

e=30; %broj koraka robota


b=12;% sirina robota

sigma=0.01; %Standardna devijacija


mu=0.5; %Broj za normalnu raspodelu

x(1)=10;y(1)=10;t(1)=90; % Pocetni polozaj

xk(:,1)=[x(1), y(1),t(1)];%Crtanje pocetnog kruga


% hold on

Orje_K2(xk(1,1),xk(2,1),xk(3,1),b);

xk=zeros(3,e); % Matrica X,Y i teta

for k=1:e % K se povecava dok ne dodjemo do poslednjeg polozaja robota


% Dsd=normrnd(mu,sigma); % Desni i levi tocak sa Gausovom podelom
% Dsl=normrnd(mu,sigma);
Dsd=0.5+rand*0.25; % Desni i levi tocak sa Gausovom podelom
Dsl=0.5+rand*0.25;

Ds=(Dsl+Dsd)/2; % Jednacine za dobijanje kinematike,one sto


% smo radili i u wordu
Dt=((Dsd-Dsl)/b)*180/pi;
Dx=Ds*cosd(t(k)+Dt/2);
Dy=Ds*sind(t(k)+Dt/2);

x(k+1)=x(k)+Dx;
y(k+1)=y(k)+Dy;
t(k+1)=t(k)+Dt;

xk(:,k)=[ x(k+1), y(k+1), t(k+1)]; %

end

% Vrednosti koje se koriste za dimenzije plota


if xk(1,1)>xk(1,end)
xmax=xk(1,1)+2*b;
xmin=xk(1,end)-2*b;
else
xmax=xk(1,end)+2*b;
xmin=xk(1,1)-2*b;
end

if xk(2,1)>xk(2,end)
ymax=xk(2,1)+2*b;
ymin=xk(2,end)-2*b;
else
ymax=xk(2,end)+2*b;
ymin=xk(2,1)-2*b;
end
%Crtanje
for k=1:e

Orje_K2(xk(1,k),xk(2,k),xk(3,k),b); %Funkcija koja crta orijentaciju


ylabel('Y osa');
xlabel('X osa');
grid on % za dodavanje mreze (isprekidanih linija na plotu)
axis ([xmin,xmax,ymin,ymax])
pause(0.2)

end
---------------------------------------------------------------
clc; close all; clear all;

b=0.7;% Procenat X koji se koristi za testiranje (ako je ono dole odkomentarisasno)


x=-5.12:0.1:5.12;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Ako treba da se koristi samo neki procenat(70%) za treniranje
%a (30%) za testiranje. Samo odkomentarisi ovo ispod
% x1=randperm(length(x));
% xs=x(x1);
% br_proc=round(length(x)*b);
% xs=x(1:br_proc);
% x1=x1(1:br_proc);
% x1=sort(x1);
% xs=x(x1);
% x=xs;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
y=x.^2+x.^2+x.^2;

net= newff(x,y,[5,5],{'logsig','logsig'},'trainlm');
%10,4 broj neurona;
%logsig logsig aktivacione(sigmoidna) funkcije za svaki sloj
%trainlm-algoritam obucavanja
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% OVDE SE NALAZE AKTIVACIONE FUNKCIJE
% help nntransfer
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ovde se nalaze Algoritmi obucavanja
% help nntrain
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Parametri treniranja
net.trainParam.show = 30;
net.trainParam.lr = 0.2; % eta
net.trainParam.epochs = 100000; % broj interacija
net.trainParam.goal = 1e-5; % greska
%Initialise training
net = train(net,x,y);

% View training results


ym = sim(net,x); % Rezultati

% crtanje
plot(x,ym,'m');
xlabel('x ')
ylabel('y')
grid on
title('f(x)')
hold on;

plot(x,y,'ro');

clc; clear; close all;

x=[0,0;0,1;1,0;1,1];

% y=[0 1 1 1]; % ILI


y=[0 0 0 1];% i
eta=1;

W=[rand-0.5,rand-0.5];
i=0;
interacija=0;
while(1)
interacija=interacija+1;
if i==3
i=0;
end
i=i+1;
a1=W*x(i,:)';
if a1>0
a1=1;
else
a1=0;
end

W=W+eta*(y(i)-a1);

a11=W*x(1,:)';
a12=W*x(2,:)';
a13=W*x(3,:)';
a14=W*x(4,:)';

if a11>0
a11=1;
else
a11=0;
end
if a12>0
a12=1;
else
a12=0;
end

if a13>0
a13=1;
else
a13=0;
end
if a14>0
a14=1;
else
a14=0;
end

if a11==y(1)
if a12==y(2)
if a13==y(3)
if a14==y(4)
break;
end
end
end

end

end

%ZZ5 geneticki
function y = Zadatak_5(x)
y = x(1).^2+x(2).^2+x(3).^2
end
1. Model kretanja 30 iteracija; pozicija i orientacija, predjeni put; Vektor stanja P
= [x0, y0, teta0] = [10 10 90stepeni].
Usvojiti da upravljacka velicina podleze gausovoj raspodeli predjenog puta levog i
desnog tocka = 0.5 a varijansa = 0.1, rastojanje izmedju tockova b=12, poluprecnik
tocka r=3 dobijene rezultate prikazati graficki.

2. U matlab softverskom paketu izvrsiti obucavanje VNM - za zadatak funkcionalne


aproksimacije sledece funkcije f(x) = SUM(Xi^2) i = 1:n; n=3, usvojiti da se vrednost
argumenta xi menja u sledecim granicama -5.12 <= Xi <= 5,12 , testirati uticaj broja
neurona, broja slojeva, aktivacionih funkcija (help nntransfer), algoritama obucavanja
(trainLM, trainGD, trainGDX, trainGDA) na performanse ucenja.

3. Uraditi primer primene vestackih neuronskih mreza za zadatak klasifikacije:


a) Logicko I
b) Logicko ILI

4. Za problem trgovackog putnika (5 gradova) u matlab softverskom paketu generisati


inicijalnu populaciju sa 10 jedinki i odrediti njihove funkcije cilja (rastojanje
izmedju gradova). Koordinate gradova:

- A(10,10)
- B(20,20)
- C(30,30)
- D(40,20)
- E(30,10)

5. Primenom GA toolbox-a odrediti optimum funkcije f(x) = SUM (Xi^2) i=1:n, n=3.

-----------------------------------------------------------------------------
function y = gat(x)
frac1 = 1 + cos(12*sqrt(x(1)^2+x(2)^2));
frac2 = 0.5*(x(1)^2+x(2)^2) +2 ;
y = -frac1./frac2;
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

function y = funkcija_y(x)
y = x(1)^2 - x(2)^2;
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

function [c, ceg] = const (x)


c = [5 - x(1)*x(2); -x(1)^2 - x(2)];
ceg = [];
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

function y = funkcija(x)
y = x(1)^2 + x(2)^2 + x(3)^2
end

You might also like