Arquivo da versão MT. - página 6

 
Alexey Viktorov:

Mas de acordo com este pedaço de código

O valor retornado desta função deve ser processado de alguma forma. De que servirá retornar "menos muitos noves" se não houver reação ao mesmo no resto do código?

O retorno menos grande valor irá colocar este passe no fundo dos resultados. Se não houve nenhum teste (o teste foi interrompido, no meu caso na abertura do primeiro bar), então não há nada para calcular, não há dados para calcular. Portanto, quando o tester_stop é definido, um grande número negativo é devolvido.

Além disso, não utilizo este resultado em nenhum lugar do código, embora, talvez, possa ser utilizado, mas como - no momento não sei e não preciso dele.

 
Сергей Таболин:

O retorno menos um grande valor colocará este passe na parte inferior dos resultados. Se não houve teste em princípio (o teste foi interrompido, no meu caso na abertura do primeiro bar), então não há nada para calcular, não há dados para calcular. Portanto, quando o tester_stop é definido, um grande número negativo é devolvido.

Além disso, eu não uso este resultado em nenhum lugar do meu código, embora provavelmente possa ser usado, mas não sei como, e não preciso dele no momento.

Esta é uma abordagem muito ruim para resolver tarefas em geral e especialmente para resolver tarefas de programação.

Por alguma razão, não acredito em testes em geral e muito menos em otimização. É por isso que não posso lhe dar conselhos específicos sobre como organizar o algoritmo, mas vejo que seu algoritmo de seqüenciamento e processamento de resultados está quebrado.

Se antes de chamar o TesterStop() deve ser pelo menos um passe, então, por favor, forneça este passe. Qual é o seu problema? Que eu não sei e não preciso saber? Isso não está certo.

 
Сергей Таболин:

Eu entendo tudo e não preciso de muletas. E eu tive que procurar uma muleta aqui lida para o que.

É possível. Mas não me lembro de ninguém reclamando sobre isso.

Seus desejos podem ser organizados de uma maneira muito mais simples sem nenhum código inútil.

Em vez de INIT_PARAMETERS_INCORRECT return, pesar alguma variável global, digamos ExtTesterStop=true.

Coloque um cheque na primeira linha do OnTick

void OnTick()
  {
   if(ExtTesterStop)
     {
      TesterStop();
      return;
     }
...
 
Alexey Viktorov:

Esta é uma abordagem muito ruim para a solução de problemas em geral e especialmente para problemas de programação.

Por alguma razão, não acredito em testes em geral, e em otimização ainda menos. Portanto, eu não posso dar conselhos específicos sobre a organização do algoritmo, mas vejo que seu algoritmo de seqüência e processamento de resultados está quebrado.

Se tiver que haver pelo menos um passe antes de chamar o TesterStop(), forneça este passe. Qual é o seu problema? Que eu não sei e não preciso disso? Isso não está certo.

Alexey, sem ofensa, mas você falhou completamente em entender porque eu usei o TesterStop(). Além disso, você nem sequer tentou fazer isso. Como você ainda não leu o que eu usei, vou explicar brevemente.

Eu o uso para peneirar passagens inúteis de testes e acelerar a otimização. Especialmente a otimização genética. É por isso que eu não preciso nem mesmo de um passe nesta situação! Foi a substituição doINIT_PARAMETERS_INCORRECT, pois no caso de sua grande quantidade no OnInit() resultou no colapso da genética.

Acreditar ou não acreditar, usar ou não usar otimização é seu próprio negócio que não tem relação com a solução deste problema ))))

Slava:

Seus desejos podem ser arranjados muito mais facilmente sem a codificação de babados desnecessários. Você vai concordar que é o mesmo ancinho de uma maneira diferente))))

Em vez de INIT_PARAMETERS_INCORRECT return, pesar alguma variável global, digamos ExtTesterStop=true

Coloque um cheque na primeira linha do OnTick

Mas concordo que o código vai parecer um pouco mais simples!

O assunto ainda permanece o mesmo. O cancelamento do passe na fase de inicialização não acontece. O mesmo código estará em OnInit() e OnTick(). O que ganhamos com isso?

TesterStop() ainda vai franzir o sobrolho

TesterStop() called on 0% of testing interval

e, nesta versão da MT, o controle será passado para a OnTester() de qualquer forma. Você concordará que temos os mesmos problemas, mas de uma maneira diferente ))))

Seria ótimo se houvesse uma função alternativa, por exemplo, TesterStopImmediately(). Para os casos em que devemos parar imediatamente o teste passando o controle não no OnTester() mas diretamente no OnDeinit(const int razão)...

Mas provavelmente não o veremos em nossa vida...

 
Сергей Таболин:

Alexey, sem ofensa, mas você falhou completamente em entender para que eu usei o TesterStop(). Além disso, você nem sequer tentou fazer isso. Como você ainda não leu o que eu usei, vou explicar brevemente.

Eu o uso para peneirar passagens inúteis de testes e acelerar a otimização. Especialmente a otimização genética. É por isso que eu não preciso nem mesmo de um passe nesta situação! Foi a substituição doINIT_PARAMETERS_INCORRECT, pois no caso de sua grande quantidade no OnInit() resultou no colapso da genética.

Acreditar ou não acreditar, usar ou não usar otimização - este é o seu próprio negócio, que não tem nenhuma relação com este problema))))

Eu não me expressei com precisão e vocês me entenderam completamente mal. Mas isso não importa.

 
Alexey Viktorov:

Eu não me expressei com precisão e vocês me entenderam mal de todo. Mas isso não importa.

Importante. Acredito que todos os problemas em geral são o resultado de mal-entendidos. Mas o homem nasceu com a língua para poder falar, para negociar )))) Naturalmente, todos acham que estão certos, mas a teimosia nesta questão é um sinal de ... estupidez. Então, por favor, explique o que você quer dizer. Pessoalmente, estou pronto para aprender))))

 
Сергей Таболин:

Importante. Acredito que todos os problemas em geral são o resultado de mal-entendidos. Mas o homem nasceu com a língua para poder falar, negociar )))) Naturalmente, todos acham que estão certos, mas a teimosia nesta questão é um sinal de ... estupidez. Então, por favor, explique o que você quer dizer. Pessoalmente, estou pronto para aprender ))))

O que podemos aprender de uma pessoa que mostra sinais de inépcia? Ou você está falando de si mesmo? É você que é teimoso e não quer fazer o código mínimo para tentar entender o que você quer. Bem, eu já disse que não estou envolvido em otimização e, portanto, nunca usei eventos relacionados a testes. Minhas recomendações visavam apenas um campo mais restrito. Slava repetiu minha recomendação. Talvez você a tenha usado de uma maneira diferente, já que não consegue o que espera. É apenas um palpite da falta de informação sobre o assunto.

 
Alexey Viktorov:

O que podemos aprender de uma pessoa com sinais de ser pouco inteligente? Ou você está falando de si mesmo? Você é quem está empatando e não vai fazer o código mínimo para tentar descobrir o que você quer. Bem, eu já disse que não estou envolvido em otimização, portanto nunca usei eventos relacionados com o testador. Minhas recomendações visavam apenas um campo mais restrito. Slava repetiu minha recomendação. Talvez você a tenha usado de uma maneira diferente, já que não consegue o que espera. É apenas um palpite da falta de informações sobre o assunto.

Você ao menos lê o que eu lhe escrevo?

"Alexey, sem ofensa, mas você falhou completamente em entender para que eu usei o TesterStop(). Além disso, você nem sequer tentou fazer isso. Como você ainda não leu o que eu usei, vou explicar brevemente.

Eu o uso para peneirar passagens inúteis de testes eacelerar a otimização. Especialmente a otimização genética. É por isso que eu não preciso nem mesmo de um passe nesta situação! Foi a substituição do INIT_PARAMETERS_INCORRECT, porque quando sua quantidade no OnInit() era grande, levou ao colapso da genética..."

Que parte disso você não entendeu?

P.S. A propósito, ao contrário de você, Slava sabe exatamente do que estamos falando. ))
 
Сергей Таболин:

Você ao menos lê o que eu escrevo para você?

"Alexey, sem ofensa, mas você falhou completamente em entender para que eu usei o TesterStop(). Além disso, você nem sequer tentou fazer isso. Como você ainda não leu o que eu usei, vou explicar brevemente.

Eu o uso para peneirar passagens inúteis de testes eacelerar a otimização. Especialmente a otimização genética. É por isso que eu não preciso nem mesmo de um passe nesta situação! Foi a substituição do INIT_PARAMETERS_INCORRECT, porque quando sua quantidade no OnInit() era grande, levou ao colapso da genética..."

Que parte disto não está claro para você?

P.S. A propósito, ao contrário de você, Slava sabe exatamente do que estamos falando. ))

Sergei, TesterStop() é usado para parar prematuramente os testes. O que deve ser o resultado neste caso é o negócio do programador. Eu não preciso saber o que você deve conseguir, o principal é parar de testar. Tudo o resto está estabelecido no algoritmo de computação.

Se você não estiver satisfeito com alguma variante intermediária dos valores obtidos, você pára de testar e retorna um resultado inventado do fundo. Se você não puder fazer isso, significa que seu algoritmo não está construído corretamente em algum lugar. Afinal de contas, como parar de testar você é dito mais de uma vez.

 
Alexey Viktorov:

Sergei, TesterStop() é usado para parar prematuramente os testes. E o que você deve obter neste caso é um negócio de programador. Eu não preciso saber o que você deve obter, o principal é parar de testar. Tudo o resto está estabelecido no algoritmo de cálculo.

Se você não estiver satisfeito com alguma variante intermediária dos valores obtidos, você pára de testar e retorna um resultado inventado. Se você não puder fazer isso, significa que você construiu o algoritmo errado em algum lugar. Afinal de contas, como parar de testar você é dito mais de uma vez.

Se eu lhe oferecer para comprar um balde de pregos, é pouco provável que você não esteja absolutamente interessado em saber de onde vou tirá-lo e quanto custa. Portanto, sua resposta pode ser qualquer coisa: não, eu não quero, eu não quero, bem, etc... O principal é que você e eu seremos compreensíveis. Minha resposta em tal caso "de um resultado inventado por uma tocha", o que é absolutamente claro para mim pessoalmente.

O que ficou claro no decorrer deste inquérito é que TesterStop() e ExpertRemove() passaram o controle imediatamente para OnDeinit() antes da nova construção, enquanto na nova construção, eles passam o controle imediatamente para OnTester() (se houver). E se no primeiro caso o resultado do teste foi um NULL, agora onTester() precisamos verificar se a saída estava disponível nesses eventos (é claro que essa verificação deve ser organizada) e fazer nossa própria saída. E que resultado especificar neste caso (0 ou -9999999999) - é uma questão de preferências.

Razão: