Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
https://www.mathworks.com/help/gads/ga.html 1/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
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)')
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
-4.6793 -0.0860
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:
A = [-1,-1;
-1,1];
b = [-1;5];
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
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) == 5
A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;
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
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) == 5
A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;
lb = [1 -3];
ub = [6 8];
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
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
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
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) == 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.
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.
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
-2.0000 3.0000
disp(A*x' - b)
9.9983e-07
disp(Aeq*x' - beq)
-9.8163e-07
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
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)
-4.7121 0.0051
fval = -1.9949
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
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
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
Número de variáveis, especificado como um inteiro positivo. O solver passa vetores de linha de comprimento
nvars para fun .
Exemplo: 4
Restrições de desigualdade linear, especificado como uma matriz real. A é um M- por - matriz denvars , onde M
é o número das desigualdades.
A*x <= b,
onde x é o vetor coluna das variáveis de nvars x(:), e b é um vetor coluna com M elementos.
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.
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(:).
A*x <= b,
onde x é o vetor coluna de N variáveis x(:), e A é uma matriz de tamanho M- por -N.
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.
Restrições de igualdade linear, especificado como uma matriz real. Aeq é um Me- por - matriz denvars , onde
Me é o número de igualdades.
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 .
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.
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(:).
Aeq*x = beq,
onde x é o vetor coluna de N variáveis x(:)e Aeq é uma matriz de tamanho Meq- por -N.
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.
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.
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.
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).
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
Por exemplo,
x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)
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.
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.
https://www.mathworks.com/help/gads/ga.html 10/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
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.
https://www.mathworks.com/help/gads/ga.html 11/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
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.
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.
https://www.mathworks.com/help/gads/ga.html 12/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
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.
o ga só: 'gaplotbestf' |
'gaplotbestindiv' |
'gaplotexpectation' |
'gaplotrange'
gamultiobj apenas:
'gaplotpareto' |
'gaplotparetodistance' |
'gaplotrankhist' |
'gaplotspread'
https://www.mathworks.com/help/gads/ga.html 13/16
03/02/2019 Find minimum of function using genetic algorithm - MATLAB ga
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
lb Limite inferior de x
ub Limite superior no x
solver 'ga'
x — solução
vetor real
Solução, retornada como um vetor real. x é que o melhor ponto que ga localizado durante suas iterações.
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).
Sinalizador de
Significado
saída
Informações sobre o processo de otimização, retornada como uma estrutura com esses campos:
• 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.
População final, retornada como um PopulationSize- por -nvars matriz. As linhas da population são os
indivíduos.
• 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
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
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
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
https://www.mathworks.com/help/gads/ga.html 16/16