-
Notifications
You must be signed in to change notification settings - Fork 2
/
evaluateChromosome.m
48 lines (36 loc) · 1.2 KB
/
evaluateChromosome.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
function [evaluatedChrom] = evaluateChromosome(chromosome, settings)
% SYNTAX
% evaluatedChrom = evaluateChromosome(chromosome, settings)
%
% DESCRIPTION
% Evaluates a chromosome
%
% REQUIRED ARGUMENTS
% chromosome: Individual chromosome
% settings: constants etc
%
%
% OUTPUT VARIABLES
% evaluatedChrom: Results after evaluating the chromosome.
%% Initialize objectives
O_1 = 0;
O_2 = 0;
O_3 = 0;
%% Core selection
dimensions = selectCore(chromosome);
winding = selectWinding(chromosome, dimensions, settings);
%% FEA evaluation
[losses, force, volume, mass, Ind, Res] = evaluateInductorFEMM(dimensions,...
winding, settings);
%% Objective function Evaluation
if (abs(Ind - settings.L_ref) < 1e-6) % 1uH tolerance
O_1 = losses.Ecore + losses.Icore + settings.I_pk^2*Res; % Total losses
O_2 = mass; % Mass
O_3 = max(abs(force)); % Force on I core
else
O_1 = inf; % Total losses
O_2 = inf; % Mass
O_3 = inf; % Force on I core
end
evaluatedChrom = [O_1, O_2, O_3];
end