Useful tutorial
http://www.mathworks.com/products/global-optimization/description3.html
Best example of implementatoin with Constraint, objective function
http://www.mathworks.com/help/gads/examples/constrained-minimization-using-the-genetic-algorithm.html
More about how to use multi-objective
http://www.mathworks.com/discovery/multiobjective-optimization.html
http://www.mathworks.com/help/gads/examples/performing-a-multiobjective-optimization-using-the-genetic-algorithm.html
http://www.mathworks.com/help/gads/examples/multiobjective-genetic-algorithm-options.html
Example GAMULTOBJ (can handle Multiple Objective) GA(can handle 1 objective)
We want to minimize a simple fitness function of two variables x1 and x2
min f(x) = 100 * (x1^2 - x2) ^2 + (1 - x1)^2; x
min f(x) = 100 * (x1^2 + x2) ^2 + (1 + x1)^2; xsuch that the following two nonlinear constraints and bounds are satisfied
x1*x2 + x1 - x2 + 1.5 <=0, (nonlinear constraint) 10 - x1*x2 <=0, (nonlinear constraint) 0 <= x1 <= 1, and (bound) 0 <= x2 <= 13 (bound)
Implementation of Singleobjective Function
function y = simple_objective(x) y = 100 * (x(1)^2 - x(2)) ^2 + (1 - x(1))^2;
Implementation of Multiobjective Function
function y = simple_multiobjective(x) y(1) = 100 * (x(1)^2 - x(2)) ^2 + (1 - x(1))^2;
y(2) = 100 * (x(1)^2 + x(2)) ^2 + (1 + x(1))^2;Implementation of the Constraint Function
function [c, ceq] = simple_constraint(x) c = [1.5 + x(1)*x(2) + x(1) - x(2); -x(1)*x(2) + 10]; ceq = [];
Implementation of the GAMULTOBJ/ GA
ObjectiveFunctionOne = @simple_objective;
ObjectiveFunctionMult = @simple_multiobjective;
nvars = 2;
A = []; b = [];
Aeq = []; beq = [];
LB = [0 0]; % Lower bound , you can also set []
UB = [1 13]; % Upper bound , you can also set []
options = gaoptimset('PlotFcns',{@gaplotpareto,@gaplotscorediversity});
[x,fval,extflag, output,pop, score] = gamultiobj( ObjectiveFunctionMult, nvars, A, b, Aeq, beq, LB, UB, options )
[x,fval,extflag, output,pop, score] = gamultiobj( ObjectiveFunctionOne, nvars, A, b, Aeq, beq, LB, UB, options )
But in GA you can add non-linear constraint
http://www.mathworks.com/help/gads/examples/constrained-minimization-using-the-genetic-algorithm.html
function [c, ceq] = simple_constraint(x)
c = [1.5 + x(1)*x(2) + x(1) - x(2);
-x(1)*x(2) + 10];
ceq = [];
[x,fval,extflag, output,pop, score] = ga(ObjectiveFunctionOne,nvars,[],[],[],[],LB,UB , ConstraintFunction);
Example GAMULTOBJ (can handle Multiple Objective) GA(can handle 1 objective) for BITSTRING
%% using gamultobj
ObjectiveFunction = @myFitnessFnc_bitString;
nvars = 2; % Number of variables
LB = [0 0]; % Lower bound
UB = [1 13]; % Upper bound
options = gaoptimset('PopulationSize',60,...
'ParetoFraction',0.7,'PlotFcns',@gaplotpareto, 'PopulationType','bitstring');
[x fval flag output population score] = gamultiobj(ObjectiveFunction,nvars, [],[],[],[],[] ,[] ,options )
%% using GA
%% usig ga
ObjectiveFunction = @myFitnessFnc_bitString;
nvars = 2; % Number of variables
options = gaoptimset('PopulationSize',60,...
'ParetoFraction',0.7,'PlotFcns',@gaplotpareto, 'PopulationType','bitstring');
[x fval flag output population score] = ga(ObjectiveFunction,nvars, options)
I have two objectives functions, I want use gamultiobj but I don't know how to set the constraints!
ReplyDeletePlease, help me.