-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMonteCarlo.m
97 lines (80 loc) · 2.34 KB
/
MonteCarlo.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
clc;
clear all;
close all
tic
%% IIR Filter Fitness
[O Hfilt Wfilt] = Main_IIR();
Logcoef = 1;
alpha = 0.6; % 0.4 1 0.5 0.5
beta = 0.4; % 0.6 0 0.0 0.1
gamma = 0.0; % 0.0 1 0.5 0.4
Cst1 = 2; % number 1 for O<5 and 2 for >= for PSO function
Cst2 = 0; % number 1 for O<5,0 for >= for Fitness/IIRSOA function
nvar = (2 * (O - 1)) + Cst1;
pnvar = 0;
maxit = 1000000;
xmin(1) = 1;
xmax(1) = (O - 1);
xmin(2:nvar) = repmat(-2, 1, nvar - 1);
xmax(2:nvar) = repmat(+2, 1, nvar - 1);
Xpos = zeros(maxit,nvar);
Xfit = zeros(maxit,1);
N = rand(size(Hfilt,1),1);
% gbest = zeros(1,nvar);
gbest = 0;
gbestfit = inf;
meanfit = zeros(maxit,1);
minfit = zeros(maxit,1);
%% Main loop
for it = 1:maxit
Xpos(it,:) = xmin + (xmax - xmin) .* rand(1,nvar);
Xpos(it,1) = round(Xpos(it,1));
pnvar = (2 * Xpos(it,1)) + Cst1;
if pnvar < nvar
Xpos(it,pnvar+1:nvar) = 0;
end
%---------------------------------------------------------------------
Xfit(it) = Fitness(Xpos(it,1:pnvar),Hfilt,Wfilt,N,O,Logcoef,alpha,beta,gamma,Cst2);
%---------------------------------------------------------------------
if Xfit(it) < gbestfit
gbest = Xpos(it,1:pnvar);
gbestfit = Xfit(it);
end
meanfit(it) = sum(Xfit)/it;
minfit(it) = min(Xfit(1:it));
D = it/maxit;
if ( D == 1/5) | ( D == 2/5) | ( D == 3/5) | ( D == 4/5)
it
end
end
time = toc
gbest
gbestfit
Minimum_Fitness = minfit(it)
Mean_Fitness = meanfit(it)
[Bsoa Asoa Z_f P_f] = Matching(gbest,Cst2)
% xx = [1,100,200,300,400,500];
% pdf(Xfit([1,100,200,300,400,500]),xx)
figure(1);
plot(1:maxit,meanfit,'r--','LineWidth',2)
ylim([-1 inf]);
% xlim([-1 inf]);
legend('MeanFitness')
xlabel('Iterations')
ylabel('Value')
title('Monte Carlo');
grid on
figure(2);
plot(1:maxit,minfit,'b--','LineWidth',2);
axis([0 inf -.01 inf])
grid on
legend('MinFitness')
xlabel('Iterations')
ylabel('Value')
title('Monte Carlo');
figure(3);
zplane(Z_f,P_f); %%% Displays the poles and zeros of discrete-time systems.
legend('Zero','Pole');
xlabel('Real Part');
ylabel('Imaginary Part');
title('MonteCarlo: Pole-Zero Plot');