Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Muito obrigado pelo esclarecimento, a pergunta sobre a remoção de duplicatas foi totalmente respondida para minha satisfação. Estou anexando o código do script que demonstra a função original e a otimizada, que demonstra a redução no número de passagens em loops. No meu comentário atual, NÃO estou apontando um bug na função, mas sugerindo sua otimização, e meu objetivo principal era descobrir o princípio da remoção de duplicatas, para o qual recebi uma resposta abrangente. Mais uma vez, muito obrigado pela biblioteca e pelo esclarecimento da função.
110 e 160 são demais para 20 cromossomos.... Você colocou o contador no lugar errado.
Esse é o lugar certo:
OK. Agora tente a mesma população, com os mesmos cromossomos, mas nessa sequência:
O que observamos?
para Shurick:
De fato. O número de verificações de exclusividade, com todos os cromossomos diferentes, pode ser calculado pela fórmula
(PopulChromosCount^2-PopulChromosCount)/2No nosso exemplo, que tem 20 cromossomos (supondo que todos os cromossomos sejam diferentes), o número de verificações seria
(20*20-20)/2=190Isso é confirmado por esta verificação:
Se forem detectadas duplicatas, haverá ainda menos verificações.
Obrigado por sua participação ativa no projeto!
As alterações apropriadas serão feitas na biblioteca. Embora as alterações não afetem os recursos de pesquisa do algoritmo, elas tornarão seu trabalho mais racional.
O que estamos vendo?
Embora as alterações não afetem os recursos de pesquisa do algoritmo de forma alguma
Absolutamente certo, a qualidade do algoritmo não mudará, embora inicialmente eu duvidasse disso, mas agora você provou isso para mim, mas nessas dúvidas encontrou um método de otimização :)
Estudei o artigo e encontrei uma inconsistência no código: em duas funções para obter valores de intervalo, é usada a mesma fórmula:
Ou seja, são obtidos dados fora dos valores de dois genes, o que é característico da "mutação artificial". Isso é um bug ou há outra explicação?
Parece-me que, para o método de replicação, é necessário alterar os sinais:
Mínimo = C1+((C2-C1)*ReplicationOffset);
Máximo = C2-((C2-C1)*ReplicationOffset);
Estudei o artigo e encontrei essa inconsistência no código: duas funções usam a mesma fórmula para obter valores de intervalo:
Ou seja, são obtidos dados fora dos valores de dois genes, o que é característico da "mutação artificial". Isso é um bug ou há outra explicação?
Parece-me que, para o método de replicação, é necessário alterar os sinais:
Mínimo = C1+((C2-C1)*ReplicationOffset);
Máximo = C2-((C2-C1)*ReplicationOffset);
Não há erro ou inconsistência. Tanto na replicação quanto na mutação artificial , os limites do provável surgimento de um novo gene (as seções de código que você citou) são definidos da mesma forma.
Mas, para a replicação, a área de probabilidade está dentro desses limites, e para a mutação artificial, além desses limites.
A replicação serve para transferir traços característicos dos genes de ambos os pais (dentro dos limites).
A mutação artificial serve para gerar novos genes diferentes dos genes dos pais (fora dos limites).
Não há erro ou inconsistência. Tanto na replicação quanto na mutação artificial, os limites do provável surgimento de um novo gene (as seções de código que você citou) são definidos da mesma forma.
Mas, para a replicação, a área de probabilidade está dentro desses limites, e para a mutação artificial, além desses limites.
A replicação serve para transferir traços característicos dos genes de ambos os pais (dentro dos limites).
A mutação artificial serve para gerar novos genes diferentes dos genes dos pais (fora dos limites).
A propósito, é muito bom ser o destruidor de um dos mais famosos mitos dos traders relacionados à ZZ (a segunda tarefa do artigo). :)
Aparentemente, eu não entendi a redação da tarefa. Minha declaração:
Os pontos de entrada para o lucro máximo, com a condição de que a negociação mínima seja de N pips, estão localizados nos topos do ZigZag com a condição de joelho mínimo N + Spread pips.
Eu publiquei algumas funções de teste interessantes no tópico do fórum MQL4 "Test Multivariable Multiextremal Function", uma delas é apresentada no artigo.
Se quiser, você pode tentar encontrar os extremos das funções propostas usando outros algoritmos de otimização além do GA e publicar os resultados aqui. Você está convidado a fazer isso. Será interessante para todos e para mim, em primeiro lugar.
Sei que é muito importante avaliar a validade do ajuste. Um dos métodos é adicionar ruído aos dados originais.
Os códigos-fonte dos métodos de otimização alternativos podem ser encontrados aqui(http://alglib.sources.ru/optimization/) e aqui(http://ool.sourceforge.net/).
Obviamente, cada algoritmo de otimização tem melhor desempenho em suas próprias classes de funções de destino.
Quais funções de destino você usa na prática?