Archives de la version MT. - page 6

 
Alexey Viktorov:

Mais selon ce morceau de code

La valeur renvoyée par cette fonction doit être traitée d'une manière ou d'une autre. À quoi cela sert-il de renvoyer "moins beaucoup de neuf" s'il n'y a aucune réaction à cela dans le reste du code ?

Le retour d'une valeur moins grande placera ce passage en bas des résultats. S'il n'y a pas eu de test du tout (le test a été arrêté, dans mon cas à l'ouverture de la première barre), alors il n'y a rien à calculer, il n'y a pas de données à calculer. Par conséquent, lorsque tester_stop est activé, un grand nombre négatif est renvoyé.

En outre, je n'utilise ce résultat nulle part dans le code, bien que, peut-être, il puisse être utilisé, mais comment - pour le moment je ne le sais pas et je n'en ai pas besoin.

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

Le retour moins une grande valeur placera ce passage en bas des résultats. S'il n'y a pas eu de test en principe (le test a été arrêté, dans mon cas à l'ouverture de la première barre), alors il n'y a rien à calculer, il n'y a pas de données à calculer. Par conséquent, lorsque tester_stop est activé, un grand nombre négatif est renvoyé.

En outre, je n'utilise ce résultat nulle part dans mon code, bien qu'il puisse probablement être utilisé mais je ne sais pas comment, et je n'en ai pas besoin pour le moment.

Il s'agit d'une très mauvaise approche de la résolution de tâches en général et plus particulièrement de la résolution de tâches de programmation.

Pour une raison quelconque, je ne crois pas aux tests en général et encore moins à l'optimisation. C'est pourquoi je ne peux pas vous donner de conseils spécifiques sur la façon d'organiser l'algorithme, mais je vois que votre algorithme de séquençage et de traitement des résultats est cassé.

Si avant d'appeler TesterStop() doit être au moins une passe, alors s'il vous plaît fournir cette une passe. Quel est votre problème ? Que je ne sais pas et que je n'ai pas besoin de savoir ? Ce n'est pas correct.

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

Je comprends tout et je n'ai pas besoin de béquilles. Et j'ai dû chercher une béquille ici, lire pour quoi faire.

C'est possible. Mais je ne me souviens pas que quelqu'un s'en soit plaint.

Vos souhaits peuvent être organisés de manière beaucoup plus simple, sans code supplémentaire inutile.

Au lieu du retour INIT_PARAMETERS_INCORRECT, pesez une certaine variable globale, disons ExtTesterStop=true.

Mettre la vérification sur la première ligne de OnTick

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

Il s'agit d'une très mauvaise approche de la résolution des problèmes en général et plus particulièrement des problèmes de programmation.

Pour une raison quelconque, je ne crois pas aux tests en général, et encore moins à l'optimisation. Je ne peux donc pas donner de conseils spécifiques sur l'organisation de l'algorithme, mais je vois que votre algorithme de séquence et de traitement des résultats est cassé.

S'il doit y avoir au moins une passe avant d'appeler TesterStop(), fournissez cette passe. Quel est votre problème ? Que je ne sais pas et que je n'en ai pas besoin ? Ce n'est pas correct.

Alexey, ne le prenez pas mal, mais vous n'avez absolument pas compris pourquoi j'ai utilisé TesterStop(). D'ailleurs, vous n'avez même pas essayé de le faire. Puisque vous n'avez pas lu ce à quoi je l'ai utilisé, je vais vous expliquer brièvement.

Je l'utilise pour éliminer les passages inutiles des tests et accélérer l'optimisation. En particulier l'optimisation génétique. C'est pourquoi je n'ai pas besoin d'une seule passe dans cette situation ! Il s'agissait du remplacement deINIT_PARAMETERS_INCORRECT, car en cas de leur grande quantité dans OnInit() cela entraînait le crash de la génétique.

Croire ou ne pas croire, utiliser ou ne pas utiliser l'optimisation est votre propre affaire qui n'a aucun rapport avec la solution de ce problème )))).

Slava:

Vos souhaits peuvent être organisés beaucoup plus facilement sans coder les fioritures inutiles. Vous conviendrez que c'est le même râteau, mais d'une manière différente))).

Au lieu du retour de INIT_PARAMETERS_INCORRECT, peser une certaine variable globale, disons ExtTesterStop=true

Mettre la vérification sur la première ligne de OnTick

Je suis d'accord que le code sera un peu plus simple, cependant !

La question reste toujours la même. L'annulation du passage au stade de l'initialisation n'a pas lieu. Le même code sera dans OnInit() et OnTick(). Que gagnons-nous ?

TesterStop() continuera à froncer les sourcils.

TesterStop() called on 0% of testing interval

et, dans cette version de MT, le contrôle sera de toute façon passé à OnTester(). Vous conviendrez que nous avons les mêmes problèmes, mais d'une manière différente. ))))

Ce serait formidable s'il existait une fonction alternative, par exemple, TesterStopImmediately(). Pour les cas où nous devons arrêter le test immédiatement en passant le contrôle non pas dans OnTester() mais directement dans OnDeinit(const int reason)...

Mais nous ne le verrons probablement pas de notre vivant...

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

Alexey, ne le prenez pas mal, mais vous n'avez absolument pas compris à quoi servait la fonction TesterStop(). D'ailleurs, vous n'avez même pas essayé de le faire. Puisque vous n'avez pas lu ce à quoi je l'ai utilisé, je vais vous expliquer brièvement.

Je l'utilise pour éliminer les passages inutiles des tests et accélérer l'optimisation. En particulier l'optimisation génétique. C'est pourquoi je n'ai pas besoin d'une seule passe dans cette situation ! Il s'agissait du remplacement deINIT_PARAMETERS_INCORRECT, car en cas de leur grande quantité dans OnInit() cela entraînait le crash de la génétique.

Croire ou ne pas croire, utiliser ou ne pas utiliser l'optimisation - c'est votre propre affaire, qui n'a aucun rapport avec ce problème))).

Je ne me suis pas exprimé correctement et vous m'avez complètement mal compris. Mais cela n'a pas d'importance.

 
Alexey Viktorov:

Je ne me suis pas exprimé précisément et vous m'avez mal compris. Mais cela n'a pas d'importance.

Important. Je crois que tous les problèmes en général sont le résultat de malentendus. Mais l'homme est né avec la langue pour pouvoir parler, négocier )))). Naturellement, chacun pense avoir raison, mais l'entêtement sur cette question est un signe de ... la stupidité. Alors, s'il vous plaît, expliquez ce que vous voulez dire. Personnellement, je suis prêt à apprendre)))

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

Important. Je crois que tous les problèmes en général sont le résultat de malentendus. Mais l'homme est né avec la langue pour pouvoir parler, négocier )))). Naturellement, chacun pense avoir raison, mais l'entêtement sur cette question est un signe de ... la stupidité. Alors, s'il vous plaît, expliquez ce que vous voulez dire. Personnellement, je suis prêt à apprendre ))))

Que pouvons-nous apprendre d'une personne qui montre des signes d'ineptie ? Ou parlez-vous de vous-même ? C'est vous qui êtes têtu et ne voulez pas faire le minimum de code pour essayer de comprendre ce que vous voulez. Eh bien, j'ai déjà dit que je ne suis pas impliqué dans l'optimisation et que je n'ai donc jamais utilisé les événements liés aux testeurs. Mes recommandations ne visaient qu'un domaine plus restreint. Slava a répété ma recommandation. Peut-être l'avez-vous utilisé d'une manière différente puisque vous n'obtenez pas ce que vous attendez. Ce n'est qu'une supposition par manque d'informations sur le sujet.

 
Alexey Viktorov:

Que pouvons-nous apprendre d'une personne présentant des signes d'inintelligence ? Ou parlez-vous de vous-même ? C'est vous qui tergiversez et ne faites pas le code minimum pour essayer de comprendre ce que vous voulez. Eh bien, j'ai déjà dit que je ne suis pas engagé dans l'optimisation, donc je n'ai jamais utilisé les événements relatifs au testeur. Mes recommandations ne visaient qu'un domaine plus restreint. Slava a répété ma recommandation. Peut-être l'avez-vous utilisé d'une manière différente puisque vous n'obtenez pas ce que vous attendez. Ce n'est qu'une supposition par manque d'informations sur le sujet.

Est-ce que tu lis au moins ce que je t'écris ?

"Alexey, ne le prenez pas mal, mais vous n'avez absolument pas compris à quoi servait TesterStop(). D'ailleurs, vous n'avez même pas essayé de le faire. Puisque vous n'avez pas lu ce à quoi je l'ai utilisé, je vais vous expliquer brièvement.

Je l'utilise pour éliminer les passages inutiles des tests etaccélérer l'optimisation. En particulier l'optimisation génétique. C'est pourquoi je n'ai pas besoin d'une seule passe dans cette situation ! Il s'agissait du remplacement de INIT_PARAMETERS_INCORRECT, car lorsque leur quantité dans OnInit() était importante, cela entraînait le plantage de la génétique..."

Quelle partie de tout ça vous ne comprenez pas ?

P.S. Au fait, contrairement à vous, Slava sait exactement de quoi nous parlons. ))
 
Сергей Таболин:

Est-ce que tu lis au moins ce que je t'écris ?

"Alexey, ne le prenez pas mal, mais vous n'avez absolument pas compris à quoi servait TesterStop(). D'ailleurs, vous n'avez même pas essayé de le faire. Puisque vous n'avez pas lu ce à quoi je l'ai utilisé, je vais vous expliquer brièvement.

Je l'utilise pour éliminer les passages inutiles des tests etaccélérer l'optimisation. En particulier l'optimisation génétique. C'est pourquoi je n'ai pas besoin d'une seule passe dans cette situation ! C'était le remplacement de INIT_PARAMETERS_INCORRECT, car si leur quantité dans OnInit() était grande, cela menait au crash de la génétique..."

Quelle partie de ce texte n'est pas claire pour vous ?

P.S. Au fait, contrairement à vous, Slava sait exactement de quoi nous parlons. ))

Sergei, TesterStop() est utilisé pour arrêter prématurément les tests. Ce que devrait être le résultat dans ce cas est l'affaire du programmeur. Je n'ai pas besoin de savoir ce que vous devez obtenir, l'essentiel est d'arrêter les tests. Tout le reste est prévu dans l'algorithme de calcul.

Si vous n'êtes pas satisfait d'une variante intermédiaire des valeurs obtenues, vous arrêtez le test et renvoyez un résultat inventé en arrière-plan. Si vous ne pouvez pas le faire, cela signifie que votre algorithme n'est pas construit correctement quelque part. Après tout, comment arrêter le dépistage, on vous le dit plus d'une fois.

 
Alexey Viktorov:

Sergei, TesterStop() est utilisé pour arrêter prématurément les tests. Et ce que vous devez obtenir dans ce cas, c'est l'affaire d'un programmeur. Je n'ai pas besoin de savoir ce que vous devez obtenir, l'essentiel est d'arrêter les tests. Tout le reste est prévu dans l'algorithme de calcul.

Si vous n'êtes pas satisfait d'une variante intermédiaire des valeurs obtenues, vous arrêtez le test et renvoyez un résultat inventé. Si vous ne pouvez pas le faire, cela signifie que vous avez construit un mauvais algorithme quelque part. Après tout, comment arrêter le dépistage, on vous le dit plus d'une fois.

Si je vous propose d'acheter un seau de clous, il est peu probable que vous ne soyez absolument pas intéressé par l'endroit où je vais le trouver et par son prix. Votre réponse peut donc être n'importe quoi : non, je ne veux pas, je n'en veux pas, enfin, etc. La principale chose que vous et moi allons comprendre. Ma réponse dans un tel cas est "j'ai inventé un résultat à partir d'une torche", ce que personnellement je comprends parfaitement.

Ce qui est devenu clair au cours de cette enquête, c'est que TesterStop() et ExpertRemove() passaient immédiatement le contrôle à OnDeinit() avant la nouvelle construction, alors que dans la nouvelle construction, ils passent immédiatement le contrôle à OnTester() (s'il existe). Et si dans le premier cas le résultat du test était un NULL, maintenant onTester() nous devons vérifier si la sortie était disponible à ces événements (bien sûr cette vérification doit être organisée) et faire notre propre sortie. Et quel résultat spécifier dans ce cas (0 ou -99999999) - c'est une question de préférences.

Raison: