Championnat d'optimisation des algorithmes. - page 117

 
Le premier appel au FF doit être constitué d'un tableau formé par le RNG normal du MT avec une distribution uniforme ? Vous ne pouvez pas utiliser votre propre RMS avec une distribution normale ? Qu'il en soit ainsi, je n'insiste pas. A propos des critères d'évaluation. Vous suggérez de compter le temps machine d'exécution du code. Mais, je suis désolé, c'est une autre chose. C'est une chose d'affiner le code pour une recherche efficace des extrema et une autre de prendre en compte le temps machine nécessaire à l'exécution des composants du programme qui, de plus, dépend de l'état du matériel à ce moment-là. Il serait plus approprié de compter le nombre d'appels à ftp. Mais ici, je n'insiste pas. Je ne veux pas m'embourber à nouveau dans des questions de procédure, car cela n'aurait aucune importance pour mon algorithme. J'ai une question maintenant. La règle selon laquelle le nombre d'appels au FF est fixe et identique pour tous est-elle pertinente ?
 

Yuri Evseenkov:
1. Первое обращение к фф должно состоять иэ массива сформированного штатным ГСЧ МТ с равномерным распределением? Свой ГСЧ с нормальным распределением использовать нельзя?

2. A propos des critères d'évaluation. Vous proposez de compter le temps machine d'exécution du code.

1. En ce qui concerne la première initialisation, je n'insiste pas, je recommande simplement - pour un FF inconnu (et c'est le FF inconnu qui sera dans le championnat) tous les paramètres initiaux sont également bons, parce que le FF est inconnu. C'est pourquoi il est préférable d'utiliser un MSN (quel qu'il soit, mais de préférence avec le plus grand nombre possible de variations de chiffres). D'autant plus que pour obtenir des résultats statistiquement fiables, il faut au moins 20 exécutions de l'algorithme, et il est tout simplement peu pratique d'initialiser l'algorithme avec les mêmes nombres.

2. Déjà décidé, il y a 2 critères d'évaluation, la précision et le nombre de passages de FF. Mais le lien que j'ai donné un exemple de calcul, c'était il y a longtemps, là au lieu du nombre de courses c'est le temps. C'est pourquoi je l'ai précisé dans mon post : la précision et le nombre de lancements de FF sont deux critères d'évaluation, une précision 3 fois supérieure étant préférable.

Selon ce calcul des places dans le tableau, mon algorithme prendrait la première place en fonction des résultats de votre tâche. Faisons le calcul : la précision est plus élevée, donc le critère de précision est de 3, et le nombre d'exécutions de FF est plus élevé, donc 0. Le total est de 3+0=3, et votre algorithme obtiendra 0+1=1, c'est-à-dire moins de points. Mais cela ne signifie pas que je gagne votre problème, car plusieurs conditions ne sont pas remplies. Et si le FF maximum est connu à l'avance, le tableau est calculé un peu différemment, la première place "virtuelle" est mise à la valeur maximum, et nos places sont déjà calculées sur cette base (le nombre de points obtenus sera différent).

 
Yuri Evseenkov:
La règle selon laquelle le nombre d'accès est fixe et identique pour tous est-elle valable ?

Non, il n'y a jamais eu une telle règle. Il n'y a qu'un maximum autorisé. Moins il y a d'occurrences, mieux c'est, ce qui est le deuxième critère le plus important après la précision.

Personnellement, je ne vais pas m'en préoccuper, je vais utiliser toute la limite d'accès, en d'autres termes - je mise sur la précision.

 
Alexander Laur:

En bref, c'est un non-sens, pas un championnat.

Les critères pour déterminer le gagnant sont inventés au fur et à mesure.

En 15 pages, nous devrons introduire un paramètre pour estimer le gagnant.

C'est la précipitation, ce n'est pas bien réfléchi.

Et la réalité est plus compliquée que les rêves. :)

C'est votre pensée du jour ? Ou la pensée de l'année ?

Les critères ont été approuvés il y a une douzaine de pages, mais les principes et formules de calcul encore plus tôt. Il y a beaucoup de floodbusters, ce qui complique la compréhension du matériel par le public - maintenant vous en avez le mérite, félicitez vous.

On m'a demandé et j'ai répondu. S'ils me le demandent demain, je leur répondrai à nouveau. Mais demain, Vassia Vyazaperelezayko viendra et fera à nouveau cette remarque profonde : "Le championnat est merdique, les règles sont inventées à la volée !" ...........

 
Alexander Laur:
Répondez ensuite à la question suivante : pourquoi la précision est-elle 3 fois plus précieuse que le nombre d'appels FF !

J'en ai décidé ainsi, l'organisateur parce que. Il y a aussi d'autres raisons.

Avez-vous déjà écrit votre propre algorithme d'optimisation ? Pouvez-vous imaginer ce que c'est que de trouver le bon 1 parmi 2E16 et d'utiliser seulement 50 essais ? C'est plus difficile que de trouver une aiguille parmi des milliards de bottes de foin. Et ce, uniquement s'il n'y a qu'un seul paramètre, et qu'en est-il s'il y en a 500 ? 1000 ? 1000000 ?

 
Alexander Laur:
Ce sont les "autres" raisons qui sont intéressantes, c'est-à-dire les arguments en faveur du numéro 3 plutôt que du numéro 10, par exemple.
La relation empirique. Je suis prêt à attendre 3 minutes et obtenir un résultat 3 fois plus précis, plutôt qu'une minute et un résultat bien pire. D'autres ratios ne sont pas pratiques.
 
Alexander Laur:
Et vous considérez cela comme un argument digne de déterminer un vainqueur ?

Et vous pensez que je ne le fais pas ? - Tu ne devrais pas penser ça.

Répondez à ma question :

Andrey Dik:

Avez-vous déjà écrit votre propre algorithme d'optimisation ? Pouvez-vous imaginer, par exemple, ce que cela signifie de trouver la bonne parmi 2E16 valeurs et de n'utiliser que 50 essais ? C'est plus difficile que de trouver une aiguille parmi des milliards de bottes de foin. Et ce, uniquement s'il n'y a qu'un seul paramètre, et qu'en est-il s'il y en a 500 ? 1000 ? 1000000 ?

 
Alexander Laur:
Je ne compte rien, je demande et j'attends une réponse. Pourquoi devrais-je spéculer quand je peux demander et obtenir une réponse de la source.

C'est la réponse. Une relation empirique. Vous ne trouverez nulle part une réponse scientifiquement fondée.

J'ai essayé de trouver la dépendance de la précision de la solution sur le nombre d'occurrences à une probabilité d'occurrence donnée avec Matemat, nous n'avons pas réussi. Cela a peut-être quelque chose à voir avec la règle des 3 sigmas, mais pas nécessairement.

 
Alexander Laur:

...une question simple : un algorithme qui ne peut pas trouver un extremum avec une erreur donnée, même si ce n'est pas exactement, devrait-il être autorisé à participer au championnat ?

Alors je m'assois et je réfléchis... Répondez directement ou non. J'ai décidé - je dois répondre !)

Pourquoi vous êtes-vous interrogé sur la signification du critère "précision" dépassant le critère "manipulation" d'un facteur 3 ? S'il y a un critère de "précision", vous devez supposer que les participants n'auront pas une précision de 100%... C'est à cela que sert le critère de "précision", pour classer par précision. Par conséquent, nous concluons - peut !, mais ne doit pas (should not), parce que pourquoi quelqu'un ferait la concurrence si son algorithme donne toujours une réponse précise à 100%, et cela signifie simultanément que pour un nombre acceptable d'appels FF, puisque la réponse de l'algorithme une fois reçue. Par conséquent, sans ambiguïté, il ne devrait pas le faire ! - De plus, cet algorithme doit être caché et ne doit être montré à personne.

Et oui... Il y a un point très important. Si l'algorithme ne "sait" pas où se trouve le maximum absolu - et il ne le sait pas, sinon pourquoi le chercherait-il ? C'est nous, "à l'extérieur", qui pouvons seulement juger du degré de précision de l'algorithme en menant des expériences sur celui-ci, mais nous ne pouvons pas définir le paramètre "rechercher avec cette précision", pour des raisons qui, je l'espère, sont déjà claires.

 
Alexander Laur:

La réponse est simple :

1. Si un algorithme NE PEUT PAS trouver un extremum avec une précision donnée, il n'a pas sa place dans le championnat ;

2. Compte tenu du point 1, seuls les algorithmes qui RECHERCHENT un extremum avec une précision donnée participeront à la détermination du gagnant ;

3. aucun classement en termes de précision. La précision est donnée par une fourchette ;

4. déterminer un gagnant en fonction du nombre de fois où le FF est invoqué.

Je vais partir maintenant, il est 2 heures du matin.

Compris.

Mais tu ne peux pas le faire de cette façon.

Tout d'abord : il n'y a pas de raison objective pour fixer la précision. Pour quelqu'un, un écart de 1% ne lui conviendra pas, et pour quelqu'un d'autre, 20% sera parfait. Cela dépend largement du type de tâche et du type d'algorithme. Fixer une "précision de réussite" à un championnat reviendrait à éliminer les différentes solutions algorithmiques intéressantes.

Deuxièmement, la précision dépend des accès au FF et de manière non linéaire. Pour différents types d'algorithmes, cette dépendance sera différente et vous ne pouvez pas simplement dire "cet algorithme est bon, et celui-ci est mauvais" - c'est pourquoi nous utilisons deux critères pour évaluer les algorithmes aussi objectivement que possible. Il y avait un troisième critère - le temps d'exécution de l'algorithme (non FF) - mais il est très subjectif, car les algorithmes OCL qui l'utilisent vont voler sur certains ordinateurs et ralentir sur d'autres. Il ne reste donc que deux critères : la précision et les références au FF.