MATLAB Answers


Global optimization using genetic algorithm

Asked by Sata
on 23 Oct 2012

I use ff2n function to generate the input for my function. For the example of ff2n(4), some sample input rows are:

1 0 1 0

1 1 0 0

0 0 1 1



Based on the input from ff2n(4), a total of 16 scalar values will be generated for my function. If I sorted the 16 scalar values generated, I will be able to find the minimum value.

Can I use GA to find the minimum value for my function based on the following commands?

>> [x fval exitflag] = ga(@my_fun, 2)

My input values are fixed, which are 0 and 1. Can I consider the total number of variables as 2? Is it possible for me to get the following sample output:

x = 1 1 0 0

fval = 0.12345

exitflag = 1

If this GA command is inapplicable, please give me some suggestions how can I use GA to solve my problem.

Alternatively, in order to get the x and fval values, can I use the optimization toolbox by choosing GA solver, enter my fitness function, put 2 as number of variables and run it?



No products are associated with this question.

1 Answer

Answer by Alan Weiss
on 23 Oct 2012

You might do well to read the documentation on ga with integer constraints. If I understand you, for this case you have n = 4 dimensions, not 2, because there are 4 design variables. Each design variable is binary, so is integer valued with a lower bound of 0 and an upper bound of 1.

Alan Weiss

MATLAB mathematical toolbox documentation


Alan Weiss
on 29 Oct 2012

Perhaps this example will show you how to use integer ga to solve your problem.

Your population looks 4-dimensional to me, with each component given as one of two different values. This can be mapped to integer (binary) variables, as in the example. To get those two values, set the x components as integers with lower bounds of 0 and upper bounds of 1, and map

 y = x0 + (x1 - x0)*x

Good luck,

Alan Weiss

MATLAB mathematical toolbox documentation

where x0 is your lower number 3.98765 and x1 is your upper number 4.98765.

on 1 Nov 2012

Hi Alan,

1) I agreed with you that this is a problem of 4-dimensional with each component given as one of the two different values. What is the different to use my actual real numbers for variable x (3.98765) and y (4.98765) instead of using binary numbers of 0 and 1 to map?

2) Basically my 0 < x < 5 and 0 < y < 5, if we map it with binary number with lb = 0 and ub = 1, does it match?

3) Sorry, can you explain further about the mapping example you mentioned earlier:

y = x0 + (x1 - x0)*x

y = 3.98765 + (4.98765 - 3.98765)*x --> what information can I get?

4) Can somebody answer my previous (Q3) regarding mutation operator? i.e. what do I do if mutation is inapplicable in my problem..

on 6 Nov 2012


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today