Você está na página 1de 16

03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

 Esta é a tradução de máquina

Translated by
Mouseover texto para ver o original. Clique no botão abaixo para voltar para a versão em inglês da
página.

Back to English

ga
Encontrar um mínimo de função usando o algoritmo genético

Sintaxe

x = ga(fun,nvars)
x = ga(fun,nvars,A,b)
x = ga(fun,nvars,A,b,Aeq,beq)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)
x = ga(problem)
[x,fval] = ga( ___ )
[x,fval,exitflag,output] = ga( ___ )
[x,fval,exitflag,output,population,scores] = ga( ___ )

Descrição
x = ga(fun,nvars) encontra um local irrestrita mínimo, x, para a função objetiva, fun. nvars é a exemplo de
dimensão (número de variáveis de projeto) de fun.

 Nota
Passando parâmetros extras (Caixa de ferramentas de otimização) explica como passar
parâmetros extras para a função objetivo e as funções de restrição não-linear, se
necessário.

exemplo de
x = ga(fun,nvars,A,b) localiza um mínimo local x para fun, sujeitos a linear desigualdades A*x ≤
b. ga , avalia o produto da matriz A*x como se x é transposta (A*x').
exemplo de
x = ga(fun,nvars,A,b,Aeq,beq) localiza um mínimo local x para fun, sujeitos as igualdades
lineares Aeq*x = beq e A*x ≤ b. (Definir A=[] e b=[] se não há desigualdades lineares existem.) ga ,
avalia o produto da matriz Aeq*x como se x é transposta (Aeq*x').
exemplo de
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) define um conjunto de limites inferior e superior sobre as
variáveis de projeto, x, para que uma solução seja encontrada em escala lb ≤ x ≤ ub. (Conjunto
Aeq=[] e beq=[] não se existirem nenhum igualdades lineares.)
exemplo de
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) sujeitos a minimização das limitações definidas
no nonlcon. A função nonlcon aceita x e retorna vetores C e Ceq, representando as desigualdades
não-lineares e igualdades, respectivamente. ga minimiza a fun tais que C(x) ≤ 0 e Ceq(x) = 0.
(Conjunto lb=[] e ub=[] se não tem limites existe.)
exemplo de
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) minimiza os parâmetros de
otimização padrão substituídos por valores nas options. (Conjunto nonlcon=[] se existem sem
restrições não-lineares.) Criar options usando optimoptions .
exemplo de
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) ou x = ga(fun,nvars,A,b,[],
[],lb,ub,nonlcon,IntCon,options) requer que as variáveis constantes IntCon tomar valores de
inteiro.

 Nota
Quando há restrições de número inteiro, o ga não aceita restrições de igualdade linear ou
não linear, somente restrições de desigualdade.

x = ga(problem) encontra o mínimo para o problem, onde o problem é uma estrutura.


exemplo de
[x,fval] = ga( ___ ), para quaisquer argumentos de entrada anteriores, também retorna fval, o
valor da função de aptidão em x.
exemplo de
[x,fval,exitflag,output] = ga( ___ ) também retorna exitflag, um número inteiro que
identifica a razão pela qual o algoritmo encerrado e output, uma estrutura que contém a saída de
cada geração e outras informações sobre o desempenho do algoritmo.
exemplo de
[x,fval,exitflag,output,population,scores] = ga( ___ ) também retorna uma matriz
population, cujas linhas são a população final e um vetor scores, as contagens da população final.

https://www.mathworks.com/help/gads/ga.html 1/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Exemplos recolher tudo

 Otimizar uma função usando o Nonsmooth ga

O arquivo ps_example.m é fornecido com seu software. Traça a


função. Tente no MATLAB

xi = linspace(-6,2,300);
yi = linspace(-4,4,300);
[X,Y] = meshgrid(xi,yi);
Z = ps_example([X(:),Y(:)]);
Z = reshape(Z,size(X));
surf(X,Y,Z,'MeshStyle','none')
colormap 'jet'
view(-26,43)
xlabel('x(1)')
ylabel('x(2)')
title('ps\_example(x)')

Encontrar o mínimo desta função usando ga.

rng default % For reproducibility


x = ga(@ps_example,2)

Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

-4.6793 -0.0860

 Minimizar uma função Nonsmooth com restrições lineares

Usar o algoritmo genético para minimizar a função de


ps_example na região x(1) + x(2) >= 1 e x(2) <= 5 + Tente no MATLAB
x(1).

Primeiro, converta as restrições de dois desigualdade para formar a matriz A*x <= b. Em outras palavras, se
as variáveis x no lado esquerdo da desigualdade e fazer ambas as desigualdades menos ou igual:

-x(1) -x(2) <= -1

-x(1) + x(2) <= 5

A = [-1,-1;
-1,1];
b = [-1;5];

Resolver o problema restrito usando ga.

rng default % For reproducibility


fun = @ps_example;
x = ga(fun,2,A,b)

https://www.mathworks.com/help/gads/ga.html 2/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

0.9991 0.0000

As restrições são satisfeitas para dentro do valor padrão da tolerância restrição, 1e-3. Para ver isso, calcular
A*x' - b, que deve ter componentes negativos.

disp(A*x' - b)

0.0009
-5.9991

 Minimizar uma função Nonsmooth com restrições de desigualdade e igualdade Linear

Usar o algoritmo genético para minimizar a função de


ps_example na região x(1) + x(2) >= 1 e x(2) == 5 + Tente no MATLAB
x(1).

Primeiro, converta as duas restrições para o formulário de matriz A*x <= b e Aeq*x = beq. Em outras
palavras, se as variáveis x no lado esquerdo das expressões e transforme-menor ou igual a desigualdade
formulário:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

Resolver o problema restrito usando ga.

rng default % For reproducibility


fun = @ps_example;
x = ga(fun,2,A,b,Aeq,beq)

Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

-2.0000 2.9990

Verificar que as restrições são satisfeitas para dentro do valor padrão de ConstraintTolerance, 1e-3.

disp(A*x' - b)

1.0000e-03

disp(Aeq*x' - beq)

-9.9758e-04

 Otimizar com limites e restrições lineares

Usar o algoritmo genético para minimizar a função de


ps_example na região x(1) + x(2) >= 1 e x(2) == 5 + Tente no MATLAB
x(1). Além disso, definir limites 1 <= x(1) <= 6 e
-3 <= x(2) <= 8.

Primeiro, converta as duas restrições lineares para o formulário de matriz A*x <= b e Aeq*x = beq. Em
outras palavras, se as variáveis x no lado esquerdo das expressões e transforme-menor ou igual a
desigualdade formulário:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

Definir limites lb e ub.

lb = [1 -3];
ub = [6 8];

Resolver o problema restrito usando ga.

https://www.mathworks.com/help/gads/ga.html 3/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
rng default % For reproducibility
fun = @ps_example;
x = ga(fun,2,A,b,Aeq,beq,lb,ub)

Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

1.0001 5.9992

Verifique as restrições lineares são satisfeitas para dentro do valor padrão de ConstraintTolerance, 1e-3.

disp(A*x' - b)

-5.9993

disp(Aeq*x' - beq)

-9.2644e-04

 Otimizar com não-linear restrições usando ga

Usar o algoritmo genético para minimizar a função de


ps_example na região e .
Tente no MATLAB

Para fazer isso, primeiro escreva uma função ellipsecons.m que retorna a restrição de desigualdade na
primeira saída, ce a restrição de igualdade na segunda saída, ceq. Salve o arquivo ellipsecons.m para uma
pasta no seu caminho de MATLAB®.

type ellipsecons

function [c,ceq] = ellipsecons(x)

c = 2*x(1)^2 + x(2)^2 - 3;
ceq = (x(1)+1)^2 - (x(2)/2)^4;
Incluem um identificador de função para ellipsecons como o argumento de nonlcon .

nonlcon = @ellipsecons;
fun = @ps_example;
rng default % For reproducibility
x = ga(fun,2,[],[],[],[],[],[],nonlcon)

Optimization terminated: average change in the fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-0.9766 0.0362

Verifica que as restrições não-lineares são satisfeitas em x. As restrições são satisfeitas quando c ≤ 0 e ceq =
0 para dentro do valor padrão de ConstraintTolerance, 1e-3.

[c,ceq] = nonlcon(x)

c = -1.0911
ceq = 5.4645e-04

 Minimizar com opções não-padrão

Usar o algoritmo genético para minimizar a função de


ps_example na região x(1) + x(2) >= 1 e x(2) == 5 + x(1) Tente no MATLAB
utilizando uma tolerância de restrição menor do que o padrão.

Primeiro, converta as duas restrições para o formulário de matriz A*x <= b e Aeq*x = beq. Em outras
palavras, se as variáveis x no lado esquerdo das expressões e transforme-menor ou igual a desigualdade
formulário:

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

Para obter uma solução mais precisa, defina uma tolerância de restrição de 1e-6. E para monitorar o
progresso do solver, definir uma função de trama.

options = optimoptions('ga','ConstraintTolerance',1e-6,'PlotFcn', @gaplotbestf);

https://www.mathworks.com/help/gads/ga.html 4/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
Resolva o problema de minimização.

rng default % For reproducibility


fun = @ps_example;
x = ga(fun,2,A,b,Aeq,beq,[],[],[],options)

Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2

-2.0000 3.0000

Verifique as restrições lineares são satisfeitas para dentro 1e-6.

disp(A*x' - b)

9.9983e-07

disp(Aeq*x' - beq)

-9.8163e-07

 Minimizar uma função não linear com restrições de número inteiro

Usar o algoritmo genético para minimizar a função ps_example


sujeitos a restrição que x(1) é um número inteiro. Tente no MATLAB

IntCon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
x = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon)

Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-5.0000 -0.0000

 Obter a solução e o valor da função

Use para algoritmo genético para minimizar um problema não-


linear restrita inteiro. Obter tanto no local do mínimo e o valor Tente no MATLAB
mínimo da função.

IntCon = 1;

https://www.mathworks.com/help/gads/ga.html 5/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
[x,fval] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon)

Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

-5.0000 -0.0000

fval = -1.9178
Compare este resultado para a solução do problema sem nenhuma restrição.

[x,fval] = ga(fun,2)

Optimization terminated: maximum number of generations exceeded.


x = 1×2

-4.7121 0.0051

fval = -1.9949

 Obter informações de diagnóstico

Use o algoritmo genético para minimizar a função de


ps_example restringida a ter x(1) valor inteiro. Para entender a Tente no MATLAB
razão pela qual o solver parou e como ga procurou por um
mínimo, obter os resultados exitflag e output . Também, traça o valor mínimo função objetiva observada no
decorrer do solver.

IntCon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
options = optimoptions('ga','PlotFcn', @gaplotbestf);
[x,fval,exitflag,output] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon,options)

Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
x = 1×2

https://www.mathworks.com/help/gads/ga.html 6/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

-5.0000 -0.0000

fval = -1.9178
exitflag = 1
output = struct with fields:
problemtype: 'integerconstraints'
rngstate: [1x1 struct]
generations: 96
funccount: 3881
message: 'Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance...'
maxconstraint: 0

 Obter pontuações e população Final

Use o algoritmo genético para minimizar a função de


ps_example restringida a ter x(1) valor inteiro. Obter todas as Tente no MATLAB
saídas, incluindo a população final e o vetor de pontuações.

IntCon = 1;
rng default % For reproducibility
fun = @ps_example;
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];
nonlcon = [];
[x,fval,exitflag,output,population,scores] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon);

Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
and constraint violation is less than options.ConstraintTolerance.
Examine os primeiros 10 membros da população final e suas notas correspondentes. Observe que x(1) é o
valor inteiro para todos esses membros da população. O algoritmo de ga inteiro gera apenas populações
inteiro-viável.

disp(population(1:10,:))

-5.0000 -0.0000
-5.0000 -0.0000
-5.0000 0.0014
-6.0000 0.0008
-13.0000 -0.0124
-10.0000 0.0011
-4.0000 -0.0010
0 0.0072
-4.0000 0.0010
-5.0000 -0.0000

disp(scores(1:10))

-1.9178
-1.9178
-1.9165
1.0008
64.0124
25.0011
-1.5126
2.5072
-1.5126
-1.9178

Argumentos de entrada recolher tudo

fun — função objetivo


 lidar com função | nome da função

Função objetivo, especificada como um identificador de função ou o nome da função. Escreva a função
objetivo para aceitar um vetor linha de comprimento nvars e retornar um valor escalar.

Quando a opção 'UseVectorized' é true, escreva fun para aceitar um pop- por -nvars matrix, onde o pop
é o tamanho da população atual. Neste caso, o fun retorna um vetor o mesmo comprimento de pop que
contém os valores de função de aptidão. Certifique-se de que fun não assume qualquer tamanho específico
para pop, desde ga pode passar um único membro de uma população, mesmo em um cálculo vetorizado.

https://www.mathworks.com/help/gads/ga.html 7/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
Exemplo: fun = @(x)(x-[4,2]).^2

Tipos de dados: char | function_handle | string

nvars — número de variáveis


 número inteiro positivo

Número de variáveis, especificado como um inteiro positivo. O solver passa vetores de linha de comprimento
nvars para fun .

Exemplo: 4

Tipos de dados: double

A — restrições de desigualdade Linear


 matriz real

Restrições de desigualdade linear, especificado como uma matriz real. A é um M- por - matriz denvars , onde M
é o número das desigualdades.

A codifica as desigualdades lineares M

A*x <= b,

onde x é o vetor coluna das variáveis de nvars x(:), e b é um vetor coluna com M elementos.

Por exemplo, para especificar

x1+ 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

Dê essas restrições:

A = [1,2;3,4;5,6];
b = [10;20;30];

Exemplo: Para especificar que as variáveis de controle somam para dar 1 ou menos, as restrições A =
ones(1,N) e b = 1.

Tipos de dados: double

b — restrições de desigualdade Linear


 vetor real

Restrições de desigualdade linear, especificado como um vetor real. b é um M-vector elemento relacionado
com A matriz. Se você passar b como um vetor linha, resolutores internamente Converter b para o vetor de
coluna b(:).

b codifica as desigualdades lineares M

A*x <= b,

onde x é o vetor coluna de N variáveis x(:), e A é uma matriz de tamanho M- por -N.

Por exemplo, para especificar

x1+ 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

Dê essas restrições:

A = [1,2;3,4;5,6];
b = [10;20;30];

Exemplo: Para especificar que as variáveis de controle somam para dar 1 ou menos, as restrições A =
ones(1,N) e b = 1.

Tipos de dados: double

Aeq — restrições de igualdade Linear


 matriz real

Restrições de igualdade linear, especificado como uma matriz real. Aeq é um Me- por - matriz denvars , onde
Me é o número de igualdades.

Aeq codifica as Me igualdades lineares

https://www.mathworks.com/help/gads/ga.html 8/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
Aeq*x = beq,

onde x é o vetor coluna de N variáveis x(:)e beq é um vetor coluna com elementos de Me .

Por exemplo, para especificar

x1+ 2x2 + 3x3 ≤ 10


2x1 + 4x2 + x ≤ 20,
3

Dê essas restrições:

A = [1,2,3;2,4,1];
b = [10;20];

Exemplo: Para especificar que as variáveis de controle somam para 1, dê as restrições Aeq = ones(1,N) e
beq = 1.

Tipos de dados: double

beq — restrições de igualdade Linear


 vetor real

Restrições de igualdade linear, especificado como um vetor real. beq é um Me-vector elemento relacionado à
matriz de Aeq . Se você passar beq como um vetor linha, resolutores internamente Converter beq para o vetor
de coluna beq(:).

beq codifica as Me igualdades lineares

Aeq*x = beq,

onde x é o vetor coluna de N variáveis x(:)e Aeq é uma matriz de tamanho Meq- por -N.

Por exemplo, para especificar

x1+ 2x2 + 3x3 ≤ 10


2x1 + 4x2 + x ≤ 20,
3

Dê essas restrições:

A = [1,2,3;2,4,1];
b = [10;20];

Exemplo: Para especificar que as variáveis de controle somam para 1, dê as restrições Aeq = ones(1,N) e
beq = 1.

Tipos de dados: double

lb — limites inferiores
 [] (padrão) | vetor real ou matriz

Limites inferiores, especificados como um verdadeiro vetor ou matriz de duplas. lb representa os limites
inferiores element-wise em lb ≤ x ≤ ub.

Internamente, o ga converte uma matriz lb para o vetor lb(:).

Exemplo: lb = [0;-Inf;4] significa x(1) ≥ 0, x(3) ≥ 4.

Tipos de dados: double

ub — limites superiores
 [] (padrão) | vetor real ou matriz

Limites superiores, especificados como um verdadeiro vetor ou matriz de duplas. ub representa os limites
superiores element-wise em lb ≤ x ≤ ub.

Internamente, o ga converte uma matriz de ub para o vetor ub(:).

Exemplo: ub = [Inf;4;10] significa x(2) ≤ 4, x(3) ≤ 10.

Tipos de dados: double

nonlcon — restrições não-lineares


 lidar com função | nome da função

Restrições não-lineares, especificadas como um identificador de função ou o nome da função. nonlcon é uma
função que aceita um vetor ou matriz x e retorna duas matrizes, c(x) e ceq(x).

• c(x) é a matriz de restrições de desigualdade não-linear em x. ga tenta satisfazer


c(x) <= 0

https://www.mathworks.com/help/gads/ga.html 9/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
para todas as entradas de c.
• ceq(x) é a matriz de restrições de igualdade não-linear em x. ga tenta satisfazer
ceq(x) = 0

para todas as entradas do ceq.

Por exemplo,

x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)

onde mycon é um MATLAB® função como

function [c,ceq] = mycon(x)


c = ... % Compute nonlinear inequalities at x.
ceq = ... % Compute nonlinear equalities at x.

Para obter mais informações, consulte Restrições de não-linear (otimização de ferramentas).

Para aprender como usar restrições vetorizadas, consulte Restrições vetorizado.

 Nota
ga não impõe restrições não-lineares para ser satisfeito quando a opção PopulationType é definida
como 'bitString' ou 'custom'.

Se IntCon não estiver vazia, a segunda saída de nonlcon (ceq) deve ser um (entrada vazia[]).

Para obter informações sobre como o ga usa nonlcon, consulte Algoritmos de Solver de restrição
não-linear.

Tipos de dados: char | function_handle | string

options — Opções de otimização


 saída de optimoptions | estrutura

Opções de otimização, especificadas como a saída de optimoptions ou uma estrutura.

Crie options usando optimoptions (recomendado) ou opções de exportação do app otimização. Para obter
detalhes, consulte importando e exportando seu trabalho (caixa de ferramentas de otimização).

optimoptions esconde as opções listadas em itálico. Veja opções que optimoptions oculta.

• Valores em {} denotam o valor padrão.


• {}* representa o padrão quando existem restrições lineares e para MutationFcn também quando existem
limites.
• eu * indica que ga lida com opções para restrições de número inteiro diferente; Esta notação não se aplica
a gamultiobj.
• NM indica que a opção não se aplica para gamultiobj.

Opções para inteiro ga, gae gamultiobj

Opção Descrição Valores

ConstraintTolerance Determina a viabilidade em relação a Escalar positivo | {1e-3}


restrições não-lineares. Além disso,
max(sqrt(eps),ConstraintTolerance)
determina a viabilidade em relação a
restrições lineares.

Para uma estrutura de opções, use


TolCon.

CreationFcn Eu * Função que cria a população inicial. {'gacreationuniform'} |


Especifica como um nome de uma função {'gacreationlinearfeasible'}* |
de criação interno ou um identificador de Função de criação personalizado
função. Consulte Opções de população.

CrossoverFcn Eu * Função que o algoritmo usa para {'crossoverscattered'} para ga,


criar filhos de cruzamento. Especifica {'crossoverintermediate'}* por
como um nome de uma função de gamultiobj |
crossover interno ou um identificador de 'crossoverheuristic' |
função. Consulte Opções de Crossover. 'crossoversinglepoint' |
'crossovertwopoint' |
'crossoverarithmetic' | Função
de crossover personalizado

CrossoverFraction A fração da população para a próxima Escalar positivo | {0.8}


geração, não incluindo crianças de elite,
que cria a função de crossover.

Display Nível de exposição. 'off' | 'iter' | 'diagnose' |


{'final'}

https://www.mathworks.com/help/gads/ga.html 10/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Opção Descrição Valores

DistanceMeasureFcn Função que calcula a medida de distância {'distancecrowding'} significa o


dos indivíduos. Especifica como um nome mesmo que
de uma função de medida de distância {@distancecrowding,'phenotype'}
built-in ou um identificador de função. O | {@distancecrowding,'genotype'}
valor se aplica ao espaço variável ou | Função de distância de Custom
projeto de decisão (genótipo) ou espaço
de função (fenótipo). O padrão de
'distancecrowding' é no espaço da
função (fenótipo). Para gamultiobj
apenas. Consulte Opções multiobjetivo.

Para uma estrutura de opções, use um


identificador de função, não um nome.

EliteCount NM Número inteiro positivo especificar Número inteiro positivo |


quantos indivíduos da geração atual são {ceil(0.05*PopulationSize)} |
garantidos para sobreviver à geração {0.05*(default PopulationSize)}
seguinte. Não usado em gamultiobj. para problemas misto inteiro

FitnessLimit NM Se a função de aptidão atinge o valor Escalar | {-Inf}


de FitnessLimit, o algoritmo para.

FitnessScalingFcn Função que dimensiona os valores da {'fitscalingrank'} |


função de aptidão. Especifica como um 'fitscalingshiftlinear' |
nome de uma função de escala interna ou 'fitscalingprop' |
um identificador de função. Opção não 'fitscalingtop' | Função de
está disponível para gamultiobj. dimensionamento personalizado
fitness

FunctionTolerance O algoritmo para se a mudança relativa Escalar positivo | {1e-6} para ga,
média no valor de função de melhor {1e-4} para gamultiobj
adequação ao longo de gerações de
MaxStallGenerations é menor ou igual
a FunctionTolerance. Se StallTest é
'geometricWeighted', em seguida, o
algoritmo para se a mudança relativa
média ponderada é menor ou igual a
FunctionTolerance.

Para gamultiobj, o algoritmo para


quando a média geométrica da mudança
relativa no valor do spread sobre opções
de options.MaxStallGenerations
gerações é menor que
options.FunctionTolerance, e a
propagação final é menor do que a
propagação média sobre as opções de
options.MaxStallGenerations
gerações. Ver gamultiobj algoritmo.

Para uma estrutura de opções, use


TolFun.

HybridFcn Eu * Função que continua a otimização Nome da função ou punho |


depois ga termina. Especifica como um 'fminsearch' | 'patternsearch'
nome ou um identificador de função. | 'fminunc' | 'fmincon' | {[]}

Alternativamente, uma matriz de células ou


especificando a função híbrida e suas
matriz 1-por-2 células | {@solver,
opções. Ver ga função híbrida.
hybridoptions}, onde solver =
Para gamultiobj, a função de único fminsearch, patternsearch,
híbrido é @fgoalattain. Ver gamultiobj fminuncou fmincon {[]}
função híbrida.

InitialPenalty NM Eu * Valor inicial do parâmetro de Escalar positivo | {10}


pena

InitialPopulationMatrix População inicial usada para propagar o Matriz | {[]}


algoritmo genético. Tem até
PopulationSize linhas e colunas de N ,
onde N é o número de variáveis. Você
pode passar uma população parcial, ou
seja, um com menos de PopulationSize
linhas. Nesse caso, o algoritmo genético
usa CreationFcn para gerar os membros
restantes da população. Consulte Opções
de população

Para uma estrutura de opções, use


InitialPopulation.

https://www.mathworks.com/help/gads/ga.html 11/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Opção Descrição Valores

InitialPopulationRange Matriz ou vetor especificando o intervalo Matriz ou vetor | {[-10;10]} para


dos indivíduos na população inicial. componentes acoplados,
Aplica-se a função de criação de {[-1e4+1;1e4+1]} para
gacreationuniform . ga desloca e componentes acoplados de
dimensiona o intervalo inicial padrão para problemas restritos inteiro, {[lb;ub]}
coincidir com qualquer dos limites finitos. para componentes limitadas, com o
intervalo padrão modificado para
Para uma estrutura de opções, use
coincidir com limites unilaterais.
PopInitRange.

InitialScoresMatrix Eu * Pontuação inicial utilizados para Vetor coluna por único objectivo |
determinar a aptidão. Tem até matriz para multiobjetivo | {[]}
PopulationSize linhas e tem colunas de
Nf , onde Nf é o número de funções de
aptidão (1 para ga, maior que 1 para
gamultiobj). Você pode passar uma
parcial matriz pontuações, ou seja, um
com menos de PopulationSize linhas.
Nesse caso, o solver preenche as
pontuações quando avalia as funções de
aptidão.

Para uma estrutura de opções, use


InitialScores.

MaxGenerations Número máximo de iterações antes o Número inteiro positivo |


algoritmo para. {100*numberOfVariables} para ga,
{200*numberOfVariables} para
Para uma estrutura de opções, use
gamultiobj
Generations.

MaxStallGenerations O algoritmo para se a mudança relativa Número inteiro positivo | {50} para
média no valor de função de melhor ga, {100} para gamultiobj
adequação ao longo de gerações de
MaxStallGenerations é menor ou igual
a FunctionTolerance. Se StallTest é
'geometricWeighted', em seguida, o
algoritmo para se a mudança relativa
média ponderada é menor ou igual a
FunctionTolerance.

Para gamultiobj, o algoritmo para


quando a média geométrica da mudança
relativa no valor do spread sobre opções
de options.MaxStallGenerations
gerações é menor que
options.FunctionTolerance, e a
propagação final é menor do que a
propagação média sobre as opções de
options.MaxStallGenerations
gerações. Ver gamultiobj algoritmo.

Para uma estrutura de opções, use


StallGenLimit.

MaxStallTime NM O algoritmo para se não houver Escalar positivo | {Inf}


melhora na função objetiva para
MaxStallTime segundos, medida pelo
tic e toc .

Para uma estrutura de opções, use


StallTimeLimit.

MaxTime O algoritmo para depois de executar após Escalar positivo | {Inf}


MaxTime segundos, medida pelo tic e
toc. Este limite é aplicado após cada
iteração, então ga pode exceder o limite
quando uma iteração leva tempo
substancial.

Para uma estrutura de opções, use o


TimeLimit.

MigrationDirection Direção de migração. Consulte as opções 'both' | {'forward'}


de migração

MigrationFraction Escalar entre 0 e 1, especificando a Escalar | {0.2}


fração de indivíduos em cada
subpopulação que migra para uma
subpopulação diferente. Consulte as
opções de migração

MigrationInterval Número inteiro positivo, especificando o Número inteiro positivo | {20}


número de gerações que ocorrem entre
as migrações dos indivíduos entre
subpopulações. Consulte as opções de
migração.

https://www.mathworks.com/help/gads/ga.html 12/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Opção Descrição Valores

MutationFcn Eu * Função que produz filhos de {'mutationgaussian'} para ga,


mutação. Especifica como um nome de {'mutationadaptfeasible'}* por
uma função de mutação built-in ou um gamultiobj | 'mutationuniform' |
identificador de função. Consulte Opções Função de mutação Custom
de mutação.

NonlinearConstraintAlgorithm Algoritmo de restrição não-linear. {'auglag'} para ga, {'penalty'}


Consulte restrição não-linear Solver para gamultiobj
algoritmos. Opção imutável para
gamultiobj.

Para uma estrutura de opções, use


NonlinConAlgorithm.

OutputFcn Funções que ga chama em cada iteração. Função identificador ou célula matriz
Especifica como um identificador de de identificadores de função | {[]}
função ou uma matriz de células de
identificadores de função. Consulte
Opções de saída de função.

Para uma estrutura de opções, use


OutputFcns.

ParetoFraction Escalar de 0 a 1 especificando a fração Escalar | {0.35}


dos indivíduos para manter-se na frente
primeira enquanto o solver Pareto
seleciona indivíduos de frentes mais
altas, para gamultiobj apenas. Consulte
Opções multiobjetivo.

PenaltyFactor NM Eu * Parâmetro de atualização de Escalar positivo | {100}


penalidade.

PlotFcn Função que plota os dados calculados ga ou gamultiobj: {[]} |


pelo algoritmo. Especifica como um nome 'gaplotdistance' |
de uma função de trama interna, um 'gaplotgenealogy' |
identificador de função ou uma matriz de 'gaplotselection' |
células de nomes internos ou alças de 'gaplotscorediversity'
função. Consulte as opções de plotagem. |'gaplotscores' |
'gaplotstopping' |
Para uma estrutura de opções, use
'gaplotmaxconstr' | Função de
PlotFcns.
trama custom

o ga só: 'gaplotbestf' |
'gaplotbestindiv' |
'gaplotexpectation' |
'gaplotrange'

gamultiobj apenas:
'gaplotpareto' |
'gaplotparetodistance' |
'gaplotrankhist' |
'gaplotspread'

PlotInterval Número inteiro positivo, especificando o Número inteiro positivo | {1}


número de gerações entre chamadas
consecutivas para as funções de
plotagem.

PopulationSize Tamanho da população. Número inteiro positivo | {50} quando


numberOfVariables <= 5, {200}
caso contrário |
{min(max(10*nvars,40),100)}
para problemas misto inteiro

PopulationType Tipo de dados da população. Deve ser 'bitstring' | 'custom' |


'doubleVector' para problemas de {'doubleVector'}
inteiro-mista.
ga ignora todas as restrições quando
PopulationType é definido como
'bitString' ou 'custom'. Consulte
Opções de população.

SelectionFcn Eu * Função que seleciona os pais das {'selectionstochunif'} para ga,


crianças de cruzamento e mutação. {'selectiontournament'} para
Especifica como um nome de uma função gamultiobj |
de seleção interna ou um identificador de 'selectionremainder' |
função. 'selectionuniform' |
'selectionroulette' | Função de
gamultiobj usa apenas
seleção personalizada
'selectiontournament'.

StallTest NM Tipo de teste parando. 'geometricWeighted' |


{'averageChange'}

https://www.mathworks.com/help/gads/ga.html 13/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Opção Descrição Valores

UseParallel Calcule aptidão e funções de restrição true | {false}


não-linear em paralelo. Ver vetorizar e
paralelo opções (avaliação da função de
usuário) e como usar o processamento
paralelo na caixa de ferramentas de
Otimização Global.

UseVectorized Especifica se as funções são vetorizadas. true | {false}


Ver vetorizar e paralelo opções (avaliação
da função de usuário) e vetorizar a
função de Fitness.

Para uma estrutura de opções, use


Vectorized com os valores 'on' ou
'off'.
Exemplo: optimoptions('ga','PlotFcn',@gaplotbestf)

IntCon — variáveis Integer


 vetor de inteiros positivos

Variáveis de inteiro, especificado como um vetor de inteiros positivos tomar valores de 1 a nvars. Cada valor
na IntCon representa um componente de x que é o valor inteiro.

 Nota
Quando IntCon é não vazio, Aeq e beq devem ser uma entrada vazia ([]), e nonlcon deve retornar
vazio para ceq. Para obter mais informações sobre programação de inteiro, consulte Otimização de
inteiro misto.

Exemplo: Para especificar que as entradas até mesmo no x são valores inteiros, conjunto IntCon 2:2:nvars

Tipos de dados: double

problem — Descrição do problema


 estrutura

Descrição do problema, especificada como uma estrutura contendo esses campos.

fitnessfcn Funções de aptidão

nvars Número de variáveis de projeto

Aineq A matriz para restrições de desigualdade linear

Bineq b vetor para restrições de desigualdade linear

Aeq Matriz de Aeq para restrições de igualdade linear

Beq beq vetor para restrições de igualdade linear

lb Limite inferior de x

ub Limite superior no x

nonlcon Função de restrição não-linear

rngstate Campo opcional para redefinir o estado do gerador de número aleatório

solver 'ga'

options Opções criados usando optimoptions ou exportados a partir do aplicativo


de otimização
Crie problem exportando um problema de otimização app, conforme descrito em importando e exportando
seu trabalho (caixa de ferramentas de otimização).

Tipos de dados: struct

Argumentos de saída recolher tudo

x — solução
 vetor real

Solução, retornada como um vetor real. x é que o melhor ponto que ga localizado durante suas iterações.

fval — valor da função objetivo para a solução


 número real

https://www.mathworks.com/help/gads/ga.html 14/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Valor de função objetivo para a solução, retornada como um número real. Geralmente, fval = fun(x).

exitflag — razão ga parou


 número inteiro

Razão que ga parou, retornado como um número inteiro.

Sinalizador de
Significado
saída

1 Sem restrições de não-lineares — média alteração cumulativa no valor da função de aptidão


ao longo de gerações de MaxStallGenerations é menor que FunctionTolerance, e a
violação de restrição é menor que ConstraintTolerance.

Com restrições de não-lineares — Magnitude da medida complementaridade (ver Medida de


complementaridade) é menor que sqrt(ConstraintTolerance), a subproblema é resolvida
usando uma tolerância inferior a FunctionTolerance, e a violação de restrição é menor que
ConstraintTolerance.

3 Valor da função de aptidão não mudou em gerações de MaxStallGenerations e a violação de


restrição é menor que ConstraintTolerance.

4 Magnitude de passo menor do que a precisão da máquina e a violação de restrição é menor do


que ConstraintTolerance.

5 Limite mínimo de aptidão FitnessLimit alcançado e a violação de restrição é menor que


ConstraintTolerance.

0 Número máximo de gerações MaxGenerations excedido.

-1 Otimização, terminada por uma função de saída ou a função de trama.

-2 Nenhum ponto viável encontrado.

-4 Enrole o limite de tempo MaxStallTime ultrapassada.

-5 Tempo limite MaxTime excedido.


Quando há restrições de número inteiro, ga usa o valor de aptidão de penalidade em vez do valor de aptidão
para parar os critérios.

output — informações sobre o processo de otimização


 estrutura

Informações sobre o processo de otimização, retornada como uma estrutura com esses campos:

• problemtype — tipo de problema, um dos:


˗ 'unconstrained'
˗ 'boundconstraints'
˗ 'linearconstraints'
˗ 'nonlinearconstr'
˗ 'integerconstraints'

• rngstate — estado do MATLAB gerador de números aleatórios, apenas antes de começar o algoritmo.
Você pode usar os valores em rngstate para reproduzir a saída de ga. Ver reproduzir resultados.
• generations — número de gerações de computado.
• funccount — número de avaliações da função de aptidão.
• message — razão pela qual o algoritmo encerrado.
• maxconstraint — violação de restrição máxima, se for o caso.

population — população Final


 matriz

População final, retornada como um PopulationSize- por -nvars matriz. As linhas da population são os
indivíduos.

scores — Pontuação Final


 vetor coluna

Pontuação final, retornada como um vetor de coluna.

• Para problemas não-inteiro, a pontuação final é os valores de função de adequação das linhas da
population .
• Para problemas de número inteiro, a pontuação final é os valores de adequação de pena dos membros da
população. Ver ga inteiro algoritmo.

https://www.mathworks.com/help/gads/ga.html 15/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga

Mais sobre recolher tudo

 Medida de complementaridade
No solucionador de restrição não-linear a Lagrangiana aumentada, a medida de complementaridade é a
norma do vetor cujos elementos são c Λ , onde c é a violação de restrição de desigualdade não-linear, e
Eu Eu Eu

ΛEué o multiplicador de Lagrange correspondente. Ver aumentada a Lagrangiana algoritmo genético.

Dicas
• Para escrever uma função com parâmetros adicionais para as variáveis independentes que podem ser
chamadas pelo ga, consulte Passando parâmetros extras (otimização de ferramentas).
• Para problemas que usam o tipo de população Double Vector (o padrão), ga não aceita funções cujas
entradas são do tipo complex. Para resolver problemas que envolvem dados complexos, escreva suas funções
para que eles aceitam reais vetores, separando as partes real e imaginárias.

Algoritmos
Para obter uma descrição do algoritmo genético, ver Como a funciona algoritmo genético.

Para obter uma descrição do algoritmo de programação inteiro-mista, consulte ga inteiro algoritmo.

Para obter uma descrição dos algoritmos de restrição não-linear, consulte Algoritmos de Solver de restrição não-
linear.

Referências
[1] Goldberg, David E., de algoritmos genéticos em pesquisa, otimização e máquina de aprendizagem, a Addison-
Wesley, 1989.

[2] a. r. Conn, s. I. M. Gould e pH L. Toint. "Um globalmente convergente aumentada Lagrangiana algoritmo para
otimização com restrições de geral e simples dos limites", jornal de Sião na análise numérica, Volume 28, número 2,
páginas 545-572, 1991.

[3] a. r. Conn, s. I. M. Gould e pH L. Toint. "Um globalmente convergente aumentada Lagrangiana barreira algoritmo
para otimização com General Inequality restrições e limites simples", matemática da computação, Volume 66,
número 217, páginas 261-288, 1997.

Recursos estendidos

 Suporte paralelo automático


Acelere o código executando automaticamente computação em paralelo usando o Parallel
Computing Toolbox™.

Ver também
gamultiobj | optimoptions | particleswarm | patternsearch

Tópicos
Algoritmo genético
Começando com o Global Optimization Toolbox
Configuração do problema de otimização

Introduzido antes R2006a

How useful was this information?

https://www.mathworks.com/help/gads/ga.html 16/16

Você também pode gostar