-
Notifications
You must be signed in to change notification settings - Fork 20
/
floatExample.m
130 lines (88 loc) · 2.27 KB
/
floatExample.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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
echo on
% This script shows how to use the ga using a float representation.
% You should see the demos for
% more information as well. gademo1, gademo2, gademo3
global bounds
% Setting the seed to the same for binary
rand('seed',156789)
% Crossover Operators
xFns = 'arithXover heuristicXover simpleXover';
xOpts = [1 0; 1 3; 1 0];
% Mutation Operators
mFns = 'boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation';
mOpts = [2 0 0;3 200 3;2 200 3;2 0 0];
% Termination Operators
termFns = 'maxGenTerm';
termOps = [200]; % 200 Generations
% Selection Function
selectFn = 'normGeomSelect';
selectOps = [0.08];
% Evaluation Function
evalFn = 'gaMichEval';
evalOps = [];
type gaMichEval
% Bounds on the variables
bounds = [-3 12.1; 4.1 5.8];
% GA Options [epsilon float/binar display]
gaOpts=[1e-6 1 1];
% Generate an intialize population of size 20
startPop = initializega(20,bounds,'gaMichEval',[1e-6 1])
% Lets run the GA
% Hit a return to continue
pause
[x endPop bestPop trace]=ga(bounds,evalFn,evalOps,startPop,gaOpts,...
termFns,termOps,selectFn,selectOps,xFns,xOpts,mFns,mOpts);
% x is the best solution found
x
% Hit a return to continue
pause
% endPop is the ending population
endPop
% Hit a return to continue
pause
% bestPop is the best solution tracked over generations
bestPop
% Hit a return to continue
pause
% trace is a trace of the best value and average value of generations
trace
% Hit a return to continue
pause
% Plot the best over time
clf
plot(trace(:,1),trace(:,2));
% Hit a return to continue
pause
% Add the average to the graph
hold on
plot(trace(:,1),trace(:,3));
% Hit a return to continue
pause
% Lets increase the population size by running the defaults
%
[x endPop bestPop trace]=ga(bounds,evalFn,evalOps,[],gaOpts);
% x is the best solution found
x
% Hit a return to continue
pause
% endPop is the ending population
endPop
% Hit a return to continue
pause
% bestPop is the best solution tracked over generations
bestPop
% Hit a return to continue
pause
% trace is a trace of the best value and average value of generations
trace
% Hit a return to continue
pause
% Plot the best over time
clf
plot(trace(:,1),trace(:,2));
% Hit a return to continue
pause
% Add the average to the graph
hold on
plot(trace(:,1),trace(:,3));
echo off