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
1) Contador de histórias? Hmm, infelizmente não entendi o humor. A verificação do banco de dados ocorre na função CheckHistoryChromosomes(chromos,historyHromosomes ) , que é chamada a partir de GetFitness(historyHromosomes). É por isso que eu disse corretamente - não há execuções repetidas de FF.
2) A reconciliação com o banco de dados ocorre com a verificação por genes. E cada gene é normalizado por SelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) quando um novo cromossomo aparece. Portanto, também não há "contos de fadas" aqui.
3) Veja 2)
1,2,3) Entendi. Quase. A normalização realmente existe, mas ainda não é motivo para comparar números reais "sem intervalo" para obter igualdade. :)
SelectInDiscreteSpace() foi ligeiramente reformulado. Não gostei do fato de você estar corrigindo o Step internamente. Não é uma questão real corrigir um usuário. Pelo menos não desta vez.
O usuário pode ter considerações razoáveis para tornar a etapa "irracional" com relação ao intervalo de alterações genéticas.
O resultado foi o seguinte:
SelectInDiscreteSpace() foi ligeiramente modificado. Não gosto do fato de você corrigir o Step inside. Não é da conta do rei corrigir um usuário. Pelo menos não desta vez.
O usuário pode ter considerações razoáveis para tornar o Step "irracional" com relação ao intervalo de alterações genéticas.
Entenda isso:
A questão é que a etapa pode ser tal que dividirá o espaço em um número não inteiro de seções, e isso não é bom, porque imediatamente surge a pergunta: de que lado do número de entrada "pegar" o valor na linha numérica (não se sabe o que é "direito", direito ou esquerdo) - meu algoritmo dá uma resposta adequada, mas o seu, infelizmente. É por isso que você precisa fazer isso dessa forma:
step = (InMax - InMin) / MathCeil ( (InMax - InMin) / step );Aqui estão alguns exemplos comparativos dos resultados do seu código e do meu:
O significado dessa normalização é diferente de NormalizeDouble (), mas cabe ao proprietário, que não gosta dela, usar a normalização para o sinal necessário, não com uma etapa especificada como em SelectInDiscreteSpace().
Está tudo claro, assim como na postagem anterior.
Andrei, todas as variantes listadas têm o direito de existir aqui. A sua também, é claro. A discretização flutuante e variável durante a otimização merece muita atenção.
--
Sobre tudo em geral:
Você deve adicionar configurações, uma biblioteca de operadores genéticos, etc. E deve pensar em extensões e usos convenientes com antecedência.
Estou pensando em reescrever tudo em objetos, criando uma interface mais poderosa para o programa e para o usuário (gráfica, com muitas configurações em guias). Algumas coisas a serem adicionadas, outras a serem otimizadas.
Mais precisamente, ainda estou pensando se devo fazer isso com base no seu código (usar fragmentos) ou se devo reescrever tudo de novo.
Se você quiser participar, escreva em particular.
Não é certo que eu o publicarei. Veremos. Por enquanto, quero fazer isso por mim mesmo.
Sobre tudo em geral:
1) De forma positiva - você precisa adicionar personalizações, uma biblioteca de operadores genéticos, etc. E pensar na extensão e no uso convenientes com antecedência.
2) Mais precisamente, ainda estou pensando se devo fazer isso com base no seu código (usar fragmentos) ou reescrevê-lo todo de novo.
3) Se você quiser participar, escreva em particular.
1) Pelo contrário, estou tentando reduzir o número de parâmetros UGA sem reduzir a flexibilidade do controle.
2) Conheço várias pessoas que usam o código do artigo em seus projetos como está e outras que reescreveram o código do 0.
3) Escrevi para você em uma mensagem privada.
Tudo isso é compreensível, assim como a postagem anterior.
Andrei, todas as opções listadas aqui têm o direito de existir. As suas também, é claro. A discretização flutuante, que muda durante o processo de otimização, merece muita atenção.
--
Sobre tudo em geral:
Você deve adicionar configurações, uma biblioteca de operadores genéticos, etc. E deve pensar em extensões e usos convenientes com antecedência.
Estou pensando em reescrever tudo em objetos, criando uma interface mais poderosa, tanto para o programa quanto para o usuário (gráfica, com muitas configurações em guias). Algumas coisas a serem adicionadas, outras a serem otimizadas.
Mais precisamente, ainda estou pensando se devo fazer isso com base no seu código (usar fragmentos) ou se devo reescrever tudo de novo.
...Vladimir, você quer pedalar ou dirigir?
Você quer um código bonito ou quer criar um GA mais legal do que o de teste?
Pessoalmente, acho que o de teste é bem legal, mas há poucos parâmetros.
.
Vladimir, você quer pilotar ou dirigir?
quer um código bonito ou construir um GA mais legal do que o de teste?
Pessoalmente, acho que o de teste é muito legal, mas apenas uma nuance não é parâmetro suficiente.
.
Quero um código conveniente. Fácil de usar, estender, modificar e incorporar.
Quero um código conveniente. Fácil de usar, estender, modificar e incorporar.
A linha 175 foi substituída por.
Sem isso, o relatório de trabalho falha com um erro.
A linha 175 foi substituída por.
Sem isso, o relatório de operação falhará com um erro.
Sim, ocorrerá um erro de divisão por 0 se não houver nenhuma melhoria em um determinado número de épocas desde a primeira execução do loop do operador gen.
É mais simples e logicamente mais correto atribuir 1 à variável resetCounterFF imediatamente na inicialização: