Discussão do artigo "Algoritmos de otimização populacional: simulação de têmpera (Simulated Annealing, SA). Parte I"
Bro, conteúdo fenomenal, adoro a forma como você expressa o algoritmo de maneira tão compacta e, ao mesmo tempo, fácil de ler.
Se você não se importar em pesquisar códigos-fonte um pouco enigmáticos da fxsaber, dê uma olhada nesta implementação publicada no blog da fxsaber (pode ser necessária uma tradução de idioma).
- 2024.03.26
- www.mql5.com
Conteúdo fenomenal, adoro como você expõe o algoritmo de forma tão compacta e, ao mesmo tempo, fácil de ler.
Obrigado por suas palavras gentis, fico feliz que tenha gostado do artigo. Espero que o comentário de @Stanislav Korotky tenha lhe ajudado.
TesterStatistics () pode ser útil para compilar funções de adequação personalizadas para uso em OnTester ().
Existe algum exemplo de como implementar esses algoritmos em um EA?
Obrigado pela atenção
Existe algum exemplo de como implementar esses algoritmos em um EA?
Obrigado pela atenção
- www.mql5.com
Como foi corretamente apontado, a principal vantagem do recozimento é a simplicidade de implementação. Portanto, a modificação da população desse algoritmo está apenas implorando por uma paralelização.
Lembrei-me da declaração do autor sobre a facilidade de escrever algoritmos paralelos em MQL5, mas ainda não vi isso confirmado em seus artigos. Corrija-me se eu estiver errado.
PS. Estou me referindo à paralelização normal, como a implementada no otimizador padrão, e não a truques com o lançamento de várias instâncias de programa. E, é claro, a implementação por meio da MQL5 sem usar dlls externas.
Se precisar de paralelização no nível do código, o OpenCL é amplamente utilizado - consulte os artigos de Gizlyk sobre redes neurais e seu livro didático.
Se precisar de otimização e paralelização em todo o nível do programa, como acontece no otimizador padrão, veja o exemplo do Booster, que usa paralelização de instâncias de EA em agentes (MQL5 puro é usado sem usar dlls externas).
A criação de trites para funções separadas, como no C#, e outras formas de paralelização de código não são compatíveis com a MQL5.
- www.mql5.com
A criação de trites para funções separadas, como no C#, e outras formas de paralelização de código não são compatíveis com a MQL5.
aplicação do OpenCL
Tecnologia extremamente inconveniente, tanto para codificação quanto para uso posterior na prática. Isso é bastante confirmado, por exemplo, pelo fato de que o otimizador padrão não a utiliza.
Essa abordagem dificilmente pode ser aplicada quando você precisa executar várias otimizações (um número indefinido de vezes e possivelmente com um conjunto indefinido de parâmetros a cada vez). Por exemplo, pode ser um conjunto de modelos MO.
- 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 populacional: simulação de têmpera (Simulated Annealing, SA). Parte I foi publicado:
O algoritmo de simulação de têmpera é uma metaheurística inspirada no processo de têmpera de metais. Neste artigo, realizaremos uma análise detalhada do algoritmo e mostraremos como muitas concepções comuns e mitos em torno deste método de otimização popular e amplamente conhecido podem ser equivocados e incompletos. Anúncio da segunda parte do artigo: "Conheça nosso algoritmo autoral de simulação de têmpera isotrópica (Simulated Isotropic Annealing, SIA)!"
O algoritmo de otimização por simulação de têmpera surgiu em 1983, graças aos estudos de Scott Kirkpatrick, George Gelatt e Mario Vecchi. Eles exploraram como líquidos e sólidos se comportam sob altas temperaturas, notando que os metais, ao se liquefazerem, permitem que as partículas se espalhem aleatoriamente. Sob condições ideais de alta temperatura inicial e um resfriamento prolongado, o material atinge um estado de energia mínima. Caso contrário, ele permanece num estado metaestável, com energia mais alta, fenômeno conhecido como têmpera, que envolve o resfriamento rápido do material, resultando em uma estrutura atômica anisotrópica e variável dentro do cristal.
Diante dessa observação, surgiu a ideia de aplicar esse processo gradual de resfriamento para desenvolver um algoritmo que conseguisse identificar soluções ótimas em problemas complexos. Assim, além de inspirar novos métodos em otimização física, o algoritmo começou a ser utilizado para solucionar desafios de otimização combinatória.
A inspiração por trás do algoritmo de simulação de têmpera vem de um paralelo matemático com o processo de têmpera de metais. Durante a têmpera, para uma distribuição homogênea de energia interna, o metal é aquecido até altas temperaturas e depois resfriado de maneira controlada.Isso permite que as moléculas metálicas se reorganizem em uma configuração mais estável, reduzindo tensões internas e corrigindo defeitos nos cristais. Além disso, o termo "têmpera" relaciona-se à energia livre termodinâmica do material, que varia de acordo com seu estado físico.
No contexto do algoritmo de otimização de simulação de têmpera, adota-se um procedimento similar. O algoritmo realiza etapas análogas ao aquecimento e ao resfriamento do metal, iniciando com uma solução inicial que pode ser aleatória ou baseada em dados de iterações anteriores. Seguidamente, o algoritmo executa modificações no estado dessa solução, através de mudanças que podem ser aleatórias ou planejadas, para alcançar uma nova configuração, mesmo que esta seja inicialmente menos favorável. A decisão de aceitar estados piores é controlada por uma função de "resfriamento", que diminui gradualmente a probabilidade de aceitar soluções inferiores, possibilitando assim que o algoritmo explore além dos ótimos locais e encontre soluções superiores em outras regiões do espaço de busca
Autor: Andrey Dik