Discussão do artigo "Algoritmos de otimização populacionais: Algoritmo de mudas, semeadura e crescimento (SSG)"
Qual é o melhor algoritmo para encontrar extremos locais?
Em termos gerais, precisamos produzir uma lista de parâmetros que melhor se enquadrem nos extremos locais (vértices).
Usando o exemplo de um ouriço, mostre as coordenadas das pontas de suas agulhas.
Diga-me se há algum algoritmo de otimização que tenha os seguintes recursos:
seleção de apenas uma parte dos parâmetros quando o número deles é grande;
os parâmetros selecionados são otimizados somente com o uso de um algoritmo genético ou de um algoritmo que possa ser substituído pelo genético;
o algoritmo para selecionar os parâmetros ativos para a iteração atual não importa, é permitido alterar os intervalos e a etapa de otimização
Qual é o melhor algoritmo para encontrar extremos locais?
Em termos gerais, precisamos produzir uma lista de parâmetros que melhor se enquadrem nos extremos locais (vértices).
Usando o exemplo de um ouriço, mostre as coordenadas das pontas de suas agulhas.
Para qualquer tarefa de pesquisa global, qualquer algoritmo da parte superior da tabela funcionará melhor. Você pode escolher o mais adequado individualmente se souber, por exemplo, que a função é suave ou discreta, ou escolher o mais adequado de acordo com o número de parâmetros otimizados no problema.
Normalmente, não defina o problema de forma que seja necessário encontrar extremos locais, pois na maioria dos problemas práticos o número de extremos locais é desconhecido (se não fosse assim, seria mais fácil usar métodos analíticos) e o número de extremos globais é conhecido - um (se houver vários extremos globais com o mesmo valor, isso equivale ao fato de que é um). É por isso que geralmente o problema é definido de forma que a função seja a mais monotônica possível, um exemplo é a minimização de erros.
Não conheço nenhum algoritmo para resolver problemas de busca de locais no caso geral, e raramente é conveniente escrever algoritmos específicos para um determinado problema. Nesses casos, eu consideraria como se poderia representar o FF para resolver o problema. Pode haver diferentes abordagens, como o uso de AO como um complemento ao agrupamento. Outra abordagem para o problema é dividir o FF em "camadas" hipotéticas, do mínimo global ao máximo global (que deve ser encontrado com antecedência) e, em seguida, examinar cada camada sequencialmente, ou seja, você precisa criar um gerenciador de tarefas em lote para AO.
Em resumo, vou desapontá-lo: não há algoritmos para resolver problemas de busca de extremos locais de forma geral. É mais fácil modificar o FF do que criar um algoritmo especial.
3. o algoritmo de seleção dos parâmetros ativos para a iteração atual é irrelevante; é permitido alterar os intervalos e a etapa de otimização
1. Bem, o AO não se importa com quantos e quais parâmetros devem ser enviados a ele para otimização, portanto, você pode enviar todos os parâmetros ao AO e não todos.
2. Você pode aplicar qualquer algoritmo individualmente, em conjunto, sequencialmente e combinado. Tentei tornar os algoritmos dos artigos uniformes.
3. qualquer um dos algoritmos apresentados pode ser ajustado diretamente durante o processo de otimização, em princípio. Você só precisa corrigir a inicialização para que a população acumulada não seja zerada. É possível, por exemplo, reduzir a etapa dos parâmetros otimizados em proporção às épocas passadas (ou aumentar).
Em resumo, vou desapontá-lo: não há algoritmos para resolver problemas de busca de extremos locais de forma geral. É mais fácil modificar o FF do que criar um algoritmo especial.
Obrigado. Eu encontro indiretamente os extremos locais por meio da interrupção forçada da otimização quando um grande número de núcleos está envolvido. Em termos gerais, há 20 agentes no Tester, e eu interrompo a otimização após 2000 passagens.
Obrigado. Eu encontro indiretamente os locais por meio da interrupção forçada da otimização quando um grande número de núcleos está envolvido. Em termos gerais, há 20 agentes no testador, e eu interrompo a otimização após 2000 passagens.
Bem, isso é absolutamente anticientífico! ))))) Mas é inteligente.
Eu estava pensando que existem algoritmos de maior "aglomeração", quando a população tende a se dividir em grupos por localidades, como IWO, COA, ABC, BFO. As populações desses algoritmos podem ser analisadas quanto a aglomerados de agentes (uma unidade de pesquisa lógica em AO é chamada de agente) medindo a distância euclidiana entre os agentes, ou seja, procure grupos de agentes com distância mínima entre eles.
Você também pode tentar, em algoritmos de reversão (quando um agente faz repetidas tentativas de busca em diferentes direções a partir da mesma posição) como COA e HS ou MA, definir um contador de tentativas, fazer fatias dos estados da população por meio de várias iterações e os agentes com o maior número de tentativas serão os extremos locais. O MA e o BFO têm esse contador nativamente.
Ou seja, eu disse que não há maneiras exatas de pesquisar locais (a pesquisa de um global pode ser considerada "exata" nesse aspecto), mas você pode pesquisar aproximadamente como descrevi acima. Para uma solução exata, você precisa conhecer as informações diferentes sobre FF.
ZЫ. Uma pergunta interessante para todos os interessados nesse tópico: qual é a diferença entre extremos locais e globais (sem levar em conta a diferença nos valores de FF)?
ZZY Depois de responder à primeira pergunta, muitas perguntas desaparecem por si mesmas.
Infelizmente, sou incompetente em tudo, por isso estou interessado em uma solução aproximada, mas pronta.
ZЫ. Uma pergunta interessante para todos os interessados nesse tópico: qual é a diferença entre extremos locais e extremos globais (sem levar em conta a diferença nos valores de FF)?
Se considerarmos o resultado da otimização como um conjunto de passagens, as dicas de locais serão visíveis após a aplicação de agrupamento ao espaço de passagens calculadas de entrada. Além disso, em cada cluster, obtemos uma otimização "estreita".
Qual é o melhor algoritmo para encontrar extremos locais?
Em termos gerais, precisamos produzir uma lista de parâmetros que melhor se enquadrem nos extremos locais (vértices).
Usando o exemplo de um ouriço, mostre as coordenadas das pontas de suas agulhas.
Infelizmente, sou incompetente em tudo, por isso estou interessado em uma solução aproximada, mas pronta.
Se considerarmos o resultado da otimização como um conjunto de passagens, as dicas de locais serão visíveis após a aplicação de agrupamento ao espaço de passagens contadas de entrada. Além disso, em cada agrupamento, obtemos uma otimização "estreita".
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Algoritmos de otimização populacionais: Algoritmo de mudas, semeadura e crescimento (SSG) foi publicado:
O algoritmo de “mudas, semeadura e crescimento” (Saplings Sowing and Growing up, SSG) é inspirado em um dos organismos mais resistentes do planeta, um exemplo notável de sobrevivência em inúmeras condições.
O SSG é um dos poucos que não é descrito claramente pelos autores (existem apenas indicações e ideias gerais sobre ele). Os operadores de variação apresentados pelos autores também não são instruções prontas para a implementação algorítmica do mesmo, não existe indicação clara das árvores filha e pai e de sua interação; também não há requisitos para a sequência de procedimentos, e qualquer usuário pode alterar sua ordem para obter a melhor árvore.
Em um sentido amplo, o SSG não é um algoritmo de otimização, mas, sim, um conjunto genérico de regras que se destina a complementar outros algoritmos para melhorar a qualidade da otimização, ou seja, ele é uma espécie de estrutura complementar para qualquer algoritmo populacional evolutivo, de modo que posso dar asas à imaginação e à oportunidade de experimentar uma implementação específica do algoritmo de otimização. Apliquei algumas de minhas próprias ideias e experiência acumulada ao escrever algoritmos anteriores e as utilizei para trabalhar com o SSG; os resultados de meus experimentos são apresentados a seguir.
Para começar a entender o algoritmo, devemos imaginar uma árvore como um agente de otimização. Uma árvore é uma solução para um problema de otimização, em que cada ramo é um parâmetro otimizável do problema. De forma bastante abstrata e, eu diria, artística, podemos ilustrar uma árvore filha e uma árvore pai (o algoritmo opera com essas duas noções) na Figura 1. O tronco da árvore é um conjunto de parâmetros a serem otimizados. Cada ramo é um parâmetro otimizável separado, em que o comprimento do ramo é limitado pelo intervalo permitido de valores do parâmetro correspondente. A direção dos ramos não é importante e só é mostrada na figura para mostrar que eles são diferentes.
Autor: Andrey Dik