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

03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga  Esta é a traduçãoPassando 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. x = ga( fun , nvars , A , b ) localiza um mínimo local x para fun , sujeitos a linear desigualdades A*x ≤ exemplo de b . ga , avalia o produto da matriz A*x como se x é transposta ( A*x' ). x = ga( fun , nvars , A , b , Aeq , beq ) localiza um mínimo local x para fun , sujeitos as igualdades exemplo de 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' ). x = ga( fun , nvars , A , b , Aeq , beq , lb , ub ) define um conjunto de limites inferior e superior sobre as exemplo de 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.) x = ga( fun , nvars , A , b , Aeq , beq , lb , ub , nonlcon ) sujeitos a minimização das limitações definidas exemplo de 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.) x = ga( fun , nvars , A , b , Aeq , beq , lb , ub , nonlcon , options ) minimiza os parâmetros de exemplo 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 . x = ga( fun , nvars , A , b ,[],[], lb , ub , nonlcon , IntCon ) ou x = ga(fun,nvars,A,b,[], exemplo de [],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. [ 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 exemplo de 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. [ x , fval , exitflag , output , population , scores ] = ga( ___ ) também retorna uma matriz exemplo de 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 " id="pdf-obj-0-11" src="pdf-obj-0-11.jpg">

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 dimensão (número de variáveis de projeto) de fun.

Nota

exemplo de

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.

  • x = ga(fun,nvars,A,b) localiza um mínimo local x para fun, sujeitos a linear desigualdades A*x

exemplo de

b. ga , avalia o produto da matriz A*x como se x é transposta (A*x').

  • x = ga(fun,nvars,A,b,Aeq,beq) localiza um mínimo local x para fun, sujeitos as igualdades

exemplo de

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').

  • x = ga(fun,nvars,A,b,Aeq,beq,lb,ub) define um conjunto de limites inferior e superior sobre as

exemplo de

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.)

  • x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon) sujeitos a minimização das limitações definidas

exemplo de

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.)

  • x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options) minimiza os parâmetros de

exemplo 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 .

  • x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) ou x = ga(fun,nvars,A,b,[],

exemplo de

[],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.

[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

exemplo de

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.

[x,fval,exitflag,output,population,scores] = ga(

___

) também retorna uma matriz

exemplo de

population, cujas linhas são a população final e um vetor scores, as contagens da população final.

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
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
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)

03/02/2019

Find minimum of function using genetic algorithm - MATLAB ga

x = 1×2 0.9991 0.0000 As restrições são satisfeitas para dentro do valor padrão da tolerância
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

Optimization terminated: average change in the fitness value less than options.FunctionTolerance.

 Minimizar uma função Nonsmooth com restrições de desigualdade e igualdade Linear Usar o algoritmo genético
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
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 +
x(1). Além disso, definir limites 1 <= x(1) <= 6 e
-3 <= x(2) <= 8.
Tente no MATLAB
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.

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
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
Otimizar com não-linear restrições usando ga
Usar o algoritmo genético para minimizar a função de
Tente no MATLAB
ps_example na região
e
.
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
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)
utilizando uma tolerância de restrição menor do que o padrão.
Tente no MATLAB
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);

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)
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 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)
x = 1×2
-5.0000
-0.0000

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

 Obter a solução e o valor da função Use para algoritmo genético para minimizar um
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
mínimo da função.
Tente no MATLAB
IntCon = 1;

03/02/2019

Find minimum of function using genetic algorithm - MATLAB ga

rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq =
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)
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

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

 Obter informações de diagnóstico Use o algoritmo genético para minimizar a função de Tente no
Obter informações de diagnóstico
Use o algoritmo genético para minimizar a função de
Tente no MATLAB
ps_example restringida a ter x(1) valor inteiro. Para entender a
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)
x = 1×2

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

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
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
saídas, incluindo a população final e o vetor de pontuações.
Tente no MATLAB
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);
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

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

Argumentos de entrada recolher tudo  fun — função objetivo lidar com função | nome da
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.

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
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
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
x
+ 2x
≤ 10
1
2
3x
+ 4x
≤ 20
1
2
5x
+ 6x
≤ 30,
1
2
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
x
+ 2x
≤ 10
1
2
3x
+ 4x
≤ 20
1
2
5x
+ 6x
≤ 30,
1
2
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
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

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
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
x
+ 2x
+ 3x
≤ 10
1
2
3
2x
+ 4x
+ x
≤ 20,
1
2
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
x
+ 2x
+ 3x
≤ 10
1
2
3
2x
+ 4x
+ x
≤ 20,
1
2
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
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
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
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

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
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 = ...
ceq = ...
% Compute nonlinear inequalities at x.
% 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
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
ConstraintTolerance
Determina a viabilidade em relação a
restrições não-lineares. Além disso,
Valores
Escalar positivo | {1e-3}
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.
Especifica como um nome de uma função
de criação interno ou um identificador de
função. Consulte Opções de população.
{'gacreationuniform'} |
{'gacreationlinearfeasible'}* |
Função de criação personalizado
CrossoverFcn
Eu * Função que o algoritmo usa para
criar filhos de cruzamento. Especifica
como um nome de uma função de
crossover interno ou um identificador de
função. Consulte Opções de Crossover.
CrossoverFraction
A fração da população para a próxima
geração, não incluindo crianças de elite,
que cria a função de crossover.
{'crossoverscattered'} para ga,
{'crossoverintermediate'}* por
gamultiobj |
'crossoverheuristic' |
'crossoversinglepoint' |
'crossovertwopoint' |
'crossoverarithmetic' | Função
de crossover personalizado
Escalar positivo | {0.8}
Display
Nível de exposição.
'off' | 'iter' | 'diagnose' |
{'final'}

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 dos indivíduos. Especifica como um
Opção
Descrição
Valores
DistanceMeasureFcn
Função que calcula a medida de distância
dos indivíduos. Especifica como um nome
de uma função de medida de distância
built-in ou um identificador de função. O
valor se aplica ao espaço variável ou
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.
{'distancecrowding'} significa o
mesmo que
{@distancecrowding,'phenotype'}
| {@distancecrowding,'genotype'}
| Função de distância de Custom
Para uma estrutura de opções, use um
identificador de função, não um nome.
EliteCount
NM Número inteiro positivo especificar
quantos indivíduos da geração atual são
garantidos para sobreviver à geração
seguinte. Não usado em gamultiobj.
Número inteiro positivo |
{ceil(0.05*PopulationSize)} |
{0.05*(default PopulationSize)}
FitnessLimit
NM Se a função de aptidão atinge o valor
de FitnessLimit, o algoritmo para.
para problemas misto inteiro
Escalar | {-Inf}
FitnessScalingFcn
Função que dimensiona os valores da
função de aptidão. Especifica como um
nome de uma função de escala interna ou
um identificador de função. Opção não
está disponível para gamultiobj.
{'fitscalingrank'} |
'fitscalingshiftlinear' |
'fitscalingprop' |
'fitscalingtop' | Função de
dimensionamento personalizado
fitness
FunctionTolerance
O algoritmo para se a mudança relativa
média no valor de função de melhor
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.
Escalar positivo | {1e-6} para ga,
{1e-4} para gamultiobj
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
depois ga termina. Especifica como um
nome ou um identificador de função.
Nome da função ou punho |
'fminsearch' | 'patternsearch'
| 'fminunc' | 'fmincon' | {[]}
Alternativamente, uma matriz de células
especificando a função híbrida e suas
opções. Ver ga função híbrida.
ou
Para gamultiobj, a função de único
híbrido é @fgoalattain. Ver gamultiobj
função híbrida.
matriz 1-por-2 células | {@solver,
hybridoptions}, onde solver =
fminsearch, patternsearch,
fminuncou fmincon {[]}
InitialPenalty
NM Eu * Valor inicial do parâmetro de
pena
Escalar positivo | {10}
InitialPopulationMatrix
População inicial usada para propagar o
algoritmo genético. Tem até
Matriz | {[]}
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.

03/02/2019

Find minimum of function using genetic algorithm - MATLAB ga

Opção Descrição Valores InitialPopulationRange Matriz ou vetor especificando o intervalo dos indivíduos na população inicial. Aplica-se
Opção
Descrição
Valores
InitialPopulationRange
Matriz ou vetor especificando o intervalo
dos indivíduos na população inicial.
Aplica-se a função de criação de
gacreationuniform . ga desloca e
dimensiona o intervalo inicial padrão para
coincidir com qualquer dos limites finitos.
Para uma estrutura de opções, use
PopInitRange.
Matriz ou vetor | {[-10;10]} para
componentes acoplados,
{[-1e4+1;1e4+1]} para
componentes acoplados de
problemas restritos inteiro, {[lb;ub]}
para componentes limitadas, com o
intervalo padrão modificado para
coincidir com limites unilaterais.
InitialScoresMatrix
Eu * Pontuação inicial utilizados para
determinar a aptidão. Tem até
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.
Vetor coluna por único objectivo |
matriz para multiobjetivo | {[]}
Para uma estrutura de opções, use
InitialScores.
MaxGenerations
Número máximo de iterações antes o
algoritmo para.
Para uma estrutura de opções, use
Generations.
Número inteiro positivo |
{100*numberOfVariables} para ga,
{200*numberOfVariables} para
gamultiobj
MaxStallGenerations
O algoritmo para se a mudança relativa
média no valor de função de melhor
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.
Número inteiro positivo | {50} para
ga, {100} para gamultiobj
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
melhora na função objetiva para
MaxStallTime segundos, medida pelo
tic e toc .
Escalar positivo | {Inf}
Para uma estrutura de opções, use
StallTimeLimit.
MaxTime
O algoritmo para depois de executar após
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.
Escalar positivo | {Inf}
Para uma estrutura de opções, use o
TimeLimit.
MigrationDirection
Direção de migração. Consulte as opções
de migração
'both' | {'forward'}
MigrationFraction
Escalar entre 0 e 1, especificando a
fração de indivíduos em cada
subpopulação que migra para uma
subpopulação diferente. Consulte as
opções de migração
Escalar | {0.2}
MigrationInterval
Número inteiro positivo, especificando o
número de gerações que ocorrem entre
as migrações dos indivíduos entre
subpopulações. Consulte as opções de
migração.
Número inteiro positivo | {20}

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 mutação. Especifica como um nome
Opção
Descrição
Valores
MutationFcn
Eu * Função que produz filhos de
mutação. Especifica como um nome de
uma função de mutação built-in ou um
identificador de função. Consulte Opções
de mutação.
{'mutationgaussian'} para ga,
{'mutationadaptfeasible'}* por
gamultiobj | 'mutationuniform' |
Função de mutação Custom
NonlinearConstraintAlgorithm
Algoritmo de restrição não-linear.
Consulte restrição não-linear Solver
algoritmos. Opção imutável para
gamultiobj.
{'auglag'} para ga, {'penalty'}
para gamultiobj
Para uma estrutura de opções, use
NonlinConAlgorithm.
OutputFcn
Funções que ga chama em cada iteração.
Especifica como um identificador de
função ou uma matriz de células de
identificadores de função. Consulte
Opções de saída de função.
Função identificador ou célula matriz
de identificadores de função | {[]}
Para uma estrutura de opções, use
OutputFcns.
ParetoFraction
Escalar de 0 a 1 especificando a fração
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.
Escalar | {0.35}
PenaltyFactor
NM Eu * Parâmetro de atualização de
penalidade.
Escalar positivo | {100}
PlotFcn
Função que plota os dados calculados
pelo algoritmo. Especifica como um nome
de uma função de trama interna, um
identificador de função ou uma matriz de
células de nomes internos ou alças de
função. Consulte as opções de plotagem.
Para uma estrutura de opções, use
PlotFcns.
ga ou gamultiobj: {[]} |
'gaplotdistance' |
'gaplotgenealogy' |
'gaplotselection' |
'gaplotscorediversity'
|'gaplotscores' |
'gaplotstopping' |
'gaplotmaxconstr' | Função de
trama custom
o ga só: 'gaplotbestf' |
'gaplotbestindiv' |
'gaplotexpectation' |
'gaplotrange'
gamultiobj apenas:
PlotInterval
Número inteiro positivo, especificando o
número de gerações entre chamadas
consecutivas para as funções de
plotagem.
'gaplotpareto' |
'gaplotparetodistance' |
'gaplotrankhist' |
'gaplotspread'
Número inteiro positivo | {1}
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
'doubleVector' para problemas de
inteiro-mista.
'bitstring' | 'custom' |
{'doubleVector'}
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
crianças de cruzamento e mutação.
Especifica como um nome de uma função
de seleção interna ou um identificador de
função.
gamultiobj usa apenas
'selectiontournament'.
NM Tipo de teste parando.
{'selectionstochunif'} para ga,
{'selectiontournament'} para
gamultiobj |
'selectionremainder' |
'selectionuniform' |
'selectionroulette' | Função de
seleção personalizada
StallTest
'geometricWeighted' |
{'averageChange'}

03/02/2019

Find minimum of function using genetic algorithm - MATLAB ga

Opção Descrição UseParallel Calcule aptidão e funções de restrição não-linear em paralelo. Ver vetorizar e paralelo
Opção
Descrição
UseParallel
Calcule aptidão e funções de restrição
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.
Valores
true | {false}
UseVectorized
Especifica se as funções são vetorizadas.
Ver vetorizar e paralelo opções (avaliação
da função de usuário) e vetorizar a
função de Fitness.
true | {false}
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
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
problem — Descrição do problema
estrutura
Descrição do problema, especificada como uma estrutura contendo esses campos.
fitnessfcn
nvars
Aineq
Bineq
Aeq
Beq
lb
ub
nonlcon
Funções de aptidão
Número de variáveis de projeto
A matriz para restrições de desigualdade linear
b vetor para restrições de desigualdade linear
Matriz de Aeq para restrições de igualdade linear
beq vetor para restrições de igualdade linear
Limite inferior de x
Limite superior no x
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

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).
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
-1
-2
-4
-5
Número máximo de gerações MaxGenerations excedido.
Otimização, terminada por uma função de saída ou a função de trama.
Nenhum ponto viável encontrado.
Enrole o limite de tempo MaxStallTime ultrapassada.
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,
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
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. •
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.

03/02/2019

Find minimum of function using genetic algorithm - MATLAB ga

Mais sobre

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

Λ

Eu

Eu

, onde c

Eu

é a violação de restrição de desigualdade não-linear, e

Λ

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.

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

Tópicos

Introduzido antes R2006a

How useful was this information?