Eu lhe disse que minha cabeça está uma bagunça, então fui na direção errada. O hash pode ser aplicado à busca de duplicatas na colônia, e a função de encontrar um hash pode ser simples e rápida, porque mesmo uma ou duas duplicatas não farão o clima e não prejudicarão o resultado.
O tempo de execução do algoritmo GA é incomensuravelmente pequeno em comparação com a execução do FF. Portanto, não faz sentido tentar acelerar ainda mais o algoritmo, assim como não faz sentido mover o GA para um dll, por exemplo.
Devemos tentar reduzir o número de execuções de FF com a precisão necessária do resultado. O algoritmo tem configurações flexíveis para essa finalidade. Além disso, o tempo de pesquisa pode ser reduzido ainda mais com o aprimoramento das qualidades de pesquisa dos AGs em geral e dos operadores em particular. Recomendo direcionar o potencial de pesquisa para essas direções.
O tempo de execução do algoritmo GA é incomensuravelmente pequeno em comparação com a execução do FF. Portanto, não faz sentido tentar acelerar ainda mais o algoritmo, assim como não faz sentido mover o GA para um dll, por exemplo.
Devemos tentar reduzir o número de execuções de FF com a precisão necessária do resultado. O algoritmo tem configurações flexíveis para essa finalidade. Além disso, o tempo de pesquisa pode ser reduzido ainda mais com o aprimoramento das qualidades de pesquisa dos AGs em geral e dos operadores em particular. Recomendo direcionar o potencial de pesquisa para essas direções.
Parece que a dll agora não será mais rápida do que a mql 5. Ok, assim que eu escrever uma biblioteca, vou testá-la e depois escreverei o que saiu))).
Não é necessário normalizar o valor da função de aptidão e os genes. A normalização reduz a capacidade de pesquisa do algoritmo e aumenta o número de execuções de FF. Além disso, quanto mais casas decimais forem descartadas, maior será o impacto negativo sobre o algoritmo.
Em outras palavras, a introdução da operação de normalização no algoritmo foi um erro.
Não confundir com a operação de amostragem controlada pelo parâmetro Precision!
Não é necessário normalizar o valor da função de aptidão e dos genes. A normalização leva à diminuição da capacidade de busca do algoritmo e ao aumento da quantidade de FFs iniciais. E, quanto mais sinais após uma vírgula forem rejeitados, mais forte será a influência negativa no algoritmo.
Em outras palavras, a introdução da operação de normalização no algoritmo foi um erro.
Não confundir com a operação de digitalização operada no parâmetro Precision!
Não é necessário normalizar o valor da função de aptidão e os genes. A normalização reduz a capacidade de pesquisa do algoritmo e aumenta o número de execuções de FF. Além disso, quanto mais casas decimais forem descartadas, maior será o impacto negativo sobre o algoritmo.
Em outras palavras, a introdução da operação de normalização no algoritmo foi um erro.
Não confundir com a operação de amostragem controlada pelo parâmetro Precision!
Portanto, na própria biblioteca UGAlib, é melhor remover a normalização ou apenas em FF.
Serj_Che: É melhor remover a normalização na própria biblioteca UGAlib ou apenas na FF.
FFNormalizeDigits é usado no FF para normalizar o valor de aptidão e GeneNormalizeDigits é usado no próprio algoritmo para normalizar os genes. Não há necessidade de normalizar ambos.
joo: O FFNormalizeDigits é usado no FF para normalizar o valor de aptidão e o GeneNormalizeDigits é usado no próprio algoritmo para normalizar os genes. Não há necessidade de normalizar ambos.
Entendo. É claro que eu mesmo corrigirei o problema, mas se não for difícil, publique a versão corrigida do UGAlib.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
O hash pode ser aplicado à busca de duplicatas na colônia, e a função de encontrar um hash pode ser simples e rápida, porque mesmo uma ou duas duplicatas não farão o clima e não prejudicarão o resultado.
O tempo de execução do algoritmo GA é incomensuravelmente pequeno em comparação com a execução do FF. Portanto, não faz sentido tentar acelerar ainda mais o algoritmo, assim como não faz sentido mover o GA para um dll, por exemplo.
Devemos tentar reduzir o número de execuções de FF com a precisão necessária do resultado. O algoritmo tem configurações flexíveis para essa finalidade. Além disso, o tempo de pesquisa pode ser reduzido ainda mais com o aprimoramento das qualidades de pesquisa dos AGs em geral e dos operadores em particular. Recomendo direcionar o potencial de pesquisa para essas direções.
O tempo de execução do algoritmo GA é incomensuravelmente pequeno em comparação com a execução do FF. Portanto, não faz sentido tentar acelerar ainda mais o algoritmo, assim como não faz sentido mover o GA para um dll, por exemplo.
Devemos tentar reduzir o número de execuções de FF com a precisão necessária do resultado. O algoritmo tem configurações flexíveis para essa finalidade. Além disso, o tempo de pesquisa pode ser reduzido ainda mais com o aprimoramento das qualidades de pesquisa dos AGs em geral e dos operadores em particular. Recomendo direcionar o potencial de pesquisa para essas direções.
Parece que a dll agora não será mais rápida do que a mql 5.
Ok, assim que eu escrever uma biblioteca, vou testá-la e depois escreverei o que saiu))).
Observação importante sobre o artigo.
Não use os parâmetros do algoritmo
FFNormaliseDigits e GeneNormaliseDigits
Não é necessário normalizar o valor da função de aptidão e os genes. A normalização reduz a capacidade de pesquisa do algoritmo e aumenta o número de execuções de FF. Além disso, quanto mais casas decimais forem descartadas, maior será o impacto negativo sobre o algoritmo.
Em outras palavras, a introdução da operação de normalização no algoritmo foi um erro.
Não confundir com a operação de amostragem controlada pelo parâmetro Precision!
Não use os parâmetros do algoritmo
FFNormalizeDigits e GeneNormalizeDigits
Não é necessário normalizar o valor da função de aptidão e dos genes. A normalização leva à diminuição da capacidade de busca do algoritmo e ao aumento da quantidade de FFs iniciais. E, quanto mais sinais após uma vírgula forem rejeitados, mais forte será a influência negativa no algoritmo.
Em outras palavras, a introdução da operação de normalização no algoritmo foi um erro.
Não confundir com a operação de digitalização operada no parâmetro Precision!
Observação importante sobre o artigo.
Não use os parâmetros do algoritmo
FFNormaliseDigits e GeneNormaliseDigits
Não é necessário normalizar o valor da função de aptidão e os genes. A normalização reduz a capacidade de pesquisa do algoritmo e aumenta o número de execuções de FF. Além disso, quanto mais casas decimais forem descartadas, maior será o impacto negativo sobre o algoritmo.
Em outras palavras, a introdução da operação de normalização no algoritmo foi um erro.
Não confundir com a operação de amostragem controlada pelo parâmetro Precision!
É melhor remover a normalização na própria biblioteca UGAlib ou apenas na FF.
O FFNormalizeDigits é usado no FF para normalizar o valor de aptidão e o GeneNormalizeDigits é usado no próprio algoritmo para normalizar os genes. Não há necessidade de normalizar ambos.
Entendo. É claro que eu mesmo corrigirei o problema, mas se não for difícil, publique a versão corrigida do UGAlib.
Tenho medo de cometer erros.
Muito obrigado ao autor pela biblioteca!
Adicione a linha "cnt++;" no loop da função de pesquisa principal, caso contrário, ela poderá entrar em um loop eterno!
//Отбор двух родителей.
void SelectTwoParents
(
int &address_mama,
int &address_papa
)
{
//-----------------------Переменные-------------------------------------
int cnt=1;
address_mama=0;//адрес материнской особи в популяции
address_papa=0;//адрес отцовской особи в популяции
//----------------------------------------------------------------------
//----------------------------Отбор родителей--------------------------
//Десять попыток выбрать разных родителей.
while (cnt<=10)
{
//Для материнской особи
address_mama=NaturalSelection();
//Для отцовской особи
address_papa=NaturalSelection();
if (address_mama!=address_papa)
break;
cnt++;
}
//---------------------------------------------------------------------
}